The Problem With Driver-Loaded Firmware
Kadin2048 writes "If you've gone to a big-box store and purchased a wireless card recently, you might have had some trouble getting it to work under Linux, or any non-Windows OS for that matter. One reason for this is that more and more manufacturers are producing hardware that are useless without proprietary firmware. While these new designs allow for lower parts counts and thus lower cost, it presents a serious problem for F/OSS software because it can sometimes guarantee no out-of-the-box compatibility. Jem Matzan has produced a detailed article, "The battle for wireless network drivers," on the subject, including interviews with manufacturers' representatives and OS developers, including Theo de Raadt. The bottom line? In general, Asian hardware manufacturers were far more responsive and liberal about firmware than U.S. manufacturers (Intel included). Look for more firmware issues in the future, as not only wireless hardware, but regular wired Ethernet cards, take the driver-loaded firmware approach."
I have always wondered if part of the reason this sort of thing is so popular might be because it curries favor with MS. I'm certain MS is NOT displeased with this sort of thing. Can we say "winmodem"?
I recently purchased a Dynex DX-WGDTC PCI card from Best Buy for 35 bucks, the chipset had some sort of aluminum heat sink over it. I took a gamble and bought it anyway with a feeling that it was manufactured by D-Link. Turns out I was right, it has an Atheros 5212 chipset and I was ecstatic. The madwifi drivers work spectacular with this card. A patched madwifi-ng driver will allow you to crack WEP using ARP injection *wink* I recommend you go out and buy one immediately.
I've asked a thousand times and never had answered very well:
List wireless cards, vendors, and prices that I can obtain today, which do work with Linux.
The compatability lists on the linux wireless sites are useless -- sure there are lots of cards that work, but many of them
have been discontinued for years, some were only available in certain locales, and some, if you found the model, have had their
chipsets changes.
I know of no resource that would allow me to successfully pursue wither of the following use cases:
1. I want to purchase an 802.11g device guaranteed by the vendor to work with some version of Linux.
2. I want to make a purchase order for a wireless device by vendor and part number, for a corpoarte deployment.
I consider my wireless cards to be rare and treasured artifacts. I didn't upgrade my notebook because I knew I was extremely
lucky to get a laptop with a built-in Prysm2. The situation *sucks* far worse than the winmodem situation ever did.
-fb Everything not expressly forbidden is now mandatory.
Correct me if I'm wrong -- the problem is that the firmware doesn't come preloaded on the hardware. So basically you have a hardware platform with no driving software -- essentially one big, blank programmable ASIC with specialty hardware depending on what the card is.
One of the major complaints seems to be that the loadable firmware is not redistributable, and anyway it's full of bugs and other crazy stuff. It occurs to me that maybe these cards are like CPU platforms -- lots of hardware, no driving software. For one particular piece of hardware -- Intel CPU's -- some bright guy named Linus wrote some "firmware" to make that platform run.
So couldn't some bright people get together, use the programmable hardware as a starting point, and develop their own firmware? I guess you wouldn't have to develop firmware for every blank hardware platform that was manufactured. Just the ones with the neatest hardware features.
--Rob
Towards the Singularity.
Simple. Start a Free Hardware Foundation.
Now don't say it's not possible, since there's really difference in producing SW or HW for free from the economical point of view.
If you think there is, you are wrong.
In general, Asian hardware manufacturers were far more responsive and liberal about firmware than U.S. manufacturers (Intel included). Look for more firmware issues in the future, as not only wireless hardware, but regular wired Ethernet cards, take the driver-loaded firmware approach.
Let's take this from a slightly different perspective:
In general American hardware manufacturers were far more pigheaded and close-mouthed about firmware than Asian manufacturers (Intel especially.) Look for more firmware issues in the future, as Asian corporations continue to take over the remnants of the U.S. manufacturing sector, with U.S. companies stubbornly trying to hang on to their "intellectual property".
Maybe if these idiots stopped listening their legal teams (and Microsoft!) so much, started worrying less about developers using their oh-so-precious "intellectual property" to make their own products useful to even more customers we wouldn't be in this fix. American tech companies are shooting themselves in the foot, having forgotten that continuous innovation and fresh ideas, not hordes of attorneys, are what drive a tech sector to competitiveness. Meanwhile, China is walking off with the the entire candy store.
There are only two ways to beat your competition in the modern world: out-lawyer them or out-think them. We used to be in the latter camp (Yankee ingenuity, and all that) but not any more.
Rather depressing, really.
The higher the technology, the sharper that two-edged sword.
According to the article, there are three companies that have actually worked with the free software community on drivers. Here is the list:
Ralink Technology
Atmel Corporation
Realtek Linux drivers here
Vote with your money, folks. If you would like to see companies cooperate with the free software community, reward the companies that do so by buying their products.
If you know of a particular piece of WiFi hardware that works particularly well in Linux or BSD, please follow up here so we all know what to buy. (See also this list.)
Basically everything powered by ZyDas and RaLink-Chipsets works flawlessly with GNU/Linux and the Free/OpenBSD. You can grab those off of EBay dirt cheap in large quantities, mostly from Power Sellers/commercial shops. Big-brand vendors with "the good stuff" on their boards I've personally seen yet were GigaByte (for MiniPCI), ASUS (PCI), and a crapload of others with ZyDas and Prism (for USB - including, for instance, NetGear).
There's also an emerging (well, maybe they exist for ages, but I've not known the company up until recently) manufacturer for networking gear called "TP-LINK" which sells virtually everything from RaLink. I happen to have a "TP-LINK TL-WN321G" (usb2 full speed) adapter which features a RaLink chip supported by the rt73-usb driver just perfectly. Cost me 9 Euro in germany.
Hth.
:%s/Open Source/Free Software/g
YTARY!
These articles are always frustrating to me, because I can read about chipsets that work, but not about which cards support them. It's hard to go to newegg and buy a card, because many of the cards that have the good chipsets come in different versions with bad chipsets.
My ancient orinoco silver pcmcia card stopped working with ubuntu as of edgy. I don't know why. It works with other distros. But it's not 802.11g, and it doesn't do WPA, and although it's not important to me, it's not great for scanning.
So I want to buy a card. I'd order one today, but I don't know what to get.
I know our buying power as a community is small, but I'd think that some no-name card manufacturer would find it worthwhile to make a card that has a picture of a penguin on it, and that is fully supported by free software. I'd pay a little more for a card that I know will just work, and that will continue to work.
Is that it leads to dupes.
It's official. Most of you are morons.
Building a standards compliant intelligent machine is often more expensive than building an ad hoc machine, if for no other reason than the cheapest parts can always be used, and there is no need to support all users. The flip side is that a specific driver must be created for each device.
I had an incident that nicely illustrated this point. I bought a very cheap digital camera a few couple years ago. Now, any standard camera with a USB port should work with my Mac with no additional drivers. Perhaps not all the bells and whistles, but the PTP should work. As it turned out, this camera was not standards based, and, even worse, had undergone a revision so, even thought the model number was the same, it did not work with the drivers I did have. There only way to determine that this camera was not in fact the same camera was to open the hermetically sealed bomb proof packaging, open the camera, and use a magnifying glass to inspect the product code.
Which just shows that if one wants the cheapest products, then MS Windows is the way to go. Manufacturers can design to the platform, write a few drivers, and sell to the masses. So the point of *nix, and perhaps the Mac,is not to provide the cheapest product, but instead long term stability. I have every reason to believe that Canon camera will work with my computer for a long time, because I am not going to lose connectivity when the next OS upgrade comes around. The standards will still be supported. I have SCSI devices from the OS 9 days that still work perfectly with OS X. I have no idea if those same devices, which required a special driver for MS Window, have continued support for current MS products.
So really all that can be said is don't buy the cheap products. If one has a choice between the standard printer and generic printer, pay the extra money for the generic printer. Support the standards that will allow *nix to prosper.
To specifically address the wireless thing, the standard is certainly in flux, and no one can be expected to support a standard that does not necessarily exist. That said, it should still be possible to assemble a standard compliant box that is not targeted towards the MS Windows OS, perhaps at additional costs.
"She's a scientist and a lesbian. She's not going to let it slide." Orphan Black
Madwifi drivers are not free, as they require a binary-only, proprietary Hardware Abstraction Layer (HAL, not to be confused with freedesktop.org HAL/hald) running, which is in fact even worse than platform-agnostic firmware which is just shoved over the bus to the device and running on an ASIC there. The HAL needs to be present and compiled for every Platform you're going to run the Atheros-powered card on.
The OpenBSD-folks have developed a free as in speech replacement for the binary-only HAL provided by Atheros, but madwifi did not care to adopt it at all - which leaves their true intentions somewhat dubious to me (and a few concerned others).
Bottom line is: I would not buy Atheros-based cards, and rather go for RaLink or ZyDas. Though watch out, as the latter company recently has been bought by Atheros, therefore suggesting that either their future devices will come with equally dumb restrictions/dependencies applied on their drivers, or their excellent product line vanish completely.
:%s/Open Source/Free Software/g
YTARY!
Looks like RaLink might be the only player on the block soon enough...
Listen to my music.
This sounds well in theory, but in practice it will not work. There is a lot of very specific information required to implement firmware, which is not even available from the open-source-friendly vendors. If you think, this shouldn't stop smart people, then try it on your own.
I write together with others the ZD1211 WLAN driver for the Linux kernel and though we have a lot of useful information from the vendor, we have huge trouble to match the performance of the Windows driver. If you think that is our fault, try to do better. Keep in mind that the developers of the Windows driver, have access to the hardware engineers, know all the registers on the chips and have access to test labs and equipment. All the information we have about the hardware registers is the open-source driver of the vendor, but you have to reverse engineer the semantics of the vendor driver.
From my perspective the PC becomes more and more a closed platform, which makes it more and more difficult to compete with Windows. The reverse-engineering effort required becomes larger and larger, which should be spend on performance optimizations or feature requests. I personally believe that closed source drivers should be banned from the Linux kernels, because they support this trend to the closed PC platform.
The odds are extremely good that you have a RealTek NIC on your machine if it's an integrated part.
There's several reasons for this.
It's cheap.
It works VERY well, though not the best that money can buy.
It's completely open in it's documentation and relatively easy to design with.
Those three things make me think of using their part first- especially the open information part.
It's no different for any other engineer. I can assure you, they're about to get a batch of people
on the scene that are customers that will insist on this stuff being the case. Customers that are
are going to be big enough to not ignore and won't take "NO" for an answer as they'll find someone
else if they get it.
I am not merely a "consumer" or a "taxpayer". I am a Citizen of the State of Texas
Different creatures, these and winmodems. These are drivers that load firmware to chips on the cards that actually *do* something. A winmodem was really just a lousy sound card integrated with a DAA and thus could be plugged into a phone line. Nearly *all* of the signal processing was done by the host processor. No firmware was downloaded to winmodems, because nothing (or very little) was being done on the card itself.
With these, the cards actually still do processing for themselves, but the manufacturer decided to spare themselves the cost of the EEPROM/flash to store the firmware image, so they make the host download it to them.
Either solution is craptastic if you ask me, but winmodems were a different critter. At least with a winmodem, it would be possible to write your own drivers (in theory), since all you need is a good solid background in signal processing theory, some reasonably cool telco test gear, and all of the modem modulation specs. The hardware was relatively simple to figure out. With these, the hardware is a black box, likely riddled with bugs and gotchas, that would be almost impossible to reverse engineer without spending a good deal of time/money (possibly down to reverse-engineering the silicon itself).
Not only that, I have written OS/2 and FreeBSD drivers for it outside of work hours (but with permission).
There is ABSOLUTELY NO REASON why a FOSS driver cannot install the firmware. This is NOT the problem. There MAY be a problem with distribution rights, or with documenting how to load the firmware, but these are NOT what TFA described.
While one might like to have the spec for writing one's own GPL firmware, and I dont see prob;lems with that, I do see a problem with expecting $100,000 worth of firmware development for free, when the hardware can be replicat4ed for a $10, and the combination normally sells for $100. Ie there are products on the market where the majority of the value is in the firmware. and Yes, it does sometimes take more than three man-years of $100/day consultants to write firmware for a product with a predicted lifetime of 8-months. (Graphics card, anyone?)
Sent from my ASR33 using ASCII
I'm actually in the market for a wireless card for a desktop PC running Ubuntu Edgy right about now, actually.
Any clear winners? Does it matter which router I will be using? For that matter, I need to get a router as well.
(I figure I might as well ask here, since the topic is here. I would otherwise have just gone to the Ubuntu forum.)
Help! I'm a slashdot refugee.
Hardware makers have done a huge disservice to their customers by not producing stable chipsets. They'll have several revisions of say the "Linksys USB11" and each one using a different chipset. You go to Amazon and buy it and yet have no idea which version you'll be getting. To be fair there have been some new standards like WPA etc that possibly would have required a new chipset, but the vendors just went way overboard in their lack of regard for stability in their product lines.
I must have half a dozen wirless nics from PC Cards, to PCI cards, to USB versions and I think one of them is detected automatically without major problems in linux. And of course the one that is detected won't do WPA in linux so it is 100% worthless. Good thing I don't use Linux as my main desktop OS anymore. While things have gotten better, support for hardware on linux still sucks just as bad now as it did many years ago.
If you wanna get rich, you know that payback is a bitch
Original comment from five days ago
Parent is stealing comments to salvage his poor karma. Notice his extensive "Score: 0" comment history.
Quick clarification, seeing some of the posts here about "winmodems" and junkware-infested drivers:
Drivers run on your computer and let it talk to the device.
Firmware is "software" that runs on the device - typically code for on-board microcontrollers, Field Programmamble Gate Arrays (FPGA) and other "soft hardware".
There is nothing wrong with the idea of using driver-loaded firmware - it simplifies the device (no need for on-board flash memory) and makes it easier to fix "hardware" issues with an updated driver (with less risk of "bricking" a device by muffing a firmware update). Linux can actually cope with it quite happily - A lot of digital TV cards rely on driver-loaded firmware and its all fine and dandy provided that either (a) the manufacturer offers a download of the firmware or (b) it can be extracted from the windows driver CD or (c) some evil pirate has selfishly conspired to increase the manufacturer's customer base by posting an iffy copy.
There is an interesting question as to the status of such a "firmware blob" vis. the GPL (especialy the anti-TiVOization clauses of V3). Is it part of the software (thus tainting the free-ness of any drivers that require it) or part of the hardware (FPGA "software" is more like a circuit diagram than a program - and the "source code" might be useless without proprietary software from the FPGA manufacturer - and tweaking it might void the FCC/CE certification of the device)?
In a survey of 100 programmers, 111111 thought that duck-typing was a good idea.
I'm all for letting cooperative organizations know why I'm purchasing their equipment and not their uncooperative competitors (and notifying their uncooperative competitors to the contrary), but I don't expect it to mean that I'm in any way "voting" or leveraging some kind of democratic control over what is essentially a private tyranny.
However, if you read Theo de Raadt's informative talk slides, you'd see another reason why "voting" with your money isn't what it is made out to be (slides 24 and 25—"The OEM problem"). Maybe if customers in the US were organized to a scale never before seen and all demanding chips with complete and unrestricted documentation, we'd have more control as a group. This is worth pursuing, and if you are calling for this I would gladly join such an effort.
I say this is another reason because the general problem with the concept of voting by spending money means that rich people have more "votes" than poor people, so this saying tries to cast a egalitarian pall on an inequity. de Raadt addresses how much consumer power you have with regard to computer hardware by pointing out how OEMs leverage competition to insulate themselves from customer's wishes for chips we can operate without proprietary software. I mentioned this before but I didn't think it would come up as a repeat so soon.
Digital Citizen
Embedded systems have both space and boot time constraints, the more bloat you have to load after a reset (e.g. due to Watch-Dog reset) the worse boot times.
The article is pretty clearly saying that the problem isn't that firmware makers aren't releasing source code to expensively developed firmware (though obviously that would solve the problem). The problem is that many chipset makers aren't providing rights to freely re-distribute firmware, and aren't providing documentation for that firmware so drivers can be written.
AccountKiller
From http://www.theory.physics.ubc.ca/transit.html:
This card [M-Audio Transit] needs to have firmware downloaded to the card on the USB bus to work. It uses a non-standard "DFU" method which seems to have some problems with Linux. It also mixes its Type I and Type III endpoints to confuse the software. I have found (with the help of and software written by Clement Ladisch and Takashi Iwai.) a way to make this card useable.The card requires firmware to be downloaded to the card first for it to work as a soundcard. While it appears on the usb bus with Vendor/ProductID of 0763/2806 this is a very primative usb device that does nothing except wait for firmware.
A firmware loader for M-Audio audio devices is available at http://usb-midi-fw.sourceforge.net/. Interestingly enough, the set-up procedure involves copying the firmware bin file from the Windows driver installation, which is subsequently used by the firmware loader.
Anyways, TFA makes some interesting points:
Unrestricted redistribution of firmware files is satisfactory for some open source operating system projects like OpenBSD, FreeBSD, and many varieties of GNU/Linux, but others like Fedora Core and Debian demand an entirely free software environment, so redistribution of the firmware without the ability to modify and distribute the source code is prohibited.The firmware, although its being loaded to the device, is still firmware. Do distributions that demand an entirely free sofware environment ship drivers for devices with proprietary firmware? Of course they do. I'm not convinced that this should be any different.
I think that Theo de Raadt, of OpenBSD, has it right:
So instead of lobbying for documentation to write open source firmware, de Raadt would prefer to simply have the right to freely distribute necessary proprietary firmware files with his operating system, along with correct firmware interface documentation so that a driver can be created, and information from the manufacturer regarding bug workarounds.-azzurro
>all are ralink, and I own one of each of these devices, unless some kind of version-bump has changed the chipset
That is exactly the problem. Our organization has found compatable devices in the past, only to reorder by exact model number to receive incompatable units. It has happened twice with two manufacturers, and it contributed to linux being abandoned for a project.
-fb Everything not expressly forbidden is now mandatory.
But this is exactly the problem! When people ask this question, they get details, and perhaps a link to a list or two. But there is no single up-to-date reliable hardware list that a Linux-user can really rely on. This should be a simple URL of a website that answers all hardware questions: enter a chipset or a product name, and get a list of distros on which it works. Sounds obvious, and necessary, but we still don't have it. Even such a website for a specific distro doesn't exist, to my knowledge - for example the Ubuntu wiki has lists of compatible hardware, but it isn't very convenient or accessible, I've spent a lot of wasted time on it. Also, if a particular model isn't listed, I don't know if that means it wasn't tested, or doesn't work (although some models are marked as not working). And the basic problem is that the Ubuntu wiki could be wrong - I am not aware of anyone doing serious quality control there.
I guess for most people knowledgeable about Linux, this isn't a big issue - they know the answers or know where to get them. Still, a better solution would make things more convenient for them. And newcomers would certainly be much happier.
You know, I'm involved with a reasonably young project that aims to do exactly that - provide a community-powered, up-to-date, comprehensive central Linux hardware compatibility listing. It was launched in autumn, but for various reason, no work was done on it for several months, and we're only just picking up on it again now. So it still needs a whole lot of work, and it could do with more contributors, too. We tried to submit it to Slashdot, but the story was refused.
In case anyone is interested in taking a look, the URL is http://www.tuxpatible.info.
If you think this project has potential and is worthwhile supporting, spread the link, contribute to the website, or if you have mod points and feel like it, mod this post up so that more people may see this!
Basilisk Digital
You're going about this incorrectly. If a piece of hardware works in one distribution, it will theoretically work in all. Granted, it will probably be easier in Ubuntu or Fedora, but just because you may have to work a little harder in Slackware doesn't mean the hardware isn't compatible. The OS is still GNU/Linux, and there are very few hardware-related tools that are propriety among any one of the big distros.
I think you're missing the point about what exactly tuxpatible.info is meant to be.
Yes, theoretically, something that works in one distro will indeed work in all of them. Practically, however, this is often not the case. Are you seriously claiming that all Linux distros have identical hardware support / recognition? If that was really so, hardware recognition wouldn't be such a major point in Linux distro reviews. Fact is: Not every distro includes every driver, not every distro includes the same version of every driver, not every distro is perfectly bug-free, and so on, and so on.
Tuxpatible isn't just meant to answer the question, "Is there a Linux driver available for $HARDWARE". It's meant to answer more specific questions, like: "What distros will $HARDWARE work well with?" or "Will $HARDWARE work with my distro of choice?", or "What do I have to do to get $HARDWARE working on my distro of choice?", or "How do I fix this common problem with $HARDWARE under my distro of choice?"
Basilisk Digital
And there you have it. As it always has been in linux land. if you go to the big box computer wearhouse and buy crap willy-nilly you cant expect it to work when you get home. Linux works great if you buy supported hardware and make informed purchasing deciciosn like you just mentioned. It avoids the problems with the crap-level broadcom and other wifi hardware that is lower grade than a $3.95 winmodem.
It blows my mind how the linux community continues to make the low grade hardware work instead of universally blackballing it Broadcom would actually pay attention if the linux community as a whole said "buy nothing with broadcom chipsets, it is low grade dog food"... But that is the problem, the linux community cant get congealed on a topic except for MS hate... hardware that is supported by the vendor get's some allocades but flamed to a crisp by "purists" becuse they dare to release a binary only driver to honor some silly legal agreements they signed.
The biggest thing holding back linux from taking over the desktop like wildfire is that our diversity looks like a huge group of never happy children. we bitch about everything and everyone while some like the challenge of reverse engineering a piece of hardware the maker tried hard to make linux resistant.
Every single linux PC I built for relatives to switch them to linux from windows is 100% functional and perfect. I tellthem it's like a MAC, if the software and hardware does not say for linux on the box , then do not buy it. This tactic works great, I get the initial question about software, point them at the add new software on the ubuntu start menu and never get a call again except for thanks or who to send money to to pay for the new software they just installed from that menu. (I tell them to donate $10.00 for each app to the ubuntu org.) Linux on linux supported hardware just works.
Do not look at laser with remaining good eye.