Is Linksys Violating The GPL?
jap writes "According to this post on LKML, Linksys is shipping firmware for (at least their) 802.11g access-points based on Linux - without any sourcecode available or mentioning of it on their site. This could be interesting: it might provide the possibility of building an ueber-cool accesspoint firmware with IPsec and native ipv6 support etc etc, using this information!"
If you push too hard for publishing source code, this box will be running Cisco IOS soon, slowing down the box 4 fold.
I'm not sure whether this is just as damaging to Open Source as the SCO thing had the potential of being, or not. On one hand, it might deter use of linux at all, and on the other it'll just be a general 'bad business practice to use linux in our commericial products' type stigma.
~/ssh slashdot.org ssh: connect to host slashdot.org port 22: too many beers
...think of the number of APs they'd sell based on this fact alone. They obviously should abide by the GPL, but they should also shout it from the hilltops that their AP is Linux based and therefore a hackers delight (and the FCC's nightmare).
ER
The GPL has no real valid legal meaning until it has been tested in a court of law. I think the fact that no GPL violation case has ever made it into a courtroom speaks volumes!
They have been using Linux for a long time on their routers/AP's.
Anyone who have one must have noticed it.
The one thing to say to their defence is that they are usually "driver friendly" with their PCMCIA WiFi cards.
I just hope that now they will wake up, straighten up the mess, and start helping the community with supporting 802.11g in Linux for their NIC's.
Sorry - not true.
http://www.tivo.com/linux/index.html
Prevent email address forgery. Publish SPF records for y
What's got the higer priority: getting companies to print the GPL in their manuals, or getting companies to release high qulaity *ware with linux (for free!)
It could be argued that GPL compliancy will make it better, but as far as I can see it's still much better than what it could potentially have been.
Hi,
Sorry for the very lengthly posting, but I want to be as precise as possible in describing this problem.
Awhile ago, I mentioned that the Linksys WRT54G wireless access point used several GPL projects in its firmware, but did not seem to have any of the
source available, or acknowledge the use of the GPLed software. Four weeks ago, I spoke with an employee at Linksys who confirmed that the system did use Linux, and also mentioned that he would work with his management to ensure that the source was released. Unfortunately, my e-mails to this
individual over the past three weeks have gone unanswered. Of course, I also tried contacting Linksys through their common public e-mail accounts (, ) to no avail.
However, it is hard for me to know if my contact in the company has just gone on a three week vacation (and not set an auto-responder), or has been asked to not answer anymore mail on this subject. Also, I should note that I don't own this product, so I can't determine if the source is shipped with it.
However, I have gone through all the available information on the Linksys website, and can find no reference to the GPL, Linux (as it relates to this product), or the firmware source code. Also, the firmware binary (see below) is freely available from their website. There is no link from the download page to the source, or any mention of Linux or the GPL. Finally, it would be
strange if the source was included in the physical package, as my contact at Linksys was initially unaware Linux was used in this product.
The following steps can be used to determine the exact nature of the possible GPL violation.
1. Go to the following URL:
http://www.linksys.com/download/firmware.asp?fwid= 178
2. Download the "firmware upgrade files":
ftp://ftp.linksys.com/pub/network/WRT54G_ 1.02.1_US _code.bin
(MD5SUM: b54475a81bc18462d3754f96c9c7cc0f)
3. While it is downloading, confirm that there is nothing on the webpage to indicate that this binary contains GPLed software.
4. Once the download is complete, copy the contents of the file from offset 0xC0020 onward into a new file.
dd if=WRT54G_1.02.1_US_code.bin of=test.dump skip=24577c bs=32c
5. Notice that this file is an image of a CramFS filesystem. Mount it.
6. Explore the filesystem. You will notice that the system appears to be based on Linux 2.4.5. Incidentally, there is at least one other GPLed project in the firmware: the BusyBox userland component: (http://www.busybox.net/)
7. The Linux kernel (I think) is mixed up with a bunch of other stuff in: bin/boot.bin
You might want to know why I am interested in getting the code for the kernel used in this device.
There's been some discussion here about Linux's lack of wireless support for a few of the newer 802.11b and (nearly?) all 802.11g chips. Incidentally, Linux has excellent support for at least one manufacturer's wireless family.
The following Broadcom chips all appear to be supported under Linux -- if you happen to be running Linux on a MIPS processor in a Linksys router:
Broadcom BCM4301 Wireless 802.11b Controller
Broadcom BCM4307 Wireless 802.11b Controller
Broadcom BCM4309 Wireless 802.11a Controller
Broadcom BCM4309 Wireless 802.11b Controller
Broadcom BCM4309 Wireless 802.11 Multiband Controller
Broadcom BCM4310 Wireless 802.11b Controller
Broadcom BCM4306 Wireless 802.11b/g Controller
Broadcom BCM4306 Wireless 802.11a Controller
Broadcom BCM4306 Wireless 802.11 Multiband Controller
This list was produced by running strings on:
lib/modules/2.4.5/kernel/drivers/net/wl/wl.o
I am trying to determine exactly how tightly coupled these drivers are to the kernel.
As an aside, I know that some wireless companies have been hesitant of releasing open source drivers because they are worried their radios might be pushed out of spec. However, if the drivers are alre
If they're not rewriting the source code, using it in a form that they themselves obtained it in (pre-compiling), they might not have to provide source if they disclose their source location. Also, if they were smart enough to create independent kernel modules for the rest of the device, they wouldn't have to release those anyway.
It would be nice if they included at least a copy of the GPL and a linux installation CD in the back of their manual though, since that would be a way of distributing the code, if not more than the code, and would probably make them in compliance.
Hell, TurboLinux install CDs came with hardware that Linux couldn't even use, for a while...
Do not look into laser with remaining eye.
A couple follow ups on the kernel mailing list:
A very interesting bit from the busybox maintainer, who has evidently already sent linksys two letters
A post outlinging the possibility that Belkin is also shipping GPL'd code
A few other people are throwing their two cents in, but those were the most interesting, code be an interesting test of corporate policey, and the ability of the GPL to withstand a court battle.
Here's their reply:
--K.
Sig: Bad people happen. Try to avoid being one of them.
Why does everyone always assume that any embedded device running Linux must have, in some way, violated the GPL?
I worked eight years as a firmware engineer. In the last three, I dealt almost exclusively with Linux.
And I can assure you that we didn't need to change any GPL'd code to get what we wanted. Even on fairly custom hardware, we could find preexisting GPL'd code to do 99% of what we needed (and wrote user-space drivers where possible, and modules where not). No need to release anything if you don't change anything, to comply with the GPL.
Whether ethical or not, plenty of legal ways of circumventing the intent of the GPL exist. And, like it or not, eliminating those loopholes (which would basically require forcing any program that runs under linux to use the GPL) would kill Linux in the business world.
The source might be available but only mentioned in the documentation. He states in his message that he doesn't own one of these units so he doesn't have access to all the information that an owner of the unit would. The GPL doesn't require that the source be distributed with the binaries only that it be available. That doesn't mean downloadable. It's possible that people who have purchased the unit have instructions contained within on how to download or order a CD with the source code.
Prevent email address forgery. Publish SPF records for y
And I'm sure you know this, but they are not required to release all of their source code, only the code for gpl parts of tivo. Just because the OS is linux doesn't mean they have to release code for everything running on it.
If Linksys did things right, however, those drivers will be compiled as modules, which they don't have to release source for (well...unless they started from GPL'ed driver source, of course).
Aside from the drivers, everything else interesting should be implemented as applications, which can be closed source on Linux.
So, don't get too excited: becoming fully GPL-compliant might consist of them simply putting up source for a stock kernel, and putting something about the GPL in their documentation.
If they didn't make changes to GPL'd programs, and if they acknowledge that they use linux and specify what version etc, they don't have to release the code. Technically you could ask them to send you a copy of 2.4-20.tgz, and they could charge you reasonable costs for doing so.
This assumes they didn't alter GPL code.
Two points. I always have two points.
First, as someone else already said, just becuase it uses a linux kernel doesn't mean they modified anything, it could be a stock kernel. If they wrote userspace drivers and/or kernel modules using existing interfaces for their custom hardware, they are not obligated to release anything.
Secondly, if they weren't abiding by terms they had to according to the GPL, it would be COPYRIGHT violation, not license violation, as if you don't comply with the license, copyright law says they can't redistribute it. I know it seems like a silly point, but it's not.
People talk about the GPL being "tested in court" and whatnot.. but the fact is: If you don't accept the GPL as valid, then copyright law still stands, and says you can't redistribute, or make derivitive works. A judge can rule the GPL as invalid, but that would mean that nobody had any rights to redistribute anything.
It's not a license you had to accept and agree to in order to use the product.. so you can't "violate" it.
Linus, or any other kernel developer could go to linksys, and say "I have not granted you permission to use my copyrighted work, please demonstrate why you think you are allowed to do this". They can then either cite how the GPL allows them to do what they do, or concede that they have no right to distribute.
So as unclear as I can be.. it's not a GPL violation... and people are not forced to release code because of a nonexistant GPL violation... although that might be an acceptable remedy to all parties in most cases. They could also be forced to simply stop doing it.
Even before they had an FTP site, they would ship promptly and for a very reasonable fee, source on CD-R.
The real guts of the product, including all substantial video-related drivers, are in loadable modules. The kernel and provided source have just enough hardware-specific code to calm the hardware down enough to allow the kernel to get started.
As far as I can tell, Tivo have done everything they need to under GPL.
[Disclosure of interests: I own a small amount of Tivo stock. When I ordered the source code way back when, they included a nice Tivo hat along with the CD.]
Hmm, denied access for me, but when I nmap it and try and fingerprint my DI-614+:
Starting nmap V. 3.00 ( www.insecure.org/nmap/ )
Interesting ports on (192.168.0.1):
(The 1600 ports scanned but not shown below are in state: closed)
Port State Service
80/tcp open http
Remote operating system guess: LinkSys WAP11 wireless AP firmware ver. 2.2
Nmap run completed -- 1 IP address (1 host up) scanned in 8 seconds
hmm..
but setting konqueror or mozilla to send MSIE identification HTTP directives did the trick.
Is it actually required, or do they just say it is? Have you tried a different browser?
You can't judge a book by the way it wears its hair.
However, the GPL still requires that they provide source, even if they have not modified it. If you redistribute, you must provide source, or at least a written offer for the source.
.. they are obligated to provide a copy of the source (sans their changes, if they are not within the scope of the gpl)
You can (section c) simply pass along the written offer YOU received, if you are simply redistributing, and not modifying, but only if it's NON-COMMERCIAL, and only if you yourself received the written offer. IF they are using stock linux kernels, there is no written offer, so
3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following:
* a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,
* b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,
* c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.)
But his assumption about how kernel modules work is completely wrong.. though the INTENT might be something like he describes, it's not what Linus said.
The Linux kernel license says you can code proprietary modules, as long as the interface is part of the stock kernel (in other words, GPL)
So you can make a proprietary network driver, as long you don't haev to modify the main kernel to get it to work; you are under no obligation to release that source at all. If you have some way of hacking an entire realtime OS to look like a network drive to the kernel, that would comply.
So, linksys should be redistributing the linux sources, however, if their custom work is confined to modules & userland code, they are under no obligation to release the source to those drives. And as linux already has a kernel interface for network & wireless network, there is no reason to expect them to release that code.
Yet, if Linksys had stolen Windows code and used it in their routers, Balmer would be calling the lawyers on them. You can use GPL'ed code all you want, but you can't abuse GPL'ed code, just like you can't abuse proprietory code. At least the FSF tends to be nicer about working with potential violaters than most commercial entities are.
A deep unwavering belief is a sure sign you're missing something...
writing ${vowel}e is an alternative way of expressing a character with an umlaut over it. Its perfectly valid German.
Why not fork?
Just yesterday, I updated the firmware and reconfigured one of these with Konqueror running from a Knoppix CD. The only issue that I had was that Wine was not able to run their firmware update tool, which is just a GUI tftp.exe and the firware.bin. With Knoppix, I just did a tftp put firmware.bin and all was well.
Unless they modified GPL'd source code, I don't see why they would have to redistribute the source or restate the GPL.
If I put Linux on one computer and wrote software that ran on top of it, without modifying any of the GPL'd source, I would have no such obligation. And I could sell that computer to someone, with Linux installed, along with my own software, and still not be obligated to release any source. Why should it be different if, say, I put it on a million smaller computers and sold them?
ObGPLQuote:
Carousel is a lie!
Not only are they in violation of the GPL, they are literally costing SCO BILLIONS OF DOLLARS by violating SCO's copyrights, patents, or some contract with IBM by releasing a Linux based product! Quick, someone alert McBride!
Do you have ESP?
Just been hacking around a Belkin 54k WAP/Router box I bought a few weeks back. NMap identifies it as Linux 2.4.0-2.4.5.
...
The Belkin Networking downloads page gives an updated firmware for this. Sure enough, at offset 790393 there's a CRAM Filesystem. Mounting that shows a stock 2.4.5 kernel with three custom modules (one for the wireless card, one for the ethernet card, one for the front panel LEDs). These three modules aside it looks like non-modified GPL stuff.
However, reading any of the binary files shows the string : "GCC: (GNU) 3.0 20010422 (prerelease) with bcm4710a0 modifications" - Modifications you say? Oh dear, I don't remember seeing a Broadcom patch submitted to GCC
To be accurate, TiVo has not (and never will) released the source to the non-GPL'd stuff that makes the Tivo what it is... the kernel modules and "tivoapp". The source to all the GPL components and the entire linux kernel running on the tivo are available.
If the code on the Lynksys needs to be released under the terms of the Linux license, then replacing that code with Cisco code in future releases would not change their obligation to release the code for a current product. Rather, it would be an admission that they did indeed have an obligation to release the current code, an would leave them with an inferior produvct while not removing that obligation to release the source for the good code.
I'm an American. I love this country and the freedoms that we used to have.
Unfortunatly there are many, many misconceptions when it comes to the GPL. One of the previous comments stated that Tivo used Linux but had not released their source code. The reason is that they don't have to! I would be surprised if Linksys would be required to release their source code under the GPL.
The misconception that I see the most is that because a product runs on top of Linux, or uses the Linux kernel then the product is also GPL'd, not so. If the product has changed the sourcecode for Linux, those changes are covered under the GPL. This is why companies like Tivo are not required to release their source. The Tivo software was written without using any existing GPL'd code as it's base, therefore it can be covered under any licensing agreement the author sees fit.
As for Linksys, I'm willing to wager that they implemented all of their code as kernel modules. So if ask for the source code under the name of the GPL, all they are obligated to give you is the source code for the Linux kernel, sin any kernel modules they've written themselves. Kernel modules can be licensed any way the author sees fit.
-Runz
<BusyBox maintainer hat on>
S _code.bin
./cramfs.image /mnt /mnt/bin /mnt/bin/busybox /mnt/bin/busybox | grep BusyBoxd d /mnt/bin/busybox
This is what I did to verify that the Linksys firmware was violating the GPL....
#!/bin/sh
wget ftp://ftp.linksys.com/pub/network/WRT54G_1.02.1_U
# I noticed a GZIP signature for a file name "piggy" at offset
# 60 bytes from the start, suggesting we have a compressed Linux
# kernel
dd if=WRT54G_1.02.1_US_code.bin bs=60 skip=1 | zcat > kernel
# Noticed there was a cramfs magic signature at offset 786464
dd if=WRT54G_1.02.1_US_code.bin of=cramfs.image bs=786464 skip=1
file cramfs.image
sudo mount -o loop,ro -t cramfs
ls -la
file
strings
/usr/i386-linux-uclibc/bin/i386-uclibc-l
-Erik -- --This message was written using 73% post-consumer electrons--
Does just using GPL software really mean you have to distribute the source? Could Linksys claim that they are not, in fact, distributing GPL code in any form, but are actually just using GPL software in their hardware?
From what I know about Linksys products, there's no reason they shouldn't work fine with any web browser that supports Java and the usual W3C security protocols. (And in fact, there seems to be a fairly active Linksys/Mac user community.) But if they say, "We only support Windows and IE" they drastically narrow the skill set they have to hire/train their support people for. Costs them a little in non-Windows sales and maybe Mozilla diehards, but not enough to justify doubling or tripling their training budget!
Comment removed based on user account deletion
I only discovered this by running 'strings' on the firmware and found references to uClinux and a variety of other GPL stuff.
There is NO mention of the GPL in the product manual or on the packaging which contains the CD with a backup copy of the firmware.
I asked for copies of any GPL sources (and associated changes) which the MegaRAC G2 used - to their credit, I received a very nice diff which only covered changes to files which already exist in the uClinux distribution.
Unfortunately, those changes include the addition of header files which the modified kernel relies on - header files which I wasn't given and further requests for them have been ignored. So, even with the 'source' which I was given, I can't use it to produce an identical binary as to that contained in the firmware image which was supplied to me.
For those readers who are interested in purchasing one or more MegaRAC G2s, I suggest you ask your AMI dealer why it took them over eight weeks to patch a vulnerability which allowed *any* remote user to gain full access to the system console and also why the product is prone to frequent hangs which are not recoverable unless you unplug all power from the server and card until the onboard battery drains.
The vulnerability is so simple to exploit - start up the GTK+ remote console utility that came on the CD and point it to the IP address of any MegaRAC G2 card.... that's it. No prompt for a username or password. Nothing. Instant console access.
"Be vewy vewy quiet, I'm hunting wuntime ewwors!" - Elmer Fudd
Bzzz. Wrong. Section 3 of the GPL:
(emphasis mine)If they've distributed executables which would require compiler modifications, those compiler mods would also have to be distributed. The exception above about not distributing the compiler doesn't apply, as the GCC with Broadcom modifications isn't "normally distributed" with the Linux kernel.
One of my switches runs IOS on a PowerPC 403GA, running at either 25 or 33 MHz.
The linksys AP has a MIPS processor, which is probably running at 125 MHz.
It could run IOS without breaking a sweat.
Apples and oranges. On your switch, IOS just manages the system; the heavy lifting (frame forwarding) is actually done by ASICs for that very purpose.
On another note though, I'm not sure why the original posted is calling IOS "bloated" -- perhaps today there are a number of features that are not necessary for the core purpose of the box, but they don't typically add "overhead" to the box itself.
Most Cisco boxes are "underpowered" in terms of CPU, but they still manage to do the job.
The new(er) Cisco Aironet access points migrated away from the old VxWorks-based OS to IOS (see: Aironet 1100 are shipped as such, Aironet 1200 have a conversion kit)
Hi,
A few months ago I was poking around their "network file server in a box" - I forget the model number, but it is shoebox sized and purple.
I can say for a fact that they used Linux and a number of other GPL bits in this box. I almost sounded the alarm, but I was way too busy with other things.
What I found:
1) Open case
2) Remove small compact flash card that contains the software for this product
3) Install compact flash card into my notebook
4) Use cfdisk, notice that there are three ext2 filesystems
5) Mount ext2 filesystem
6) See that they are using a 2.4.x kernel
7) See that they are using GPL print spooling software (I forget which)
8) Try to find _any_ notice about the GPL in the docs or via the debug serial port _NO NOTICE_.
9) Visit linksys website to find GPL required sources, not there.
If anyone wants more details please message me off list.
Think of this as a check on honesty of GPL adherents. If you don't make the offer or even admit that there is GPLed code in your product, you are probably doing it for a reason (i.e. you are hiding something). If they really aren't hiding anything, and it was a simple oversight, then why don't they reply to emails about it and just point out that no modifications were made, and stick a source mirror up on their FTP site? The cost is practically nil to them to adhere to the license, assuming they are playing by the rules, so what's the big deal?
Even if Linksys complies after some cajoling, this demonstrates the practical "loophole" we have been witnessing for the past 2 years:
.tar.gz's because I do everything possible to be able to use the stock products. Why? These are long term products, life spans of about 10 years. Living with a set of patches for every damn tool we need... I have better things to do. If there's a way to avoid changing the origian sources, we'll go ahead with that one.
companies use GPL'ed stuff, and if they get caught, they (often) comply. For each violation that gets caught, there might be several that get away.
So what? I mean, I'm all pro GPL and also a GPL sw coder. I work for a company that manufactures slot machines that run linux and loads of other GPL'd software aswell as our own apps. Technically we don't distribute the slotmachines so we're not bound by GPL, and if we were, we'd just put a simple ftp server that would have the
And what's the real beauty is that when we discover bugs or make future enhancements or such changes, we try real hard to get them into the actual sw package, again just to avoid having to maintain a large set of patches.
And for example Linksys failing to offer a stock kernel tar ball in their site doesn't sound that serious to me. A proprietary sw mogul using gpl'd code in their product, now that would be a serious violation.
1 Earth is warming, 2 It's us, 3 it's royally bad, 4 we need to take action NOW
Yes, I know the guy is almost certainly a troll, but this won't take long.
"Part of this license states that any changes to the kernel are to be made freely available.
Unfortunately for us, this meant that the great deal of time and money we spent "touching up" Linux to work for this investment firm would now be available at no cost to our competitors."
Sorry, thanks for playing. It merely states that you have to make the source available to those you give binaries. You can make all the changes you want to the kernel for a client, as long as you give that client the source as well. No-one else need have it.
In the instance of kernel changes, it makes a hell of a lot of sense, too. Lets assume for a moment that you weren't a troll. This company would have a custom kernel, but without the new modified kernel source they couldn't install anything else that would also patch the kernel, or even rebuild when bugfixes are released.
"I Know You Are But What Am I?"