Linux and Linksys: the saga continues

by Rob Flickenger

As I posted to the SeattleWireless dev list, there are still some deep, dark questions about Linksys' compliance with the GPL. As many thoughful readers pointed out, my earlier comments about Linksys' GPL compliance with their other packages were misdirected. (How could I overlook autoconf? Duh.)


But the issue I'm still concerned about is the Linux kernel itself. Read my full post for more details, but essentially, here's the deal: you can't build a kernel using their source tree. If you run a 'make menuconfig', you can see critical, non-modular code for Broadcom motherboard support. This code is missing from their source tree. If you enable support for any of the Broadcom boards, this is what you see when you run 'make zImage':


root@qube:~/src/linux# make zImage
if [ ! -f /home/rob/src/linux/include/asm-mips/offset.h ]; then \
touch /home/rob/src/linux/include/asm-mips/offset.h; \
fi;
make: *** arch/mips/brcm-boards/bcm947xx/compressed: No such file or directory. Stop.
make: *** [archdep] Error 2

Also, I can build kernel modules using their tree if I fiddle with their configuration so it ignores the missing code. These modules build cleanly and insmod on a running WRT54G without warning. But strangely, they don't actually function as they should.


I am not a kernel hacker, but I believe it is likely that Linksys (or possibly Broadcom) modified the kernel module code so that the binary device drivers for their wireless card included in the Linksys firmware won't load on standard kernels. As a side effect, they broke standard Linux kernel module support, which is critical if we're going to get NoCatSplash, tunnels, IPv6, etc. running on this box.


I believe that releasing critical (i.e. non-modular) kernel code without source code is a violation of the GPL. So, I wrote Linksys the following (submitted as a "complaint or concern" from their web interface).


Hello--

This is the third time I've written to you regarding GPL issues with the
WRT54G. To date, I have received no reply. I would appreciate your
prompt attention on this matter.

As I [1] and others [2] have documented, there seems to be non-
modular code missing from your Linux 2.4.5 kernel source tree at http:/
/www.linksys.com/support/gpl.asp.

Specifically, I am unable to build a working linux kernel based on your
tree due to source code missing from arch/mips/brcm-boards/ and
other directories. You also seem to have modified the kernel module
loading process, as standard kernel modules built from your tree load
without warnings on a running WRT54G, but apparently do not function
properly.

I believe I am entitled to the source code to these changes, as the Linux
kernel is released under the GNU Public License [3]. My intent is to
extend the functionality of your WRT54G by building on the same open
source software platform that allowed you to build the WRT54G in the
first place.

I understand that you may be unable to distribute the source code
modular device drivers supplied by Broadcom, but I believe it is a
violation of the GPL to distribute versions of the Linux kernel that are
missing critical, non-modular kernel code.

Thank you,

--Rob Flickenger

[1] http://seattlewireless.net/archive/ezmlm.cgi?mss:12244:mnedlcagmemldcohaaho

[2] http://lkml.org/lkml/2003/7/18/364

[3] http://www.gnu.org/copyleft/gpl.html


When I hit submit on their comments page, this is what I saw:

"Thank you for helping Linksys to serve you better.
If you've requested a reply to this comment, you can expect it in 24 hours."


I look forward to a prompt reply. But I'm not holding my breath.

Is Linksys in compliance with the GPL?


5 Comments

anonymous2
2003-08-13 11:50:15
Knock Knock
Rob, I wonder if the folks at http://www.socalwug.org/ would get code if they knocked on the front door at Linksys headquarters?


DJE

anonymous2
2003-08-20 19:03:55
knock knock
perhaps . i think it needs to be approached not from a 'linksys you are evil and you are doing something wrong' but a 'even more people would buy your stuff if it was actually better at routing, and we can make it better for free'. love the wrt54g but soon i will need another one and if theres no progress by then i'll proably get a soekris instead. so their hesitancy may result in lost sales amongst enthusiasts who want to do more than browse the web behind their router.
anonymous2
2003-09-10 23:33:27
kernel modules not loading
Admittedly the kernel source is broken from the point that you can't do a 'make menuconfig' out of the box, but that's not why people are having an issue with modules. There's somewhat of a misconception that all the code for a module is within the module itself; fact is that enabling many modules secretly enables helper functions and hooks within the kernel that give the module access to kernel structures. Unfortunately what this means is that you can't just slap on modules like ipv6 without coming up with creative ways to patch the running kernel to work around the lack of helper functions.


While annoying, you can hardly fault the oem for not enabling support for all current and future modules.


- mbm(a)alt.org

anonymous2
2003-09-17 22:09:02
Another approach
Rob, did you consider sending the same message in a written letter to the Cisco legal department? They have much more of a public reputation at stake.
anonymous2
2003-09-22 02:37:22
My letter to Linksys
I wrote this to Linksys's "Open Source Inquiries" e-mail address (opensource@linksys.com) after reading this article:


----
To whom it may concern,


It worries me greately that Linksys has failed to comply with the GPL, the software license in which you are legally required to uphold since you are using Linux kernel code in your products. I have learned about this in the following article:


http://www.oreillynet.com/pub/wlg/3659


I am only one of MANY upset customers of yours because of this. Linksys is legally required to release all modifications to GPL software that you use in your products. Reading this article proves that you are in violation with the GPL. If you use GPL code in your products, you must give back to the Open Source community what you have modified/added. The reason of having open source software is so EVERYBODY BENIFITS FROM IT. You have benifited from Open Source code - and you are not keeping up your end of the bargain.


I am but a customer of yours. I am not a programmer, much less a kernel developer. There are thousands just like me, who benifit from the Linux kernel and GPL software of all kinds, who get very upset at seeing companies take advantage of the GPL. You can be assured that the Open Source community will not stand for actions such as the ones your company is taking. Consider the negative publicity your company is spreading throughout the Open Source community. It will continue until you are in full compliance with the GPL.


Please share what you have benifited from. It is the right thing to do.



Sincerely,
Jordan Erickson
Network Engineer, Logical Networking Solutions
Santa Rosa, CA
http://www.logicalnetworking.net