Ben's technical blog

Wed, 22 Oct 2008

For those who care about firmware

Some drivers in Linux include "firmware" - code that runs on the device the driver deals with, not the main processors in the system. Most of this is in a binary or equivalent form, which is probably not the form that it was originally written in. This makes it non-free by Debian's standards, an issue which has led to much argument around previous releases and has blown up once again.

The good news is that kernel developers are making a continuing effort to separate this from the driver code. I've collected together the patches that do this and written 2 of my own, which appear to cover all the remaining sourceless firmware. But I was only able to test one of these drivers (radeon) - the rest is up to you.

Affected drivers

DriverHardware which requires firmwareBug reportChange made
cassiniSun "Cassini" Ethernet controllers with "Neptune" PHY498631removed
dabusbBayCom DAB-USB radio receivers502663moved to firmware-dabusb
e100Intel PRO/100 Ethernet controllers with PCI revision 8, 9, 15 or 16 or built into ICH6 or ICH7 (LAN-on-motherboard)494308moved to firmware-e100
kawethKawasaki LSI USB Ethernet controllers502665removed
mgaMatrox G200, G400, G450(?) and G550 graphics controllers, 3D acceleration only502666moved to firmware-matrox
qla1280QLogic QLA1XXX SCSI controllers502667moved to firmware-qlogic
r128ATI Rage 128 graphics controllers, 3D acceleration only494007moved to firmware-ati
starfireAdaptec DuraLAN aka Starfire Ethernet controllers501152moved to firmware-adaptec
tehutiTehuti Ethernet controllers501153moved to firmware-tehuti
typhoon3Com Typhoon (3CR990) Ethernet controllers502669moved to firmware-3com
whiteheatConnectTech WhiteHEAT USB serial adapters502668removed

How to test

  1. Download and install the linux-source package from http://people.debian.org/~benh/firmware-removal/. There is a signed .changes file there that you can use to verify the package.
  2. Build and install a kernel from that source (you should probably use make-kpkg).
  3. Boot the kernel. Check that the driver fails cleanly: it should not crash, and there should be a useful error message in /var/log/messages
  4. Download and install the relevant firmware package, if available. These are available from the same place as the linux-source package.
  5. Reboot or reload the driver. Check that the driver is now working.
  6. Add your results to the bug report as shown above.

Firmware that is removed

Do you depend on the drivers for which I have removed the firmware? Do you have contacts with the vendors who might be able to help relicence it? Please send mail to the bug report.

Update

I checked my email and found a response from ConnectTech; the WhiteHEAT firmware will probably be clear to package in firmware-nonfree. There is no need for anyone else to contact them.

posted at: 01:53 | path: / | permanent link to this entry