Tux's lil' helper
Joined: 20 Jul 2005
|Posted: Thu Nov 30, 2017 12:09 am Post subject: [solved] How to manually load old kernel driver's firmware
|There seems to be next to no information available on the search engines. Just thought I would post it here in case someone needs to know. Maybe it would be better to have it on the wiki? This site ranks high with search engines. I spent an hour trying to remember how this is done.
Here is the original link but it probably wouldn't get indexed by search engines: http://bitcoinshell.mooo.com/users/captain/linux_load_firmware_manually.txt
HERE IS HOW TO LOAD FIRMWARE IN LINUX MANUALLY WITHOUT UDEV
For instance, if udev is not installed or the firmware-loader part isn't installed. This is for older kernels like 3.2. Even older kernels tended to have the firmware built in, and newer kernels load the firmware files themselves without a user space utility.
The instructions seem to be almost non existant on the Internet search engines.
Here is how: Unload the driver, load the driver, then signal firmware loading, then dump the firmware in to the data file, then signal not loading all within 60 seconds.
acenic.ko used in this example.
# modprobe -r acenic
# modprobe acenic
Open another terminal as root
Switch to the other terminal. Complete the following in 60 seconds.
# find /sys -name loading
Remember the place where the loading file is located
# echo 1 > /sys/devices/ the place where loading was found/loading
# cat /lib/firmware/acenic/TG2.bin > /sys/devices/... same place .../data
# echo 0 > /sys/devices/ the place where loading was found/loading
All this must be done within 60 seconds. Sending -1 to loading cancels it.
Check to see that it shows successful loading.
Note that for some drivers like e100 it doesn't start firmware loading until you bring the network interface up.