I experienced the same issue with my WiFi USB dongle as observed by the fellow member coreplayer2 (http://forum.tinycorelinux.net/index.php/topic,20891.msg130518.html#msg130518). Back then this issue was marked as solved because this is error message is supposed to be normal since WiFi should be working anyway. I strongly disagree with this statement, because any error reported by the system is there for a reason.

Tiny Core Linux comes with a set of extension packages containing various firmware images covering different hardware/chipset manufacturers.

In my case following firmware extension packages are loaded on system boot

firmware-atheros.tczfirmware-broadcom_bcm43xx.tczfirmware-broadcom_bnx2.tczfirmware-broadcom_bnx2x.tczfirmware-chelsio.tczfirmware-getB43.tczfirmware-intel_e100.tczfirmware-ipw2100.tczfirmware-ipw2200.tczfirmware-iwimax.tczfirmware-iwl8000.tczfirmware-iwl9000.tczfirmware-iwlwifi.tczfirmware-marvel.tczfirmware-myri10ge.tczfirmware-netxen.tczfirmware-openfwwf.tczfirmware-ralinkwifi.tczfirmware-rtl8192ce_se_de.tczfirmware-rtl_nic.tczfirmware-rtlwifi.tczfirmware-ti-connectivity.tczfirmware-tigon.tczfirmware-ueagle-atm.tczfirmware-vxge.tczfirmware-zd1211.tczFrom what I see, firmware images will show up in the /usr/local/lib/firmware folder. The issue here is that whenever I insert my WiFi USB dongle to the USB port I will get an error indicating that firmware image for my WiFi USB dongle failed to load. After some experimentation I was able to figure out that system is expecting to find firmware images in the /lib/firmware folder and not in the location specified by the firmware extension packages. If I create a symlink in the /usr/lib folder to point to the firmware folder located in /usr/local/lib, then firmware image for my WiFi USB dongle is loaded without an error.

My question here is what should be done? Should all firmware extension packages be repackaged to have firmware images located in the /lib/firmware folder? Maybe there is a configuration option for Linux kernel to specify a different location for firmware images?Any feedback is much appreciated. Thanks!

From what I was able to figure out, it seems that udev is responsible for figuring out the location of firmware images directory. More details are available in the /etc/udev/rules.d/50-firmware.rules which actually calls /lib/udev/firmware.sh script.

Indeed, the kernel message is because the kernel only looks in /lib, and when not found there, it calls firmware.sh (the mentioned usermode helper), which searches /usr/local too. The speed difference is on the order of microseconds.

I am loading so many firmware extensions because I would like to have a system which covers as many WiFi USB dongles as possible. This way I will be able to test all WiFi USB dongles I have on stack.

Hello caracalla,I couldn't help notice that many of the firmware extensions you're loading don't contain WiFi firmware. For example the list contains firmware for Gigabit Ethernet PCIe cards and modems, like:firmware-myri10ge.tczfirmware-netxen.tczfirmware-rtl_nic.tczfirmware-tigon.tczfirmware-ueagle-atm.tczetc, etc.Additionally, broadcomm firmware and openfwwf firmware extensions will likely cause conflict if run together, it's a case of either or.. while none are up to date. Besides none of the previously mentioned Broadcomm extensions are required if instead you run firmware-getB43 which downloads latest Broadcomm proprietary firmware blobs and creates a local broadcomm firmware extension as per the license.

For a while I was focused on the headline failed line and failed(!) to notice that the unable to load error message two lines below had gone. From a human factors point of view, having started off with failed you'd expect a success if that failure subsequently got reversed.

The driver itself has a first go at /lib/firmware after which (if it failed) it hands the problem on to udev. udev uses /lib/udev/firmware.sh to do the job. This helper searches /lib/firmware and then /usr/local/lib/firmware.

BTW: If anyone has an RTL8168 driver that will let me use ethtool to read/write the eeprom attached to the NIC I'd appreciate it. (I get 'Operation not supported' from the current r8169 driver)