LWN.net Logo

Embedded Linux and the GPL

Linux and embedded systems are a natural combination. Linux provides the level of control and ability to customize that embedded vendors need; it can also be pared down into a (relatively) small footprint. And, of course, there are no per-unit royalties to be paid; that is a big deal for many applications. It is not surprising that an increasing number of gadgets have a Linux kernel running inside them.

Much of the code running in those systems is licensed under the GPL. While no royalties need be paid for the distribution of GPL-licensed code, there are other obligations which must be met. In particular, a Linux-powered gadget is supposed to come with either (1) a copy of the source for the code running inside, or (2) a written offer to ship the source anytime in the next three years. While some companies (e.g. TiVo) make their source available, it would seem that some other embedded system vendors are forgetting about this obligation when they ship their boxes.

Recently, Andrew Miklas noticed that his Linksys WRT54G wireless access point was running GPL-licensed software, including a 2.4.5 kernel and the BusyBox tool suite. The product contains no source, offer of source, or even acknowledgement of the GPL software running inside. Attempts to obtain source from Linksys have, so far, been unsuccessful. The Free Software Foundation is now taking an interest in this case.

Linksys, it seems, is not alone in this behavior. Products from Belken, Buffalo Technology, and QLogic have also been shown to have Linux inside, with no source forthcoming. Lest one despair completely, however, it's worth looking at Colm MacCárthaigh's experience with his Dell TrueMobile 1184 router. Not only was he able to (eventually) get the source from Dell; his efforts also convinced Dell to include a source CD with the product.

Mr. MacCárthaigh's experience is worth noting for a couple of reasons. The first is that Dell was simply unaware that it was supposed to make source available. In most GPL violation cases, the real problem is that the company involved is unaware of its obligations under the license; GPL violations tend to be unintentional. With some persistence - and politeness - it is usually possible to get these companies to move into compliance with the GPL. The Free Software Foundation has been very good at this in the past; in contrast with its loudness on other fronts, the FSF treats GPL problems with discretion and tact. As a result, most GPL violators are brought around to compliance without being pushed into full-scale defensive lockdown.

The other thing to note is that Mr. MacCárthaigh did not get anything all that exciting for his efforts: a stock 2.2.14 kernel with a widely-available patch set. In the Linksys case, many Linux users are getting worked up about the prospect of extracting a new set of wireless network drivers by forcing a release of code. These users will almost certainly be disappointed. The drivers in question will be implemented as loadable modules which, until some disgruntled kernel developer proves otherwise in court, are legal to distribute for use with the kernel. Linksys owes its customers the source for its Linux kernel, BusyBox, and any other GPL software that it includes in its product. But it is under no obligation to open up any proprietary drivers that it is using.

The truly sad part is that embedded system vendors need not even provide source which can be rebuilt and loaded into their devices. As reported here in May, there appears to be no legal impediment that can prevent systems vendors from requiring kernels to be signed by a private key before they can be run. You can look at what your Linux-powered device is running (if you trust the vendor to provide the true source for the binaries in the box), but you may not be able to change it.

Even so, it is important that distributors of GPL-licensed software live up to the obligations imposed by that license. There is a vast body of highly capable software which is available under the GPL, and all that's required to be able to use it is to make the source available under the same license. That is a small price to pay for free (of charge) access to software that, by some estimates, is worth over a billion dollars.

Update: since this article was first published, Linksys has stated that it will release the source for the GPL-licensed code running in the WRT54G router.


(Log in to post comments)

Embedded Linux and the GPL

