site  contact  subhomenews

Firmware installation problem

October 09, 2008 — BarryK
There is a problem with how 4.1 installs a firmware tarball. It only affects the 'dvb-usb.ko' module. At the 12th hour, just before releasing 4.1, I threw in some firmware for this module, but we have now found that the firmware tarball does not install when the dvb-usb.ko module loads for the first time.

The firmware tarball is located at /lib/modules/all-firmware/dvb-usb-firmware.tar.gz, and you will have to install it manually. Expand the tarball anywhere, and copy the firmware files to /lib/firmware.

The reason the the firmware tarball does not install is because of the way I have setup firmware-tarball installation. The /etc/rc.d/rc.sysinit boot script iterates through the "modalias" files in /sys, causing the kernel to generate uevents, which in turn 'udevd' processes. The udevd daemon gets its rules from /etc/udev/rules.d, and for any case in which a module is being loaded, udevd will run /sbin/pup_event_backend_modprobe script, and one function of this script is to see if the firmware tarball is installed and if not then install it (from /lib/modules/all-firmware to /lib/firmware).

However, dvb-usb.ko does not have a modalias file under /sys, so is not loaded. It has to be loaded manually, or as a dependency of some other DVB USB related module. The way things should really be setup is for the firmware tarball to be associated with those DVB USB modules that do have a modalias entry (that is, have an 'alias' entry when you run modinfo, so it is a module for some specific hardware), and this association would be in /etc/modules/firmware.dep.

So, if someone can provide me with a list of all the hardware-specific DVB USB modules, I can fix the firmware.dep. file.

Note, in some earlier puppies, 'modprobe' is a script, but in 4.1 'modprobe' is the actual executable. When 'modprobe' was a script, firmware installation could be handled for every module.

Tags: puppy