LWN.net Logo

Freeing the firmware

Few of us have multiprocessor systems sitting on our desks - or so we might think. The truth of the matter is that a typical computer contains several processors, only one of which is normally considered to be "the" processor. The others make the various subsystems and peripherals work; they live on the motherboard, in the video card, in the network adaptor, etc. Each of those processors needs a program to run. Traditionally, this "firmware" has been burned into some sort of read-only memory in the hardware itself. Manufacturers have figured out, however, that some money can be saved by leaving out the ROM and forcing the host processor to download the firmware at load time. The firmware can be shipped on the installation CD, where it gets put into the system along with the driver.

Hardware installation CDs for free operating systems are still rather rare, however - and systems like Linux tend to avoid that approach in the first place. It is much nicer if the operating system simply works with the hardware presented to it without requiring a separate software installation step. The result is an easier experience for the user, and also for the hardware vendor, who typically does not want to try to support even a few of the numerous Linux and BSD variants in widespread use.

Shipping drivers with the operating system itself has generally been a successful approach. Linux systems work on a vast variety of hardware, including many devices which have long since ceased to be supported by their manufacturers. With few exceptions, users can upgrade to a new kernel and expect their hardware to still work. There is no need to go scrambling around the net looking for updated drivers.

If the driver needs to download firmware into the device, however, the situation changes. Somehow, the driver must get a copy of the firmware to feed to its hardware. The 2.6 kernel has a nice mechanism which allows a driver to ask user space for the firmware bits, but user space must have the firmware to answer those requests. The firmware can usually be found on the installation CD; sometimes it can be downloaded from the net as well. But users would rather not have to go looking for firmware just to make their computers work. And, if the device is not brand new, the installation CD may be lost; at that point, finding the firmware may be just about impossible.

So it would be nice if the firmware could be shipped with the operating system itself. The old practice of linking the firmware into the driver itself is frowned upon in recent times for licensing and other reasons. Loading the driver from user space is a fine solution, however; the firmware request mechanisms work nicely, and the distributors can deal with the problem of getting the user-space side of things working in a transparent way.

The only problem is that firmware typically comes with a restrictive license which does not have redistribution in mind. In many cases, firmware redistribution is prohibited entirely, or the situation is, at best, ambiguous. Thus, for example, the Prism54 firmware page reads as follows:

We do not yet have a re-distribution license for [the firmware files] by Intersil (or globalspanvirata or Conexant) but since Intersil wrote the original GPL driver and then supported the Open Source community in maintaining it, we figure it's only fair we're allowed to redistribute them here. Our official permission is pending.

In today's legal climate, the "we figure it's only fair" license strikes some users as inadequate. Distributors, fearful of being sued, really need to have a license which makes their right to redistribute the firmware clear. Without that license, most of them will not ship the device firmware, and the distribution will not support the hardware in any sort of easy way. So attempts to get vendors to put their firmware under a reasonable license have been going on for years.

Recently, those efforts have been stepped up a bit, thanks, especially, to efforts in the OpenBSD camp. The OpenBSD developers, too, have been starting off with quiet, private requests to the vendors. If those requests do not get an acceptable response, however, a call is made for the community to make its feelings clear. The hope is that, if enough people send coherent, polite notes saying that their future hardware purchasing decisions depend on proper free operating system support, the vendors will wake up and allow that support to happen.

As the project has announced recently, this approach seems to be having some success. Atmel, for example, has just decided to make its firmware available under a BSD-style license. Theo de Raadt, who is behind the OpenBSD effort to make wireless chipset firmware available, told us that the situation is reaching the point where the vendors can be played off against each other. Enough vendors have made their firmware and/or programming information available that the rest can be credibly threatened with a loss of business if they do not follow suit.

Not all vendors are convinced of this fact yet, however, so the OpenBSD folks are asking for help in contacting vendors. If the Linux community joins in with the BSD crowd, our combined voices might just be enough to make a difference. OpenBSD is, in particular, looking to apply pressure against Intel and TI, both of which have not, as yet, made their firmware distributable. Target contacts for TI and for Intel have been published. Interested people are encouraged to contact these vendors and let them know that proper free operating system support is a deciding factor in how they choose hardware. Needless to say, these messages should be professional and polite; flaming vendors will not help, and could be counterproductive.

