Linux Wireless: The Helpless Fury (Part 2)

(For casual readers: the post below describes my journey to make linux wireless networking work. The level of detail is not interesting, but I just wanted to illustrate how mired one can get in irrelevances just to troubleshoot one problem. If you are interested in linux usability, this level of detail might drive you crazy (just imagine what it’s done to me!). If so, you might find interesting Asa Dotzler’s itconversations talk about usability problems with the linux desktop. (Here’s his essay on the subject and the slashdot discussion).

Two weeks ago I mentioned discovering the awful fact that Linux desktop users couldn’t get wireless networking to work without using ndiswrapper utility (some kludge that takes the Windows drivers and converts them into something linux can understand).

I finally got around to trying again. The Linksys USB drive doesn’t seem to work, and so I replaced it with a Buffalo PCI wireless adaptor. It didn’t work either, although I didn’t get a chance to do any real troubleshooter. This problem epitomizes the problem with the linux world. NDISWRAPPER appears to work ok, and this tutorial goes into good detail. Also, a wiki page provides information about a fair amount of network cards, or so it seems.

You see, to make it work, you need first to know exactly what chipset and version number your card has as well as what driver is appropriate. I tried two adaptors: Linksys WUSB54G and Buffalo PCI 4306. Ok, the Linksys adaptor is listed…or is it? You have several different versions and chipsets, as well as inconsistent (and perhaps out-of-date) user comments about what drivers are supposed to work with ndiswrapper. Unsurprisingly, none of the options work. One reason may be that I’m still not quite sure what .inf and .sys file are supposed to be used. (the CD and the website contain multiple drivers). I get an error message that the driver is not supported for 64bit kernels. That doesn’t make sense either. Isn’t new hardware and hardware suited for 64 bit computing nowadays? I posted a question about this on two discussion boards without any result.

Next, I tried the Buffalo PCI wireless card. In this case, it turns out that the chipset is Broadcom, and the wiki lists several drivers that might be suitable. But some come from the Dell or HP website, presumably because a version of the same card appeared in one of their products. But links to them are no longer available (and because I built my own box, lord only knows if they would work on a nonDell/nonHP machine). I downloaded more recent drivers from the Buffalo website, only to find that the download actually includes 10 inf files (and although the NDISWRAPPER site specifically says DON’T use drivers from your CD, the CD drivers contain a wider variety of inf files–mostly of the generic sort. I’m guessing that the install utility for Windows would recognize the hardware it needs to make drivers for, so they didn’t bother to give meaningful labels or even a README file. I called the Buffalo guys up (free support within the first 60 days), and they did clue me in what .inf file it’s supposed to be. There’s another issue; they tell you to consult the system log files for error messages, but on my machine I can’t find them. I look at /var/log and basically have to consult DMESG to see anything (although I suspect more useful information might be elsewhere).

After reading some more, I conclude that I need to uninstall the previous drivers I have loaded, and I think I can figure that out. (I should mention in passing that I need to manually copy these drivers/documentation onto a CD to have acccess to the documentation, and apparently my mozilla browser is not reading the html files I saved (maybe because I’m running as root?). So, if I’m lucky, I can get ndiswrapper to create a driver for my card, and if I’m doubly lucky, the card will just start connecting to my wireless router, and if I’m triply lucky, I won’t have fading signals or inexplicable dropoffs, and all that assumes of course that I’ve added NDISWRAPPER to my startup services successfully. And of course, if I ever dream of recompiling the kernel, I’m also going to rerun NDISWRAPPER all over again.

That’s what happens if I’m lucky. If I’m unlucky, I’m going to resort to downloading a commercial driver (and pay $20). But then we face similar issues. First, I have no guarantee that the commercial driver works for my adaptors, and even if it does, I need first to know what correct .inf file I’m supposed to use. But how is that better than NDISWRAPPER?

Luckily the luxuriant people provide an install script. But wait: The easiest way to install DriverLoader is to use our automatic installer. However, the installer will only work if you already have Internet access from your Linux system. Gee, thanks, guys!

Now, they list a variety of packages to download, depending on distribution and CPU. That seems easy, right? I’m on Fedora 4 on an AMD 64 bit processor. But wait! The download page says it is IMPORTANT to choose the right architecture. Either it must be i586 or i686. That’s all fine and dandy, but I have absolutely no idea what that means! The documentation helpfully gives the command to run to find out the kernel architecture you are using. rpm -q –qf ‘%{ARCH}\n’ kernel

Great, so what happens? My output is x86_64 , neither of the above. So what do I do? Luxuriant recommends running a generic source rpm. Hey, I can deal with that, and this page seems to cover it step-by-step. The key is getting to the point where you can use the web browser to do the configuring, but gosh, wasn’t I having a problem with that earlier?

Now I’m going to be optimistic and assume that luxuriant’s install rpm works ok, and I get it running. Then I face the issue down the road of having to insert a valid license key and figuring out whether I need to install a wireless security feature called wpa_supplicant. And of course, I’m going to need to do the normal network troubleshooting and then using iwconfig (which I’ve never really used before).

Here’s how I installed my wireless adaptor on Windows: plug it in, turn it on.

I don’t blame the Linux community per se for making this wireless configuration a Herculean task. But they could have done some basic things to make the troubleshooting process easier. Why not include ndiswrapper as a default RPM on Fedora 4? Why not include ndiswrapper install notes in html format? Why not provide better information about where you can find ndiswrapper error messages?

More importantly, rather than offering utilities that barely work or work only after much trial and error, why can’t the linux community back a small number of wireless cards with native support, build this support into the kernel and then people find it? I would much rather have 5 wireless cards to choose from with official Linux support than have to deal with 50 wireless cards that might be supported in Linux.

Update: This page might be useful.

Update: Well, everything works out for the best. I’m probably going to end “repackaging” this machine as my video production box. And then I’ll go for an IBM linux laptop.