Posted Jun 10, 2003 22:05 UTC (Tue) by Baylink (subscriber, #755) [Link]

> The drivers in question will be implemented as loadable

*binary*

> modules which, until
some disgruntled kernel developer proves otherwise in court, are legal to distribute
for use with the kernel.

And, while I came around on signed kernels, I'm still not entirely convinced on
binary modules. *Is* nothing better than something?

Embedded Linux and the GPL

Posted Jun 22, 2003 18:53 UTC (Sun) by mmarq (guest, #2332) [Link]

Well, time to time politics seem to collide with the GPLed Linux...
One has to draw a conclusion:- Binary modules are here to stay!

THERE IS NO OTHER CHOISE, EVEN IF SCO WINS AND STALLS LINUX FOR 1 YEAR

You cannot force 1 vendor to GPL code if that vendor dosent want to... that "proclaimed innocence" about GPL obligations IS NOT THAT INNOCENT, is a form that a vendor has to protect for a while is "supposed" very important IP,... for the next iteration of the product, he(vendor) then repeats the cycle...

" But there are forms to control what binary modules can do! "

As we can see from kernel Traffic the Dynamik kernel module support (DKMS) is an excelent tool to "obligate" that all binary modules be external to the Kernel,... and then there is the "hardning patches" that circulated last october at the end of code freeze that can be made to control what this binary modules can do.

Embedded Linux and the GPL

Posted Jun 10, 2003 22:12 UTC (Tue) by JoeBuck (subscriber, #2330) [Link]

If the embedded Linux product really has loadable modules, then yes, it would appear that the product's provider can keep the source to those modules proprietary, at least according to Linus' interpretation. However, I would expect that many embedded systems will not have a separate disk or flash device from which the modules are read in and loaded; rather, they will be directly compiled into the kernel. The GPL is quite clear on that matter: if it's a single executable, whether in ROM, flash, or on a disk, the source to the whole executable must be provided.

Does the Linksys device really have loadable kernel modules?

Embedded Linux and the GPL

Posted Jun 10, 2003 22:54 UTC (Tue) by jeff@uclinux.org (subscriber, #8024) [Link]

Yes, even the smallest (uC)linux embedded systems need a root filesystem
and do support loadable modules. Most practical embedded systems need to
do that, the drivers for systems at the top end of the price curve (in this case
802.11a/g, b was last year's game) are written for hardware which is proprietary.

In the case of the Linksys device, the wlan driver is a _huge_ module, which is
probabily what people want.

./lib/modules/2.4.5/kernel/drivers/net/wl:
total 0
-rw-r--r-- 1 root root 301701 Mar 5 15:49 wl.o

The embedded vendors know they can sign the NDA and get it from
Broadcom if they have a customer who will buy piles of chips, BTW.

The only way to deal with this stuff is to to be polite and point it out,
although the real question is why didn't the vendor who did the work
for Linksys deal with these GPL issues for them and make even a simple
tarball of the Free components available. However, there is no reason
to think you could expect to get source to the whole product, nor should
you expect to!

J

Embedded Linux and the GPL - What really is required?

Posted Jun 10, 2003 23:17 UTC (Tue) by freeio (guest, #9622) [Link]

From looking at the license, I see a very real question as to whether a piece of *_hardware_* with embedded GPL code requires release of the GPL code in it... although I am glad to see the matter being resolved.

For my embedded work, typically the kernel, drivers, and such are stock, and the functionality comes from the program which runs on top of it all. Since I am a free software advocate, I usually GPL that too - but I can see that there are those who would like to do otherwise.

Marty

Embedded Linux and the GPL - What really is required?

Posted Jun 11, 2003 0:13 UTC (Wed) by coriordan (guest, #7544) [Link]

Re-read the license.

The GNU GPL covers distribution in _any_media_.

Ciaran O'Riordan

Embedded Linux and the GPL - What really is required?

Posted Jun 12, 2003 21:48 UTC (Thu) by Baylink (subscriber, #755) [Link]

Which means that the topic being litigated would be "distributed", as that term
applies to software the end user cannot get to, and which is, effectively, completely
coupled to the hardware.

Embedded Linux and the GPL

Posted Jun 11, 2003 3:29 UTC (Wed) by faramir (subscriber, #2327) [Link]

Personally I don't care so much about getting source to the device driver. What I want is the ability to tweak the generic packet filtering/NAT code in the kernel. Or perhaps add in a SOCKS based port forwarding daemon. None of this requires driver source. It does, however, require known good source code for the exact hardware in question and how the images are built. Right now I run a PC as a firewall and was thinking that I'ld have to do that as well if I go wireless. If I could go buy a solid-state device for $50-$200 to do this AND I could tweak its configuration the same way that I could with a PC-based solution; I'ld be very happy. The vendors should be happy as well, as I'ld be spending money on their products. As there seems to be very little product differentiation in this space, I would think they would jump at any opportunity to make their product more attractive to even a small part of the market.


Embedded Linux and the GPL

Posted Jun 12, 2003 0:56 UTC (Thu) by proski (subscriber, #104) [Link]

You don't need the driver sources if you want to stick with Linux 2.4.5 or whatever Linksys is using. I don't think you can upgrade the kernel to 2.4.20 and keep the driver working. There were significant driver API changes before 2.4.13.

Embedded Linux and the GPL

Posted Jun 12, 2003 3:55 UTC (Thu) by judge (guest, #6234) [Link]

Yes I would really love to be able to hack a bit the linksys router. Its very cheap..it runs on almost no power. Even if all it means is that I can run an epic client in it or something. Or maybe add support for ip6.

Could even stick it into a car to do some mobile computering or something. I really really wish that some embeded dev figures out how to place own images into the linksys. Perhaps guidelines on how to do it SAFELY would be nice too :)

Embedded Linux and the GPL

Posted Jun 11, 2003 19:43 UTC (Wed) by sethml (subscriber, #8471) [Link]

I find this portion of the article very misleading:
In particular, a Linux-powered gadget is supposed to come with either (1) a copy of the source for the code running inside, or (2) a written offer to ship the source anytime in the next three years.
This is simply not true. A Linux-powered gadget is supposed to come with a copy (or offer of a copy) of the source for the GPL code running inside, and any code directly linked to GPL code. In most cases this won't include the build system used to package software for the device and it won't include the source for any proprietary software that runs under the kernel. In many cases, an embedded device manufacturer can respond to a GPL query with "download the 2.4.20 kernel from kernel.org, apply patches found at http://..., and compile with this .config file." - which gives you access to the source to the GPL code they're using, but is not at all useful for changing any aspect of their device.

Embedded Linux and the GPL

Posted Jun 11, 2003 23:17 UTC (Wed) by piman (subscriber, #8957) [Link]

You were doing okay until your last point. You're correct in that they only need to provide the GPLd and linked-to-GPLd code, and not all code (unless other software in the system has a similar copyleft license, in which case, that must be followed for that code too). However, a pointer to kernel.org or other sources is NOT sufficient to satisfy the terms of the GPL. They have to provide it (or a written offer to receive it, from them, valid for three years) themselves.

Embedded Linux and the GPL

Posted Jun 12, 2003 2:33 UTC (Thu) by mjd (guest, #4652) [Link]

Having the source code is all well and good
for embedded devices that have a flash memory.
What about devices that (for reasons of cost)
have mask ROMs? You can have the source code,
but you're not able to modify what's in the
device. Is this in the spirit and/or letter
of the GPL?

http://www.gnu.org/philosophy/free-sw.html

The FSF says that "free software is a matter of the users'
freedom to run, copy, distribute, study, change and
improve the software". Does this "change" mean you
also must have the right to change the software in the
device?

The FSF says "you should also have the freedom to make
modifications and use them". Does this mean modifications
to the software (for example, the source), or the instance
of the software that comes with the device?

The FSF says "the freedom [...] to use it on any kind of
computer system". Does that include the system used to
distribute the software?

Mitch.

Embedded Linux and the GPL

Posted Jun 12, 2003 6:40 UTC (Thu) by dd9jn (subscriber, #4459) [Link]

The GPL does not distinguish the media used to distribute the software. It does not matter whether it is a CDROM, Flash or ROM. BTW, you can replace a ROM by an EEPROM to change the GPLed software.

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