Apalis iMX6 ath10k fimware not loading

I have rebuilt the kernel on my Apalis iMX6 / Ixora adding the ath10k driver. When I boot, with a Silex SX-PCAEC wifi card I see the firmware is not loading.

ath10k: Could not fetch firmware file ‘firmware-2.bin’: -2

This is because I didn’t load the firmware yet (and I’m not sure how to). Is it simply a matter of copying the bin file to:

/lib/firmware/ath10k/QCA988X/hw2.0/firmware-2.bin on the target?

Per en:users:drivers:ath10k:firmware [Linux Wireless]

The latest firmware appears to be firmware-5.bin.

Are there some explicit instructions for installing and updating the firmware for a non expert?

Attached is my boot message if it’s of any help.

Thanks.

link text

Yes, you can quite simply copy the firmware binary file to the proper firmware location (/lib/firmware/ath10k/...) on the rootfs. As for the firmware version, it’d be best to use the version of firmware requested by the driver (‘-2’). Although the newer firmware should work with the device, it may not be backward compatible with the older driver/kernel.

The firmware-2.bin is available from here: ath10k-firmware/QCA988X/hw2.0/10.1 at master · kvalo/ath10k-firmware · GitHub

Download to target:

wget https://github.com/kvalo/ath10k-firmware/blob/master/QCA988X/hw2.0/10.1/firmware-2.bin_10.1.467.3-1?raw=true

Follow the instructions to copy it to the proper firmware location [note: the firmware when downloaded with the above command may have the filename firmware-2.bin_10.1.467.3-1?raw=true]:

cp firmware-2.bin_10.1.467.3-1 /lib/firmware/ath10k/QCA988X/hw2.0/firmware-2.bin

Thanks Brandon, this removed the “ath10k: Could not fetch firmware file ‘firmware-2.bin’: -2”.

root@apalis-imx6:/lib/firmware/ath10k/QCA988X/hw2.0# ls
firmware-2.bin

But there are still some ath10k and ath10k_pci errors. And i still get the black screen for the desktop. See attached: link text

You may also require the board.bin file as provided in the kernel.org firmware repo.

You might alternatively try using the Candela firmware.

And finally the ideal approach is probably to backport a newer driver (and use along with a newer firmware). Unfortunately, this is a bit more work. And we’ll eventually release a 4.1 kernel for iMX6 which will anyway have a newer driver/firmware.

Adding board.bin seems to help but there are still errors I can’t seem to trace down. They are all at the very end, see attached.
link text

If I go the backports path do i need to put the kernel back to stock?

@Klonk, to use a backported kernel module, you’d probably want to go back to the original kernel. I don’t think it’s necessary, but you’d otherwise need to ensure the old module isn’t loaded.

I recommend backporting primarily because we don’t know what state this driver is in - generally a driver matures in later kernels, so backporting it would help ensure it’s maturity. However, it is a bit more work to go this route. Notice that the backport instructions I linked to are for native compilation. For cross-compiling, be sure to setup the cross environment to invoke the cross toolchain. You may also refer to our developer article about backporting.

OK thanks, I’ll try this path on another board. I’ll let you know how it goes.