Slashdot Mirror


State of WLAN Support on Linux?

ntropic asks: "I/ve recently bought a Belkin 802.11G USB adapter and was dismayed to find, after a few hours of struggling with it, that there seems to be no one who has managed to get it working under Linux. During the search for clues, it seemed that sum total of Linux support for wireless networking are the linux-wlan project, and the linuxant wrappers for Windows drivers. The former seems to support only Prism chipsets while the latter is a commercial solution, albeit quite an inexpensive one. Is that all, or are there better sources for wireless networking support?"

4 of 608 comments (clear)

  1. 802.11g under linux is somewhat messy. by wangmaster · · Score: 5, Interesting

    802.11g under linux is sort of a mess. Wireless cards are getting cheaper and cheaper (in terms of manufacturing) and much of this cheapness is cutting corners, taking more logic off the cards and putting it into software (drivers/firmware).

    The vast majority of 802.11g cards out there are almost entirely controlled by software. The frequency, transmit power, etc. I believe the specs to this are all goverend by the FCC (in the US at least, I'm sure most other nations have their own governmental bodies governing what can and can't be done).

    As such, opensource drivers are tough as you don't want anyone just modifying the code to change frequencies, up transmit power etc. Also, a number of manufacturers have used "competition" as their reason for keeping things closed.

    As a result, the support out there is lumped into a few different chunks:
    1) no drivers available
    2) atheros drivers (contain a binary HAL object file. This allows them to have a small source component that people can build that links against the binary object which contains the routines to do the various things I mentioned above (basically control the card)
    3) opensource driver + firmware (where the firmware component does what the HAL does, but since it's actual firmware loaded to the card, it allows the driver interface to be fully opensourced without revealing too much of what's going on. The intel and prism54 drivers are in this camp.

    Basically, if you don't have a prism54 or intel based 802.11g card, you can't use open source drivers, and the drivers will never be included into the kernel because they can't be open sourced. Atheros was nice to release their stuff so that at least their cards are usable.

    Every other manufacturer's card users need to hope that their mfg is nice enough to do what atheros does (or if their driver is firmware based, do what intel/intersil[or whoever owns the prism54 stuff now] did by either writing drivers, or helping with it.

    It makes it tough if you don't know this ahead of time, but really with 802.11g, you just need to pick the right card and hope. Unfortunately none of this is really very well documented.

  2. There's this nifty thing called Google... by Old+Man+Kensey · · Score: 4, Interesting
    ...I hear people use it to search the web and find information, like the aforementioned ndiswrapper, ipw2200, rt2x00... madwifi, others...

    That said, the state of Linux wireless networking today is similar to where its wired networking was say six or seven years ago -- a few solid drivers, a bunch of drivers that sorta work, and a bunch of drivers with promise but very experimental. When I bought a wireless card I took care to get one that I could find Linux native drivers for, an MSI US54G based on the Ralink RT2500 USB (RT2570) chipset. (The Ralink drivers are the basis of the rt2x00 project, which claims that the next-generation unified driver will do everything and make your coffee too, but last fall it was just getting to the point where you could associate to an AP). The situation is complicated by the fact that different versions of the same model card from the same manufacturer may have completely different chipsets -- not all Belkin F5D7050 adapters are Ralink-based like my wife's is. And even if you have the driver for the chipset, the device itself may be on a PCI ID the driver doesn't look for by default, necessitating a quick patch and recompile (I had to do this for my US54G to get the rt2570 driver to recognize it). Or the driver may not be preemption-safe, locking up your system when you up the interface unless you compile a custom version of the kernel without preemption enabled. There's a million niggly things you may run into, but most of them can be worked through or around in some way.

    As time goes on, the good experimental drivers and the existing reliable drivers will develop full feature sets, the bad experimental drivers will be left in the dustbin, and it will become more common for manufacturers to follow Ralink's lead and open-source their drivers.

    One reason for the lackluster support on many chips is that apparently US companies are bound by FCC regulations not to allow the TX power on their adapters to be boosted beyond a certain threshold, so e.g. Intel releases a Linux driver with a binary-only firmware file. If you look at the installation info for some wireless hardware (802.11a, I think) it will even say only FCC-certified installers can install the card in a host device (because of concerns about improper installation causing harmful interference). So there is a certain point beyond which manufacturers may never go and the community will have to reverse engineer if they want those drivers to be fully open-source (and said drivers may be illegal to use in the US or other places).

    And if you want security on your network, oh boy, the fun you're going to have with wpa_supplicant (assuming it supports your card at all...)

    --
    -- Old Man Kensey
  3. No, DON'T use ndiswrapper by Eil · · Score: 5, Interesting

    For the love of Dog, don't just go out and buy any old crappy wireless card and hope that linuxant or ndiswrapper will support it. All of these slashbots who recommend this route are just remorseful that they didn't do their research before wasting their money on a monopoly-sustaining wireless card.

    The worst part is that ndiswrapper and linuxant usually don't allow full use of the card. Sure, you can probably get some connectivity out of it, but sometimes you can't use 802.11g, put the card into promiscuous mode, or use one of the fancy wifi signal-strength and network information applets in KDE and GNOME.

    When people ask me about Linux wireless support, I tell them two things:

    1) Skip on down to Staples and pick up a Netgear WG511T. It'll cost $40-$50 depending on where in the nation you buy it and what rebates they have going at the time.

    2) Boot your favorite distro and install the MadWifi drivers. Configure ath0 for DHCP, sit within range of an access point, and you're good to go.

    The madwifi drivers work with Atheros chipsets and evidently Atheros themselves contributed a large amount of the code, so it would be in the interest of all Linux users to support them by checking out the MadWifi compatibility listing and purchasing one of the listed cards. You'll be helping the open source community and getting the most out of your wireless card at the same time.

  4. Re:no clue! by Anonymous Coward · · Score: 4, Interesting

    I'm not deeply into the code, but I have been administering Linux machines for a LONG time.
    So being a slightly more educated end user somehow makes you qualified to speak on code? You run programs, not write them, you haven't the first clue about anything you speak. This is akin to someone who has driven for a few years but never popped the hood of their car trying to explain to a mechanic that they don't know what they're talking about.

    Windows NT 3.1 shipped in 1993. In 1996, NT 4.0 moved display and print drivers into kernelspace. That didn't impact non-print and display drivers,

    Have you even read that sentence? They moved two major subsystems into the kernel, but no worries, it doesn't affect you if you are not part of those two subsystems! In the linux 2.0 days, there was ipfwadm, 2.2 ipchains, and 2.4 till now, iptables/netfilter, those are significant changes! But it didn't impact non-firewall drivers!

    Sure, but someone had to do the porting. Windows drivers that were written in 2000, to my best knowledge, will still work just fine, although you'll have to click on "ok to run unsigned code"
    Some will, some won't its a crapshoot. Hell even a lot of userspace programs break under 2003. Things changed from 9x to NT, and from NT to 2000, 2000 to XP changed again, but often its pretty much the same. XP to 2003 things changed a lot again, and from the little I've seen from Vista, a lot has changed again. This is somewhat like the changed from 1.x to 2.x, to 2.2, to 2.4, and 2.6, and so on.

    I have a kernel driver that I have maintained since the 2.0 days, significant changes have happened to the linux network layer since that time, in between 2.2 and 2.4, the whole thing was damn near rewritten eliminating bottoms halves and so on. Each minor version bump I have indeed had to make a few changes here and there, most of the time its to change the logic slightly, or the name of a structure, and even in 2.6 how the module was compiled, but they have always been fairly trivial changes. I also maintain a driver for windows that operates on physical memory, this has needed far more changes over the years (since win2k) than my network module in Linux. The point being that even with major changes under the hood I have always been able to hook in my parts with minimal trouble under Linux, which hasn't been the case under Windows. *And this comes from someone who actively maintains code under both, a person who makes use of the APIs and their changes, not someone who pushes enter and while he waits for the code other people have written to do their thing thinks up half-assed arguments based on shit he read about somewhere but doesn't have the first clue what he is talking about*

    Instead of one Linux kernel (which is what I was ALWAYS talking about, despite your bullshit about confusing it with userspace), we now have ONE PER DISTRO. There's not one Linux kernel, there are at least four or five. That's a lot of testing and maintenance to have to do. Testing and maintenance costs money.

    I suppose you're the type of guy that thinks 'gee recompile the kernel?!', seriously, All of my linux boxes are using the same kernel, across 4 distro's and 3 architectures.
    Tell me... have you ever run a network of a hundred or so Linux servers? I mean all of it, all by yourself... from the firewalling to the routing to the DNS servers to the OS maintenance. All of it. Everything. Production network.

    No, and any company that has an entire production network run by one guy is as stupid as the one guy running it, it doesn't matter if we are talking about 20 boxes or 20,000, and yes I've admined both sizes. Once again though, I have to ask, as a professional enter-key-presser (admin), what makes you think you have the first clue about anything related to APIs or so on?