BerliOS Logo
Back to start page

Firmware Download from User Space

Hotplug firmware loading is only available to users of a 2.6 or a >= 2.4.23 kernel; you also need Berlios driver version >= 0.12beta10 or the 0.12beta9 SuSE 9.1 snapshot.

To enable your system to automatically locate firmware images and load them into the at76c503a device driver, the following components are required:

After installing the hotplug toolset, ensure that the basic hotplug module loading functionality is working properly on your system, that is, when your device is attached, the correct drivers should automatically be loaded. The hotplug tool knows which device to load by referring to the file /lib/modules/`uname -r`/modules.usbmap. This file is generated whenever you run the depmod command, and is a mapping between usb device numbers and the names of kernel module for usb devices. By searching this file, hotplug will find the name of your kernel module and then load it.

The binary firmware images for your device are placed in the /usr/lib/hotplug/firmware directory, which the firmware.agent script will search. The binary firmware package from developer.berlios.de contains many firmware images for the different at76c50x chipsets and their feature sets. The firmware image file that your at76c503a/505(a) device will use is the file that is named similarly to the device driver itself, for example the at76c503-rfmd driver will use a firmware image named atmel_at76c503-rfmd.bin.

The at76c503a driver will need to be recompiled with firmware download support enabled. To do this, remove all fw-pkg*.h files from the source directory and call "make clean", "make", "make install". Once the module is installed, you try to plug in the device. If all goes well, you should see the kernel module for your device amongst the lsmod list, and to your glee of glees you will notice that it is significantly smaller than it was with the firmware compiled in. There should be output messages in dmesg referring to the mac address of the device and the interface name, usually wlan0, which should indicate that the firmware was loaded and is functioning as normal. If debugging is enabled, you will see more messages such as references to the name of the firmware image file itself.

If the dmesg output does not tell you that the device's mac address and interface name have been resolved, then the firmware was not loaded properly. The most likely reason for this would be that the firmware file is not in the correct location (/usr/lib/hotplug/firmware). Other than that, your at76c50x device may have a problem with that particular version of the firmware, so you may need to head back to developer.berlios.de to download an alternative version.

Other than that, there may be a non firmware related issue. After all, once the firmware image file is loaded and copied into the kernel, the job of hotplug firmware loading is finished, and therefore your setup of the firmware hotplug aspect has been proven to be correct. Inside the kernel, it is still the usbdfu module that does all the hard work of feeding the firmware image into the device, just like when the firmware was statically compiled; the only difference now is that the firmware comes from a different place. It may be the case that an usb bus or other hardware issue you had in the past has now come back to haunt you. If this is so, you will need to look to other troubleshooting guides, e.g. on the Berlios driver's support page for help. If you are unsure, you can try disabling hotplug firmware loading, and recompile and install the driver again to see if it works better.


Haftungshinweis: Trotz sorgfältiger inhaltlicher Kontrolle übernehmen wir keine Haftung für die Inhalte externer Links. Für den Inhalt der verlinkten Seiten sind ausschließlich deren Betreiber verantwortlich.
© 2004 by Nick Jones, last update 03.04.2004 All rights reserved. All trademarks are the property of their respective owners.