Recently, there has been some flurry of controversy regarding the One Laptop Per Child (OLPC) project. For those who haven't yet heard of OLPC, the project, chaired by Nicholas Negroponte, aims to provide children with laptop computers, who otherwise couldn't afford them, at a low price point. The laptop computer has also been referred to as the "$100 laptop."
The controversy surrounds the wireless chipset slated to be used in the OLPC laptop, the Marvell 88W8388 chipset. It has been alleged by at least three OpenBSD developers, namely Jonathan Gray, Theo de Raadt, and Bob Beck, that Marvell is withholding the information needed to write a proper device driver for this device. They contend that both Marvell and OLPC are hurting Free Software by this action. Their objections were published on the OpenBSD Journal, http://www.undeadly.org, along with email addresses of some of those involved with OLPC. One of those people was Mr. Jim Gettys, Vice Presndent of Software Engineering for OLPC.
As someone who admires the goals of the OLPC initiative, I decided to contact Mr. Gettys himself. I sent him, and the other folks whose email addresses that Mr. de Raadt published, an email asking some questions about this and imploring them not to let this become another "Broadcom situation." I didn't expect I'd get a response from anyone.
To my utter surprise, I got a response from Mr. Gettys the very next morning! There was one more email exchange between us, basically me asking him for some clarification, and him answering in quite short order (it was this morning--Saturday, October 7, 2006). The clarification questions that I had asked him in my second email to him were the following:
Could it thus be said that Theo is asking for Marvell's actual *firmware* source code, and not that for any "operating system kernel-space" code akin to what Broadcom did?
Could it also be said that Marvell is letting us redistribute the firmware image (just the image, not its source) without restrictions, say, with Debian or OpenBSD?
Will Marvell publish the specs (not its firmware source, that's not needed) for FOSS developers, e. g. Jonathan Gray or even the admittedly abrasive Mr. de Raadt, to write their own drivers?
Mr. Gettys's candor with me was actually quite expansive and direct, and I thank him for this. I then felt it my duty to get to some serious Googling to find out what was really going on. It was most educational. He explained to me, and generously forwarded other email correspondence to corroborate, the following answers, paraphrased by me for brevity:
The Marvell 88W8388 chipset is currently the only chipset that does what it does, i. e. allow low-powered "mesh" wireless networking while the laptop's host CPU is in shutdown (sleep) mode. In so doing, the chipset allows OLPC laptops that are turned off to do double-duty as wireless access points themselves in a much lower-power mode than if the main CPU were active.
We do in fact have a Free Software device driver for use with the kernel Linux. It is released under the GNU General Public License, version 2, apparently written by Marvell itself. The driver is called "Libertas" and is in OLPC's git repository.
Marvell currently has a proprietary firmware image that must be uploaded to the chipset. This firmware runs on the chipset's own ARM processor in the chipset's own RAM, not the host system's CPU or operating system kernel.
Marvell does not at this time allow free redistribution of the required firmware image, but OLPC is working with Marvell to get the right wording of the license so that this can occur. Marvell has expressed a desire to do this, and OLPC expects that this will be done long before the machine is generally available.
OLPC is working with a company called Meraki to create a totally new, open firmware for the 88W8388 chipset. There is not yet a timeline for when this will be available.
OLPC and Marvell are still twisting arms a bit about chipset documentation. Work on this continues, with OLPC's hope of an answer of "yes" from Marvell.
Additional information about this can be found at Mr. Gettys's blog, available here:
The unrestricted right to distribute the binary firmware image is crucial for Free Software platforms to use these wireless chipsets. Some rather prominent manufacturers, e. g. Broadcom, Texas Instruments, and Intel, among others, are not allowing this. Access to the source code for this binary firmware image is not needed or even requested, but it certainly wouldn't be rejected if offered.
Certain Taiwanese manufacturers, such as Ralink and Realtek, do allow unrestricted redistribution of the binary firmware image. Thus, these binary firmware images are in fact included with OpenBSD and can be included with any other Free Software operating system.
Documentation for the chipset is critical for Free Software authors to write independent device drivers for the devices. Some manufacturers, such as Ralink and Realtek, have gladly provided the OpenBSD team with this documentation. Many others have steadfastly resisted.
After extensive research, I have found the following:
Yes, there is indeed a GPL'd driver for this chipset in OLPC's git repository. It is available for public inspection and download and has been for at least four months, maybe longer.
The OpenBSD team appears to have sufficient documentation to write a device driver today. Damien Bergamini has described his work writing a specifications document for the nForce Ethernet driver from the Linux "forcedeth" driver. Bergamini then wrote a BSD-licensed driver using those specifications. Marvell's public publishing of a specs document would simply speed up the process some and would definitely show good faith, but failing to do so does not appear to be prohibitive.
The one piece missing today is the unrestricted right to redistribute the Marvell firmware. The aforementioned OpenBSD team members are not asking for the source code to this firmware, as it is not required to make the card work. Marvell today does not yet allow this, but OLPC and Marvell are working to make that happen soon.
At OLPC's request, Marvell already has re-engineered the chip so that it would conform to the publicly-available SD Association's SD-HCI interface specification, for the specific end that we could use a publicly available Linux SD driver. Not doing so would have required reverse-engineering of at least that part of the chip, due to other closed SD Association specifications.
Mr. de Raadt has a history of abrasive and belligerent behaviour toward those who don't necessarily share his own personal opinion. While I happen to agree with his position that hardware manufacturers really should publish hardware specifications as Ralink and Realtek do, his hostile tone has been off-putting to more than one technology decision-maker, including Mr. Gettys (he made that very clear to me). One has only to do a short amount of Googling to find examples of this behaviour.
I must myself say a word about point #5. Quite a few years ago, when Mr. de Raadt was calling for the donation of Gigabit Ethernet cards, I bought several, intending to donate a couple of them to the OpenBSD project. This was back when "Gig-E" cards were very expensive, usually well over US $500. While there was a GPL'd Linux driver for the card, Mr. de Raadt claimed that, since there was no chip documentation publicly available, he was turning down my offer. That part's fine. What I found disturbing, though, was his hostile tone toward me personally, almost as if it were my personal fault that there were no published docs. I totally lost any desire to assist the project further in any way, and it remains that way to this day.
Recently, he loudly complained about how the OpenBSD project was in financial trouble. Given his spiteful attitude, it is no wonder! Treating people like they are "losers" simply because they do not at the moment agree with you is not how to win donors and influence hardware makers. If I were the head of, say, Cisco or Sun, I, too, would probably hesitate before extending a hand to him, in spite of what he has done for Free Software. A good attitude goes a long way.
Broadcom is, unfortunately, making tons of money without the OpenBSD team, and in spite of the fact that I personally use GNU/Linux on nearly all of my machines. Same for Intel and Adaptec. Even Linus Torvalds, no stranger to speaking his own mind directly, has referred to de Raadt as "difficult". Before he took it down, I had read the entire thread, which de Raadt used to have posted at his Web site, about his disagreement, and eventual expulsion from, the NetBSD project, a project of which he was himself a founding member. Having read it all, I can confirm that his acidic attitude was absolutely a factor in that decision.
So, what do we do about the problem of closed hardware specifications, binary-only drivers, and lack of rights to redistribute firmware images with Free Software? Is Mr. de Raadt's way really the only way?
If we want openly published hardware specifications, and the right to freely redistribute binary firmware images, then we need to ditch the losing attitude and start educating the end-users who buy the computers. Remember that the likes of Broadcom, TI, ATI, nVidia, Conexant, and even Marvell do not consider us end-users their "customer". It is the computer manufacturer (Dell, Lenovo, HP, and so on), who presents chip makers with very large purchasing clout, that is their customer. Our job as consumers is to stop buying from these computer manufacturers, and to tell them why we are stopping, until they change their purchasing decisions. We must stop acting like sheep and just buying blindly.
Here is one excellent pre-purchase question to ask your computer maker. "Is everything in your computer guaranteed to work with totally stock Debian without anything extra required?" They likely haven't heard of OpenBSD. They probably have heard of Debian, though. It is very important to ask this question before you buy.
Has Mr. de Raadt done good for the Free Software community? There can be no doubt that he has and continues to do so. Like many people, I use OpenSSH on a daily basis and even OpenBSD from time to time. The team has reverse-engineered several pieces of hardware, for which there were no published specifications, from companies that have seemed ambivalent or even hostile to Free Software (e. g. the Atheros wireless chipset). The project that he leads is a shining example of how to program securely and is in harsh contrast to what, say, Microsoft routinely puts out; would that that company would start following similar auditing practices! The OpenBSD team repeatedly shows us that it can be done, and well, and even documented well (you should read their very extensive man pages!).
This time, though, Theo de Raadt is aiming his hostility at the wrong people. It is clear that OLPC is trying to do a good thing here, and it appears--at this time--that Marvell, too, intends to do the right thing. In this case, de Raadt is emphatically not helping Free Software. He has certainly turned Mr. Gettys away from him, and very likely the Marvell Corporation as well.
Copyright (C) 2006 Terrell Prude', Jr.
Verbatim copying and distribution of this entire article is permitted in any medium without royalty provided this notice is preserved.