Compact Flash - howto?

Suggests that there are still missing kernel modules -- that is usually a sign that a function call can't be found by the kernel. Given the age and "popularity" of the board, it wouldn't surprise me if the dependencies haven't been updated.

Edit: https://openwrt.org/packages/pkgdata/kmod-ata-core ??

It says:

root@LEDE:~# opkg install kmod-ata-core
Package kmod-ata-core (4.4.92-1) installed in root is up to date.

hummm...

./build_dir/target-mips_24kc_musl/linux-ar71xx_generic/linux-4.9.86/drivers/ata/libata-scsi.c:int ata_scsi_ioctl(struct scsi_device *scsidev, int cmd, void __user *arg)

(at least in my build) -- I don't know how the kernel tree gets split into OpenWRT kmod-* packages

https://openwrt.org/toh/zinwell/zw4400 appears to be completely orphaned from the ToH -- might want to update the info on it and/or get someone to link it in.

I planned to...it was never on the old or new ToH link, yet had a device page.

Are you saying...between: drivers and modules...

There's still something missing???

"Unknown symbol" tells me that the CF kernel module is expecting some other kernel module to provide those functions. So, yes, my guess is that you're still missing one or more kernel modules.

1 Like

Thanks. I'll look over the developer guide.

So I installed other IXP425 kmods to see if they were "complete" in their dependencies:

After installing kmod-ixp4xx-beeper:

Sat Mar 17 23:00:32 2018 kern.warn kernel: [40849.304822] ixp4xx_beeper: Unknown symbol input_allocate_device (err 0)
Sat Mar 17 23:00:32 2018 kern.warn kernel: [40849.362475] ixp4xx_beeper: Unknown symbol input_unregister_device (err 0)
Sat Mar 17 23:00:32 2018 kern.warn kernel: [40849.443384] ixp4xx_beeper: Unknown symbol input_free_device (err 0)
Sat Mar 17 23:00:32 2018 kern.warn kernel: [40849.518255] ixp4xx_beeper: Unknown symbol input_register_device (err 0)

So...

  • I rebooted the device
  • Removed the module
  • I reinstalled kmod-ata-ixp4xx-cf

Sun Mar 18 04:45:45 2018 daemon.err insmod: module is already loaded - pata_ixp4xx_cf

So...the card should be at /dev/sdX, correct?

It appears that it was kmod-ata-core had not loaded. When rebooting and doing lsmod, I see this:

root@LEDE:~# lsmod 
aead                    2784  2 ixp4xx_crypto,authenc
ath                    15648  1 ath5k
ath5k                 169704  0 
authenc                 2848  1 ixp4xx_crypto
cfg80211              212896  3 ath5k,ath,mac80211
compat                  8712  3 ath5k,mac80211,cfg80211
crc_ccitt                960  1 ppp_async
crc16                    960  0 
crc32c_generic           992  0 
crypto_hash             8224  3 authenc,crypto_null,crc32c_generic
crypto_null             1992  2 authenc,aead
cryptomgr               1664  0 
des_generic            16224  1 ixp4xx_crypto
input_core             20900  1 ixp4xx_beeper
ip_tables               8676  3 iptable_nat,iptable_mangle,iptable_filter
ip6_tables              8472  2 ip6table_mangle,ip6table_filter
ip6t_REJECT              832  2 
ip6table_filter          576  1 
ip6table_mangle          896  1 
ipt_MASQUERADE           608  1 
ipt_REJECT               800  2 
iptable_filter           640  1 
iptable_mangle           768  1 
iptable_nat              768  1 
ixp4xx_beeper           1216  0 
ixp4xx_crypto          11088  0 
**libata                113360  1 pata_ixp4xx_cf**
mac80211              366132  1 ath5k
nf_conntrack           47884  9 nf_nat_ipv4,nf_conntrack_ipv6,nf_conntrack_ipv4,xt_state,xt_conntrack,xt_CT,nf_nat_masquerade_ipv4,nf_nat,nf_conntrack_rtcache
nf_conntrack_ipv4       5152 11 
nf_conntrack_ipv6       5504  6 
nf_conntrack_rtcache    2144  0 
nf_defrag_ipv4           832  1 nf_conntrack_ipv4
nf_defrag_ipv6          8752  1 nf_conntrack_ipv6
nf_log_common           2080  2 nf_log_ipv4,nf_log_ipv6
nf_log_ipv4             2848  0 
nf_log_ipv6             3072  0 
nf_nat                  8708  4 nf_nat_ipv4,xt_nat,nf_nat_redirect,nf_nat_masquerade_ipv4
nf_nat_ipv4             3330  1 iptable_nat
nf_nat_masquerade_ipv4    1220  1 ipt_MASQUERADE
nf_nat_redirect          832  1 xt_REDIRECT
nf_reject_ipv4          1696  1 ipt_REJECT
nf_reject_ipv6          2016  1 ip6t_REJECT
**pata_ixp4xx_cf          2497  0** 
ppp_async               5952  0 
ppp_generic            19308  3 pppoe,ppp_async,pppox
pppoe                   7296  0 
pppox                   1072  1 pppoe
scsi_mod               77952  2 libata,sd_mod
sd_mod                 21764  0 
slhc                    3680  1 ppp_generic
x_tables                8996 23 ipt_REJECT,ipt_MASQUERADE,xt_time,xt_tcpudp,xt_state,xt_nat,xt_multiport,xt_mark,xt_mac,xt_limit,xt_conntrack,xt_comment,xt_TCPMSS,xt_REDIRECT,xt_LOG,xt_CT,iptable_mangle,iptable_filter,ip_tables,ip6t_REJECT,ip6table_mangle,ip6table_filter,ip6_tables
xt_CT                   2400  0 
xt_LOG                   736  0 
xt_REDIRECT              672  0 
xt_TCPMSS               2464  2 
xt_comment               448129 
xt_conntrack            2176 16 
xt_limit                 960 20 
xt_mac                   608  0 
xt_mark                  640  0 
xt_multiport            1152  0 
xt_nat                  1152  0 
xt_state                 672  0 
xt_tcpudp               1632 10 
xt_time                 1568  0

