Changing to non-CT drivers via OPKG

I'm trying to use a non-CT driver for my ath10k device (Archer C6). I ssh into the device and:

root@OpenWrt:~# opkg remove ath10k-firmware-qca9888-ct kmod-ath10k-ct
root@OpenWrt:~# opkg install ath10k-firmware-qca9888 kmod-ath10k
root@OpenWrt:~# reboot

On reboot, the 5Ghz card stops working. The web interface for the card looks wrong - it returns a generic message for the card type.

Trying to revert this way:

root@OpenWrt:~# opkg remove ath10k-firmware-qca9888 kmod-ath10k
root@OpenWrt:~# opkg install ath10k-firmware-qca9888-ct kmod-ath10k-ct
root@OpenWrt:~# reboot

... does nothing. Card still doesn't work, nothing changes. Running a sysupgrade flash does work and resets the card back to the ct driver and everything works OK.

dmesg leaves this message:

[   11.632844] ath10k_pci 0000:00:00.0: pci irq legacy oper_irq_mode 1 irq_mode 0 reset_mode 0
[   11.858834] ath10k_pci 0000:00:00.0: Direct firmware load for ath10k/QCA9888/hw2.0/firmware-6.bin failed with error -2
[   11.869931] ath10k_pci 0000:00:00.0: Falling back to user helper
[   12.133540] firmware ath10k!QCA9888!hw2.0!firmware-6.bin: firmware_loading_store: map pages failed
[   13.439871] ath10k_pci 0000:00:00.0: qca9888 hw2.0 target 0x01000000 chip_id 0x00000000 sub 0000:0000
[   13.449441] ath10k_pci 0000:00:00.0: kconfig debug 0 debugfs 1 tracing 0 dfs 1 testmode 1
[   13.470514] ath10k_pci 0000:00:00.0: firmware ver 10.4-3.9.0.2-00024 api 5 features no-p2p,mfp,peer-flow-ctrl,allows-mesh-bcast,no-ps crc32 98c840a5
[   13.807240] ath10k_pci 0000:00:00.0: failed to fetch board data for bus=pci,bmi-chip-id=0,bmi-board-id=20 from ath10k/QCA9888/hw2.0/board-2.bin
[   13.820901] ath10k_pci 0000:00:00.0: Direct firmware load for ath10k/QCA9888/hw2.0/board.bin failed with error -2
[   13.831546] ath10k_pci 0000:00:00.0: Falling back to user helper
[   13.924224] firmware ath10k!QCA9888!hw2.0!board.bin: firmware_loading_store: map pages failed
[   13.933241] ath10k_pci 0000:00:00.0: failed to fetch board-2.bin or board.bin from ath10k/QCA9888/hw2.0
[   13.942976] ath10k_pci 0000:00:00.0: failed to fetch board file: -11
[   13.949751] ath10k_pci 0000:00:00.0: could not probe fw (-11)

I must just be doing something wrong here, I don't think there's a bug or anything. How can I correctly install wifi drivers via opkg?

1 Like

that's what I did on my Archer C7 and it worked fine. I don't understand.

Assuming that you are using the Archer C6 v2.

You probably need to replace the board-2.bin and firmware-5.bin firmwares also:

Have a look at what I've done on my R7800 to base your tryouts on (careful, not the same drivers as you):

This looks like it would be, for you:

1 Like

Cheers @DjiPi! I'll give that a shot soon. So far I've just been leaving with the crappy 5Ghz performance :expressionless:

Interesting, that process works on the R7800. Can you post the output of find /lib/firmware -type f

On the R7800 (already using the drivers you want due to problems with the ath10k-ct drivers):

# find /lib/firmware -type f
/lib/firmware/ath10k/QCA9984/hw1.0/board-2.bin
/lib/firmware/ath10k/QCA9984/hw1.0/firmware-5.bin
/lib/firmware/ath10k/pre-cal-pci-0001:01:00.0.bin
/lib/firmware/ath10k/pre-cal-pci-0000:01:00.0.bin
/lib/firmware/regulatory.db

