WIFI Module Problems Apalis - I-MX 6

I am running a custom board with a Apalis I-MX 6 module running Torizoncore. I am trying to get the wlan0 to appear in the ifconfig (and eventually connect to my network). I am encountering an issue with the wifi module’s firmware not booting. From the journalctl -b output I have found the following errors:

usb 1-1.2: Direct firmware load for mrvl/usbusb8997_combo_v4.bin failed with error -2
Failed to get firmware mrvl/usbusb8997_combo_v4.bin
usbcore: registered new interface driver mwifiex_usb

I checked the /lib/firmware/mrvl folder and found that the bin file is not there and instead I obtain the following:

ls /lib/firmware/mrvl/
sd8887_uapsta.bin sd8997_uapsta.bin sdsd8997_combo_v4.bin

Checking my own linux system running on my computer that runs the same wifi module (ST60-SIPT Laird Connectivity Inc. | RF and Wireless | DigiKey) and I found the usbusb8997 bin file. I am attempting to copy the file into the /lib/firmware/mrvl folder but I keep getting the flagged for it being a read-only file system:

cannot create regular file ‘/lib/firmware/mrvl/usbusb8997_combo_v4.bin’: Read-only file system

I have tried changing the permissions using chmod but nothing has worked. Is there anyway I can copy this binary file to the firmware folder at all? This module will not startup with this firmware.

Thanks

Hi @DannyS ,

Welcome to our community! Feel free to explore it.

In TorizonCore most of the filesystem directories, including /lib/, are mounted as read-only by design as to avoid data corruption on the module. However, some directories like /etc, /home and /var are mounted as read-write.

In your case I think it will be easier if you put your firmware in one of the read-write directories and tell the kernel to search for firmwares in a custom path, as described here: Firmware search paths — The Linux Kernel documentation.

To apply the kernel parameter described in the link above you will have to create a custom TorizonCore image that includes it during boot-time. This can be done using TorizonCore Builder, by following Approach 1 from this article: Customizing Kernel Arguments in Torizon | Toradex Developer Center. Just replace

    [...]
    arguments:
      - key1=val1
      - key2=val2

With

    [...]
    arguments:
      - firmware_class.path=path/to/your/firmware

Hope this helps you.

Best regards,
Lucas Akira

1 Like