Missing entries in /etc/modules-boot.d/ or /etc/modules.d/ perhaps?

When rebooting, I didn't see the log errors.

I don't have kmod-ata-core so can't poke into it, but it might be that libata is the "real" name of what it supplies.

I believe so, libata appears to be contained within kmod-ata-core.

Should the drive appear at /dev/hdX, though???

I've never booted an OpenWRT box with an ATA device. Since it is running a Linux kernel, I'd expect to see the driver load, much as I do on an x86 system (this happens to be Ubuntu booting on a relatively recent motherboard):

[    0.911961] ahci 0000:00:17.0: AHCI 0001.0301 32 slots 6 ports 6 Gbps 0x3f impl SATA mode
[    0.911964] ahci 0000:00:17.0: flags: 64bit ncq sntf pm led clo only pio slum part ems deso sadm sds apst 
[    0.972564] scsi host0: ahci
[    0.972744] scsi host1: ahci
[    0.972922] scsi host2: ahci
[    0.973081] scsi host3: ahci
[    0.973222] scsi host4: ahci
[    0.973344] scsi host5: ahci
[    0.973370] ata1: SATA max UDMA/133 abar m2048@0xf724b000 port 0xf724b100 irq 123
[    0.973374] ata2: SATA max UDMA/133 abar m2048@0xf724b000 port 0xf724b180 irq 123
[    0.973376] ata3: SATA max UDMA/133 abar m2048@0xf724b000 port 0xf724b200 irq 123
[    0.973377] ata4: SATA max UDMA/133 abar m2048@0xf724b000 port 0xf724b280 irq 123
[    0.973381] ata5: SATA max UDMA/133 abar m2048@0xf724b000 port 0xf724b300 irq 123
[    0.973383] ata6: SATA max UDMA/133 abar m2048@0xf724b000 port 0xf724b380 irq 123

When I boot up the machine:

Mon Mar 19 02:00:21 2018 kern.notice kernel: [ 55.983381] SCSI subsystem initialized
Mon Mar 19 02:00:21 2018 kern.debug kernel: [ 56.180692] libata version 3.00 loaded.

libata doesn't load unless kmod-ata-ixp4xx-cf is installed. After I install the kmod and reboot, I see the above lines.

Hmm, I'd expect the driver to then look for things to, well, drive. The dmesg excerpt above is the driver doing just that, enumerating the potential places that physical drives could be attached. Are you seeing anything like that?

Nothing at all.

The CPU isn't going to be directly connected to the ATA controller. It is likely on the PCI bus (which seems to be working if you have wifi), but could be some other sort of "southbridge" that also needs a driver. If you use tools like lspci is anything looking like an ATA controller found?

root@LEDE:~# lspci
00:0f.0 Ethernet controller: Qualcomm Atheros AR5212/5213/2414 Wireless Network Adapter (rev 01)

I thought the same thing...but I only see the WiFi card I added.

I found this on the serial port...

PCI GPIO 0.1.2.6 CF-IDE GPIO 12 configured.

Any ideas?

EDIT: I attempted to install luci-app-mmc-over-gpio:

Installing luci-app-mmc-over-gpio (git-18.098.72829-575e327-1) to root...
 Downloading http://downloads.lede-project.org/releases/17.01.4/packages/armeb_xscale/luci/luci-app-mmc-over-gpio_git-18.098.72829-575e327-1_all.ipk

And this:

Collected errors:
 * satisfy_dependencies_for: Cannot satisfy the following dependencies for luci-app-mmc-over-gpio:
 * 	kmod-mmc-over-gpio * 
 * opkg_install_cmd: Cannot install package luci-app-mmc-over-gpio.

There's no package: kmod-mmc-over-gpio ...yet there's packages that depend on it...?