To see which package own them:

# opkg search /lib/firmware/ath10k/QCA9984/hw1.0/board-2.bin
ath10k-firmware-qca9984 - 20200519-1

# opkg search /lib/firmware/ath10k/QCA9984/hw1.0/firmware-5.bin
ath10k-firmware-qca9984 - 20200519-1

Still no dice. So, this is a Archer c6 v2, and from the stock install, I performed the opkg install procedure from the first post, then did @DjiPi's method to change board-2.bin and firmware-5/bin. Thank you so much for finding the exact URLs for me as well @DjiPi.

dmesg now reports:

[   12.006667] ath10k_pci 0000:00:00.0: pci irq legacy oper_irq_mode 1 irq_mode 0 reset_mode 0
[   12.239461] ath10k_pci 0000:00:00.0: Direct firmware load for ath10k/QCA9888/hw2.0/firmware-6.bin failed with error -2
[   12.250558] ath10k_pci 0000:00:00.0: Falling back to user helper
[   12.520337] firmware ath10k!QCA9888!hw2.0!firmware-6.bin: firmware_loading_store: map pages failed
[   13.909285] ath10k_pci 0000:00:00.0: qca9888 hw2.0 target 0x01000000 chip_id 0x00000000 sub 0000:0000
[   13.918860] ath10k_pci 0000:00:00.0: kconfig debug 0 debugfs 1 tracing 0 dfs 1 testmode 1
[   13.939931] ath10k_pci 0000:00:00.0: firmware ver 10.4-3.9.0.2-00086 api 5 features no-p2p,mfp,peer-flow-ctrl,allows-mesh-bcast,no-ps crc32 5e94c44d
[   14.300492] ath10k_pci 0000:00:00.0: failed to fetch board data for bus=pci,bmi-chip-id=0,bmi-board-id=20 from ath10k/QCA9888/hw2.0/board-2.bin
[   14.314174] ath10k_pci 0000:00:00.0: Direct firmware load for ath10k/QCA9888/hw2.0/board.bin failed with error -2
[   14.324822] ath10k_pci 0000:00:00.0: Falling back to user helper
[   14.422965] firmware ath10k!QCA9888!hw2.0!board.bin: firmware_loading_store: map pages failed
[   14.431979] ath10k_pci 0000:00:00.0: failed to fetch board-2.bin or board.bin from ath10k/QCA9888/hw2.0
[   14.441709] ath10k_pci 0000:00:00.0: failed to fetch board file: -11
[   14.448487] ath10k_pci 0000:00:00.0: could not probe fw (-11

After making these changes, To answer @darksky's question, lib/firmware now looks like:

/lib/firmware/ath10k/QCA9888/hw2.0/board-2.bin
/lib/firmware/ath10k/QCA9888/hw2.0/firmware-5.bin
/lib/firmware/ath10k/QCA9888/hw2.0/board-2.bin.bk
/lib/firmware/ath10k/QCA9888/hw2.0/firmware-5.bin.bak
/lib/firmware/ath10k/pre-cal-pci-0000:00:00.0.bin
/lib/firmware/regulatory.db

The .bk/bak files are obviously from the suggested mv commands.

Unfortunately, wireless remains dead with "generic" devices shown in the admin panel.

I'm confused as to why dmesg says it's looking for firmware-6 and board.bin (with no messages specifically really regarding firmware-5 and board-2).

Have you tried renaming them as:

~ # ls /lib/firmware/ath10k/QCA988X/hw2.0
board.bin       firmware-2.bin

Someone CMIIW, these are the fallback error messages that are completely normal; it tries to load a bunch of different firmware files and those that are not found produce these messages. When you replace your files, just ensure you give the same names that the ones that were already there originally and it will sweep them in it's "load scan".

I would keep the names that OpenWrt came with originally.

Sorry for bringing this back to live, but I have the same issue

@nateberkopec Did you got a solution for this problem?

No. I guess my device simply isn't supported with the non-CT drivers.

I have the same experience. Thats sad, since there is no possibility to get 5Ghz Mesh with these devices.

Hi guys. Had the same issue with my C6v2.

It seems the firmware doesn't load proberly, as the symlink to the custom board information (/lib/firmware/..../hw-2.0/board.bin) gets broken while purging the CT packages and reinstalling the proprietary ath10k packages.
My solution was as simple as creating the symlink to the board.bin manually. From a terminal, type:

ln -s /lib/firmware/ath10k/pre-cal-pci-0000:00:00.0.bin /lib/firmware/ath10k/QCA9888/hw2.0/board.bin

to check, type

ls /lib/firmware/ath10k/QCA9888/hw2.0/ -lah

the output should be something like:

root@OpenWrt:~# ls /lib/firmware/ath10k/QCA9888/hw2.0/ -lah
drwxr-xr-x 1 root root 0 Jul 30 07:58 .
drwxr-xr-x 1 root root 0 May 27 20:05 ..
-rw-r--r-- 1 root root 82.9K Apr 27 20:28 board-2.bin
lrwxrwxrwx 1 root root 49 Jul 30 07:58 board.bin -> /lib/firmware/ath10k/pre-cal-pci-0000:00:00.0.bin
-rw-r--r-- 1 root root 677.4K May 27 20:05 firmware-5.bin

reboot and everything worked fine.

greetings, Matthias

1 Like

@msomm your symlink solution works, many thanks!

Out of curiosity, although 5ghz now works in my C6v2 with the non-ct drivers, I still get failed to fetch board data in dmesg output.

[   15.485513] ath10k_pci 0000:00:00.0: enabling device (0000 -> 0002)
[   15.492360] ath10k_pci 0000:00:00.0: pci irq legacy oper_irq_mode 1 irq_mode 0 reset_mode 0
[   17.259710] ath10k_pci 0000:00:00.0: qca9888 hw2.0 target 0x01000000 chip_id 0x00000000 sub 0000:0000
[   17.269278] ath10k_pci 0000:00:00.0: kconfig debug 0 debugfs 1 tracing 0 dfs 1 testmode 0
[   17.289643] ath10k_pci 0000:00:00.0: firmware ver 10.4-3.9.0.2-00157 api 5 features no-p2p,mfp,peer-flow-ctrl,allows-mesh-bcast,no-ps,iram-recovery crc32 812c4602
[   17.657794] ath10k_pci 0000:00:00.0: failed to fetch board data for bus=pci,bmi-chip-id=0,bmi-board-id=20 from ath10k/QCA9888/hw2.0/board-2.bin
[   17.877252] ath10k_pci 0000:00:00.0: board_file api 1 bmi_id 0:20 crc32 e54e4a9a
[   19.895479] ath10k_pci 0000:00:00.0: htt-ver 2.2 wmi-op 6 htt-op 4 cal pre-cal-file max-sta 512 raw 0 hwcrypto 1

Do you also get this error?

I checked board-2.bin and firmware-5.bin, both are identical to the latest ones from https://github.com/kvalo/ath10k-firmware/tree/master/QCA9888/hw2.0 .

@chatziko : Glad to help. Took me some to figure that out, so I'm happy to save you some time in troubleshooting :slight_smile:

I also experience the same error in my setup, but -to be honest- I didn't care as wifi 5 works fine and stable. Afair the board-x.bin files that tell the driver which board id has which specific wiring between the micorcontroller and the wifi chip. So, as the C6v2 is not part of the driver-provided "collection" of board files in board-2.bin, the error may result from that. However. as long as the board.bin symlink is loaded afterwards, everything should be fine as it contains the C6v2-specific information for the driver.

If it ain't broken, don't fix it. :slight_smile:

Greetings, Matthias

1 Like