This entry describes my way to wireless LAN in Linux. It is an update of an earlier article. All I wanted was an 802.11g-compatible PCMCIA card with a reasonably open and functional Linux driver. I find it ok if the card’s firmware is not open source, but I hate dealing with binary-only blobs in kernel modules. NDISWrapper is (IMHO) a cute hack, but even uglier than binary blobs and consequently not an option. Under these constraints, there weren’t many choices in terms of the chipsets that I might use:

  • The RaLink RT2[45]00 chips have GPL drivers released for them by the manufacturer. My new WLAN card, a Conceptronic C54RC, has this chipset. There are a ton of others that have it, too. The rt2500 driver, checked out from CVS as of 2005-03-07, works for me, even though it takes a while until the card associates with an AP. The drivers’ web site could also stand some improvement, but I hear that this is being worked on. Also, the card is supposed to be tad slow, probably because of a bottleneck in the current driver. But overall, I’m pretty happy with my purchase.

  • The Intersil PrismGT was a hopeful contender, until the card manufacturers discovered that they can save a few cents on each card if they stick the MAC-layer processing into the host driver instead of the card’s firmware. (This cheaper type of card is called SoftMAC and will make the prism54 driver complain about “no 'reset complete' IRQ seen - retrying” and “prism54: Your card/socket may be faulty, or IRQ line too busy). The driver is complete, functional and open, but it doesn’t support the SoftMAC cards, and the earlier hardware versions that aren’t SoftMAC are nowhere to be found, not even on ebay. I find it a shame that a good piece of software is ruined by the manufacturers’ greed. Honestly, I’d gladly pay more for a card that just works with an open driver, and I believe that I’m not alone. What’s worse: There is no sure-fire way to tell the bad cards from the good ones. In some instances (like the Netgear WG511, which I bought and returned), both types are almost indistinguishable visually. (In fact, for the Netgear cards, the label MADE IN CHINA is the only feature that seems to suggest unsupportedness.)

  • Atheros-based cards seem to be an ok (but partly non-open) choice. It seems that there is no (or very little) on-card processing power, no firmware, but a binary blob called “HAL” (as in Hardware Abstraction Layer). This HAL shields the card’s apparently sensitive and protection-worthy programming interface from the prying eyes of evil source code readers. (Not that the whole thing hasn’t been reverse-engineered yet.) It seems that the restriction is partly the FCC’s fault, which doesn’t allow freely programmable software radios like the Atheros chipset in a consumer’s unqualified fingers. Since there is so little on-card processing power, the driver needs to reimplement nearly all of 802.11. This implementation is, apparently, fairly complete and was ported from OpenBSD, but I’ve heard that it lacks a properly working Ad-hoc mode, which is no big deal to me.

  • Intel’s ipw2200 (aka Centrino) looks good, but is not available in PCMCIA form factor.

  • TI’s ACX100 is a relatively new contender driver-wise, and, according to its developer, it basically works, is currently maintained, but doesn’t do WEP reliably. TI is also notorious for not giving out hardware specifications to open source developers.

If you are a wireless card manufacturer reading this, please try to follow these guidelines:

  • If you change the chipset, change the name of the card. I hate nothing more than thinking that I’m buying something that’s supported, when, really, the hardware has changed and I’m buying an expensive paperweight.

  • If there’s a working open-source driver, don’t stop selling the card. If it’s causing cost trouble, up the price. I’ll gladly pay for something if I know that it’ll work.

  • Release full-GPL Linux drivers, or at least release hardware specifications (possibly under NDA) and allow the development of GPL drivers.

If you are a customer looking for a card and reading this, consider not buying from manufacturers that do not follow these guidelines. At this point, this includes D-Link and Netgear, among others. Instead, consider buying RaLink-based cards. They’re inexpensive, and they have full-GPL drivers that work (minus a few bugs, which I assume will be ironed out).

For more information, see the exhaustive NDISWrapper card list and Jean Tourrilhes’ Wireless HOWTO. I have tried to combine its information content with driver-specific bits’n’pieces I scavenged for my own purchasing decision. I hope this helps somebody.