Some in the Linux community will, doubtless, be dismayed by the fact that this firmware is only available in binary form. The Debian project will argue for years on whether a BSD-licensed binary is distributable or not. The fact is that it would be fun to have the source and a toolchain so that interested people could reprogram their hardware. But that is unlikely to happen for most hardware, and, in any case, the situation is little different than with firmware which is distributed in the hardware itself. It's simply a cookie which must be fed to the hardware to convince it to do its job. If we can distribute the cookies with our operating systems, we can have hardware which works out of the box. That seems like a goal worth writing some mail for.

[As a postscript, it should be noted that talks with Conexant regarding the Prism54 firmware are proceeding. Prism54 driver hacker Luis Rodriguez tells us that the conversation is continuing and that he is confident that the issue will be resolved soon.]


(Log in to post comments)

Freeing the firmware

Posted Nov 4, 2004 2:27 UTC (Thu) by graham (subscriber, #15514) [Link]

The Debian project is not arguing whether or not a BSD-licensed binary is distributable or not: it is pretty clear that it is:

2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

What the Debian project is arguing about is whether or not a binary firmware image, without source, is free or not according to the DFSG.

Freeing the firmware

Posted Nov 4, 2004 3:29 UTC (Thu) by JoeBuck (subscriber, #2330) [Link]

There's really nothing to argue about; a binary piece of firmware is not DFSG-free, even if it comes with permission to redistribute. Debian could decide, nevertheless, to make an exception. But it's not intellectually honest to pretend that firmware is anything other than it is: an executable program that runs on a special-purpose processor. Those programs are developed at least in assembly language, and sometimes even in C.

Freeing the firmware

Posted Nov 4, 2004 9:18 UTC (Thu) by farnz (guest, #17727) [Link]

It's not always an executable program; sometimes, it's an FPGA image or similar (hardware definition in a proprietary binary format).

Freeing the firmware

Posted Nov 4, 2004 12:26 UTC (Thu) by gyles (guest, #1600) [Link]

The line between an FPGA image and a 'conventional' exectuable is very thin - Verilog and VHDL (used to program FPGAs) look an awful lot like 'C'.

Freeing the firmware

Posted Nov 4, 2004 17:38 UTC (Thu) by iabervon (subscriber, #722) [Link]

More likely, Debian could decide that firmware images aren't supposed to be software, and so don't really have to fit the DFSG. It is, after all, merely an implementation detail that the firmware images need to be supplied by the OS, or that the firmware images could be changed outside the factory, or even that there is a general-purpose processor in the device at all.

It won't be the first file that Debian includes with the license "Everyone is permitted to copy and distribute verbatim copies, but changing it is not allowed." The first file Debian included with that license is one that they're unlikely to ever remove: the GPL license document.

Freeing the firmware

Posted Nov 4, 2004 22:08 UTC (Thu) by piman (subscriber, #8957) [Link]

> More likely, Debian could decide that firmware images aren't supposed to be software

In which case, Debian would be deciding something counter-factual. The firmware is clearly software.

> It is, after all, merely an implementation detail that the firmware images need to be supplied by the OS...

That it's only an implementation detail doesn't make it not software. It just makes the fact it's software an implementation detail. It's only an "implementation detail" that some printers require PS to be translated to their native format; does this mean that (e.g.) GIMP-Print isn't software?

Freeing the firmware

Posted Nov 4, 2004 23:58 UTC (Thu) by hazelsct (guest, #3659) [Link]

It won't be the first file that Debian includes with the license "Everyone is permitted to copy and distribute verbatim copies, but changing it is not allowed." The first file Debian included with that license is one that they're unlikely to ever remove: the GPL license document.
Irrelevant. Saying that you can't fix or extend a piece of software is very different from saying that you can't change a copyright notice and license.

To help understand this point, I recommend reading the discussions on the issue on debian-legal, particularly as your point is directed at Debian.

Allowed to redistribute but not to modify?

Posted Nov 6, 2004 1:49 UTC (Sat) by giraffedata (subscriber, #1954) [Link]

It won't be the first file that Debian includes with the license "Everyone is permitted to copy and distribute verbatim copies, but changing it is not allowed." The first file Debian included with that license is one that they're unlikely to ever remove: the GPL license document.

Surely it doesn't say that. I can't take the license file, change a few sentences, and distribute it as the license for some of my own code? That would be pretty unfree.

I presume it just says you're allowed to redistribute Debian code (or a derivation thereof) only if you include that file unmodified.

Allowed to redistribute but not to modify?

Posted Nov 6, 2004 2:50 UTC (Sat) by iabervon (subscriber, #722) [Link]

"Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed." is, in fact, the license on the GPL, as granted by the FSF (not Debian, who merely follows it). The FSF believes in people fitting software to their needs, but has no similar attitude towards licenses (or, many would argue, documentation).

Freeing the firmware

Posted Nov 4, 2004 4:06 UTC (Thu) by ncm (subscriber, #165) [Link]

I question whether these firmware images are covered by copyright at all, when used purely to enable legally-obtained devices to operate as advertised. The judges' comments in the Lexmark case seemed to indicate not. The "cookie" remark is apropos: the firmware image is just an unusually long access key, a big number. Numbers qua numbers aren't copyrightable. You need some kind of expressive quality to get copyright protection.

Freeing the firmware

Posted Nov 4, 2004 4:56 UTC (Thu) by obobo (guest, #684) [Link]

The firmware for the Broadcom 2033 bluetooth chip is 112k; it is a substantial chunk of code running on a decently powerful microcontroller. It is a lot bigger than the Apple ][ firmware/OS that was granted copyright protection.

Freeing the firmware

Posted Nov 4, 2004 20:42 UTC (Thu) by ncm (subscriber, #165) [Link]

The issue is, granted to whom? Franklin couldn't distribute copies of Apple's ROMs because that was for commercial gain, in competition with Apple. Firmware to drive the originator's own hardware, distributed free, ought to be a different matter. In copyright cases, details matter. It would be very helpful to identify a case that closely matches, in which the image was denied copyright protection.

Freeing the firmware

Posted Nov 6, 2004 2:01 UTC (Sat) by giraffedata (subscriber, #1954) [Link]

I question whether these firmware images are covered by copyright at all, when used purely to enable legally-obtained devices to operate as advertised. The judges' comments in the Lexmark case seemed to indicate not.

The judge's comments didn't say Lexmark software wasn't covered by copyright. He said 1) nobody copied it; and 2) DMCA restrictions on circumventing copy-protection devices (which apply even in the absence of actual copying) didn't apply. I think the only lesson we can adopt from that is that one could reverse engineer the video card and write his own firmware from scratch without breaking any laws.

Numbers qua numbers aren't copyrightable. You need some kind of expressive quality to get copyright protection

I see a whole lot of expressive quality here. This isn't an arbitrary string of bits. They're carefully arranged, at considerable intellectual expense to the author. They express the solution to a complex computational problem. It's exactly what copyright is designed to protect.

Freeing the firmware

Posted Nov 4, 2004 12:10 UTC (Thu) by zooko (subscriber, #2589) [Link]

What's this I hear about an OpenBSD hacker reverse engineering the HAL for atheros?

http://wmf.edithispage.com/

The link Wes Felter gives doesn't seem to include any more information about this.

I would buy a new 802.11g card if I could get open source "all the way down".

--Z

Freeing the firmware

Posted Nov 5, 2004 2:23 UTC (Fri) by proski (subscriber, #104) [Link]

Correct link: http://wmf.editthispage.com/
Story: http://kerneltrap.org/node/view/4118

This issue will only become bigger

Posted Nov 4, 2004 19:39 UTC (Thu) by gilb (subscriber, #11728) [Link]

In the old-old days, hardware manufacturers implemented their products with IC's, resistors, capacitors, transistors, etc. that hard coded the capabilities. Then ASICs became common and relatively cheap and all of those discrete parts disappeared.

However, new ASICs are incredibly expensive to develop and the lead time is short. Conversely, gates and MHz are cheap, so the cost equation works out that it is cheaper to put as little as possible in gates and run as much as possible in software. The functionality is is the same as it always was, just that some of the hardware is now done in software on a dedicated CPU. This trend is likely to grow dramatically.

Free software people never asked for the schematics to the printer's hardware. Now a lot of that work is done in software on a dedicated CPU. Do we need that software now in order to be free?

In some cases, maybe yes. What if sound cards only play DRM enabled formats by running a CPU and firmware on the card? Will we still retain our ability exercise our "Fair Use" rights?

For WLAN cards, I wouldn't expect to see the firmware and I don't think we need it. It would be nice, but I don't think we need it. The FCC would probably take a dim view of it. Perhaps we should demand the API to the firmware?

I don't know the right answer now, but I suspect this will have to be a compromise, at least initially, on the ideal of free software.

This issue will only become bigger

Posted Nov 4, 2004 21:57 UTC (Thu) by piman (subscriber, #8957) [Link]

The issue at hand is much simpler than you make it out to be. Free OSs don't have permission to distribute the drivers period, whether or not the drivers themselves are free. For the devices to be any use -- with free or non-free drivers, free or non-free firmware -- we need the ability to actually include the firmware at all. That's what Theo's working on, and what (until recently) Linux maintainers were totally ignoring.

Software Defined Radio

Posted Nov 4, 2004 21:47 UTC (Thu) by Baylink (subscriber, #755) [Link]

Parts of this topic are much more complex then they appear to people who don't deal in this stuff regularly.

The most notable field in which that's true is wireless networking hardware, and, ironically, it's precisely because of a technology in which open source advocates are making some of the biggest strides: software defined radios.

The FCC exercises control over radio transmitters, and they do it through a program of type approvals and type acceptances, or whatever we're calling the equivalent these days, by which the manufacturers submit designs -- *including the firmware for any involved microcontrollers* -- and the FCC approves that precise configuration.

If users are permitted to monkey with the firmware, then the device may no longer meet the FCC specs it's require to, and because of this, the FCC requires the manufacturer to Take Steps to make that as difficult as possible -- as difficult as it is to make that happen.

The same sort of constraints apply to modems.

So I think it unlikely at best that we will see this sort of thing happen, at least in that sub-genre of driver -- in the near future.

But who knows? Maybe it's just me.

So many things are just me.

Software Defined Radio

Posted Nov 4, 2004 22:00 UTC (Thu) by piman (subscriber, #8957) [Link]

> If users are permitted to monkey with the firmware, then the device may no longer meet the FCC specs it's require to, and because of this, the FCC requires the manufacturer to Take Steps to make that as difficult as possible -- as difficult as it is to make that happen.

I've seen this argument before, and it makes no sense. If users are permitted to monkey with the hardware, the same thing can happen. It's not the responsibility of the manufacturer to make sure no one violates broadcast regulations, it's the responsibility of the person broadcasting.

What's the relevant statute(s) in this case? Without legal backing, it just sounds like a convenient excuse for manufacturers to keep their firmware secret.

(And if you'll note, that's not what the article was about anyway. It was about having the ability to distribute the manufacturer's firmware at all, as-is, without any modification. You know, the firmware that's necessary for the device to run.)

Freeing the firmware

Posted Nov 5, 2004 0:59 UTC (Fri) by garloff (subscriber, #319) [Link]

With the current situation, having non-redistributable firmware that's
needed to get HW to work, there's still something a distributor can do
for the customers:

Offer a way to download the firmware from the web server of the
distributor from the installation and/or system administration and/or
update tool.

That's not ideal, as there are certain situations where this will fail:
* The firmware is needed to install (disk access) -- not likely
* The firmware is needed to get access to the net -- more likely

But still better than having the user figure out himself ...
Obviously much worse than having redistributable FW.

Freeing the firmware

Posted Nov 11, 2004 8:12 UTC (Thu) by Wol (guest, #4433) [Link]

You forgot ...

3 - the distributor has gone bust.

Cheers,
Wol

Freeing the firmware

Posted Nov 11, 2004 11:39 UTC (Thu) by rabnud (guest, #2839) [Link]

Most firmware will be Microsoft first, Linux as an afterthought. Thus, not only will development time delay postpone Linux compatible firmware, but also a lack of understanding of Linux's firmware implementation methods will further complicate the matter.

Lastly, I can't remember how many support requests I've made for CDRW/DVDRW firmware upgrades, messages where I clearly said "I do not have Microsoft products on my computer", but the official response was either "First, launch Windows..." or "attached is the .exe file".

When (if) the hardwares' tech support people are even partially aware of the problems of firmware and Linux (which is very rare), no matter what skills tech support may have, the corporate ladder still squashes the tech support path from raising the issue: "We will not support any other OS".

Thus, I'd say that no matter how simple the Linux firmware structure is, the management levels at hardware outfits are the ones that need a kick in the butt to get the message.

Copyright © 2004, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds