Linux Wireless PDF
Linux Wireless PDF
Jean Tourrilhes
14 November 01
1 Introduction
This document will explore the magical world of Wireless LANs and Linux.
Wireless LAN is not a very widespread and well known technology, even in the
Linux world, so we will try to gather here most of the available information.
Despite the fact that it is very similar to common networking technologies, it is
significantly different to justify this specific document covering the subject.
1
< Linux Wireless LAN Howto >
mailbox). After that, you should have no more arguments for asking foolish
questions around.
I hope that this document will help people to make the most of their Wireless
LAN under a competent operating system and understand what is in the box. If I
could convince people to give it a try, it would make me happy.
This document act mostly as a complement to the exhaustive documentation
existing for Linux. Because of that, I might not explain every details of everything
and target already quite knowledgeable people. Don’t worry, there is a section on
how to improve your culture at the beginning of the section 3.
2
< Linux Wireless LAN Howto >
3
< Linux Wireless LAN Howto >
4
< Linux Wireless LAN Howto >
5
< Linux Wireless LAN Howto >
To confuse the issue, Lucent has recently renamed the Wavelan IEEE as
Orinoco (Wavelan was better IMHO), and this division was in the part of Lucent
spin-off into a new company called Agere. Enterasys is also selling the Wavelan
IEEE as RoamAbout 802 (this company was formerly known as Cabletron, which
was the former DEC networking division). Elsa is selling it in Europe as
AirLancer 11 (on the other hand, the 2 Mb/s version is quite different). In Japan
(and maybe also in Europe), Melco is selling it as Buffalo WLI-PCM-L11. Lately,
more vendors have been joining the club, such as HP (HP 802.11b Wireless LAN),
IBM (IBM High Rate Wireless LAN), Dell (Dell TrueMobile 1150 - on the other
hand, the 1100 is an Aironet card), Compaq (Compaq WL 110, WL 210 and WL
215 - the WL100 and WL200 are PrismII based), 1stWave (1stWave PC-Card)
and ARtem (ARtem ComCard). The Apple Airport is also derived from the
Wavelan IEEE (see section 2.5).
The Wavelan IEEE appears to the PC as a standard network card and
interfaces naturally with the networking stack. The configuration includes only
setting the network name (ESSID), the rest is automatic (finding the equivalent
BSSID and channel). As usual for Lucent, the documentation and website are rich.
As with all IEEE 802.11 products, the Wavelan offer a fully featured MAC
protocol, including MAC level acknowledgement (good news for all of us having
dealt with the old Wavelan card), optional RTS/CTS, fragmentation, automatic
rate selection, roaming. This seems exhaustive, but is mandatory for IEEE 802.11
compliance. Different version of the card include different levels of security (bronze
is basic, silver is with WEP (RC4-40 bits) and gold is with RC4-128 bit encryption).
The MAC support both Managed and Ad-Hoc modes. However, the initial
firmware for those cards did support only a non-compliant Ad-Hoc mode (called Ad-
Hoc demo mode - which interoperate with most PrismII cards). In order to gain
WiFi compliance, Lucent added in recent firmware (6.06 and greater) a second Ad-
Hoc mode which is fully 802.11 compliant (called Peer to Peer mode or IBSS Ad-
Hoc mode - and which interoperate with Aironet cards). Of course, the two Ad-Hoc
modes are not interoperable.
The 2.4 GHz modem is an enhanced version of the previous generation, Direct
Sequence Spread Spectrum (11 chips encoding), using both 1 and 2 Mb/s signalling
rate (using effectively 22 MHz of bandwidth) and 5.5 and 11 Mb/s in second
generation cards, diversity antennas and with 13 different frequencies (depending
on the regulations).
Initially, the Wavelan was only offering 1 and 2 Mb/s bit rates (basic IEEE
802.11 DS standard). For a while, Lucent was also selling a “turbo” version of the
card, which was adding 5 and 10 Mb/s bit-rates for shorter range using Lucent
proprietary modulations (so, not compatible with 802.11-b).
Nowadays, Lucent offers only the second generation of the Wavelan IEEE,
which is much cheaper and fully compliant with the new 802.11-b standard,
supporting 1, 2, 5.5 and 11 Mb/s bit-rate (compatible with other 11 Mb/s products).
All Wavelan IEEE cards do not offer the exact same set of features, because
Lucent keep changing the firmware. From firmware 1.00 to 4.52, Lucent was
mostly adding features (encryption, power saving) and keeping it backward
6
< Linux Wireless LAN Howto >
compatible, but firmware 6.04 and later created a major incompatibility. Firmware
6.06 and later implement a fully 802.11 compliant IBSS Ad-Hoc mode (on top of the
Ad-Hoc demo mode). Firmware 6.04 dropped Fragmentation Threshold setting in
favor of microwave oven robustness (an automatic fragmentation scheme).
Firmware 6.16 did fix a few bugs with the IBSS Ad-Hoc mode (security,
ESSID=”any”).
2.2.2 The driver
Andreas Neuhaus is no longer working to improve this driver, therefore it’s
now discontinued in favor of the new Orinoco driver (see section 2.3). The driver is
based on Lucent source code, which is a cut down version of their full driver. So, it
lacks all the part about handling natively 802.11 frames and Lucent proprietary
API, and initially it lacked some of the more fancy features of Lucent’s driver, but
Andreas is adding them slowly. Of course, the driver support all version of the card
(bronze, silver, gold - basic, turbo, turbo 11 Mb/s) and is fully interoperable with
Access Points and Windows nodes.
Andreas has done a very good job into providing features like Wireless
Extensions (I must admit that I did help him quite a bit ;-) and many configuration
parameters (station name, channel, mtu size). The new version adds Power
management and encryption setting, change of the operating mode via Wireless
Extensions, promiscuous and multicast support...
Andreas has done a lot of debugging of the driver and it seems now much more
stable. Lastly, the ISA to Pcmcia and PCI to Pcmcia bridges may be a source
troubles under Linux. The latest version of the driver fixes SMP support, multi-
cards configuration, improve wireless.opts support, add IBSS Ad-Hoc mode
support and support properly and sanely the various firmware releases.
Harald Roelle has developped a patch for this driver in order to fully support
the PPC architecture. This patch mostly contain some bit order fixes. This patch
should help other architecture with endianess issues. His patch was eventually
integrated (with major changes) by David Hinds in version 1.0.6 of the driver. I
added firmware detection support in 1.0.6 to properly handle all the various
firmware releases and their variations (in particular the two Ad-Hoc modes), and
fixed the remaining SMP bugs.
The driver does not support the USB and Mini-PCI version of the Wavelan.
Nowadays, Anton Blanchard is the official maintainer of the driver, with the
help of David Gibson. David has done a complete rewrite of the driver (see section
2.3), so this driver won’t be maintained anymore...
Note that Lucent has also released a binary library driver (see section 2.4)
which is maybe more solid and performant than the driver of Andreas, but lack
proper support for Wireless Extensions.
7
< Linux Wireless LAN Howto >
8
< Linux Wireless LAN Howto >
The HCF (the low level library provided by Lucent) hadn’t been maintained
since the initial release of the driver and was quite difficult to read and
understand. While the higher layer of the driver had gone a long way and were
robust and fully featured, the HCF was a mess and the cause of many problems
(TxTimeout, driver corruption/crashes and else).
Rather than put up with that, David looked deeply in the low level of the
wlan-ng driver from Mark (see section 2.10) and the FreeBSD driver and wrote a
totally new driver combining a new low level core and the high level features of
wvlan_cs. The end result was a driver much more readable, robust and well
behaved than wvlan_cs. In the process, David added support for PrismII cards.
Then, I fixed a few Wireless Extensions bugs, added some support for Symbol
cards, and we pushed the driver in the kernel. The driver was initially named
dldwd_cs and was renamed orinoco_cs at this point. Later on, David Hinds
backported this driver to the Pcmcia package for users of earlier kernels.
The main goal of the driver is to support Wavelan IEEE/Orinoco cards and
OEM. The driver support all the firmwares and features of those cards properly
and fully (Ad-Hoc demo mode, IBSS mode, bit-rate, encryption keys...), and support
all the features available in wvlan_cs (except module parameters) with less bugs.
Ben has added Airport support to this driver (see section 2.5), and the
support of those cards is similar to Orinoco cards (i.e. most features supported
properly).
Starting in release 0.6d, the support of Symbol cards and OEM is complete,
at least for firmware 1.5 and 1.7. Bit rate, mode of operation (managed, ad-hoc
IBSS and ad-hoc demo), encryption and power management are fully working. The
release 0.8 added full support for later Symbol firmware 2.00 and 2.20. On
firmware 2.20 and later, Power Management is disabled.
The support of PrismII cards and clones is still in progress. More debugging
and testing need to be done, but the driver can set most features to some degree
(Ad-Hoc demo mode, IBSS mode, bit-rate, encryption keys have been seen to work).
It seems the upgrading firmware fixes problems related to encryption. However,
the wlan-ng driver may still has more features and is more tested...
Starting in release 0.8, the driver also support PLX adapters that are sold
with some PrismII cards. Those adapters are not real Pcmcia adapters and the card
looks like a PCI card. The driver also support Pcmcia cards in regular ISA to
Pcmcia or PCI to Pcmcia adapters, as long the Pcmcia adapter is recognised and
configured properly by the Pcmcia package.
The driver does not support the USB and PCI version of the card. There is
various kind of MiniPCI implementation of the card, the driver support some of
them (Pcmcia based - Lucent) but not most (PCI or USB based - PrismII).
9
< Linux Wireless LAN Howto >
Where : ftp://ftp.wavelan.com/pub/software/ORiNOCO/PC_Card/linux/
http://www.enterasys.com/software/RoamAbout/
ftp://projects.sourceforge.net/pub/pcmcia-cs/contrib/
Contact : Lucent support <[email protected]>
EnteraSys support <[email protected]>
Maintainers : Richard van Leeuwen <[email protected]>
Dean W. Gehnert <[email protected]>
Documentation : Extensive readme
Configuration : Module parameters, Wireless Extensions
Statistics : Wireless Extensions
Multi-devices : yes, but the ISA to Pcmcia bridge must be reconfigured
Interoperability : 802.11-DS and 802.11-b, interoperate with Windows
Other features : WEP encryption, power management and microwave oven
robustness
Non implemented : Do not support all firmware releases
Bugs : ?
License : Binary only for the core + OpenSource Linux wrapper
Vendor web page : http://www.wavelan.com/
http://www.enterasys.com/wireless/
2.4.1 The device
This is the same device as the previous entry (section 2.2).
2.4.2 The driver
Lucent has decided to not put all its eggs in the same basket and developed a
bold strategy for the support of the Wavelan IEEE under Linux. Not only they have
released some source code to allow the source driver mentioned above, but they
have as well contracted Dean to release a driver based on a binary library. This
gives Linux users the choice, a GPL full source driver to hack with and a stable full
featured binary driver (the official term from Lucent is “Linux Driver Source/
Library”).
Dean has written the code interfacing between Linux and the library, and had
put together a nice package easy to install and with documentation. As expected,
the binary driver is probably more stable and than the full source driver mentioned
above, with a slightly different set of feature, and offers all the features of Lucent
Window drivers, plus a nice integration with Linux. This driver supports both the
basic version of the card and the “turbo”. The major drawback is the binary core,
preventing the use on other architectures (PPC, Arm...).
Now, the driver is supported by Lucent, and they keep adding in it the same
features they add to the Windows drivers (such as microwave oven robustness).
Their also have added support for the IBSS Ad-Hoc mode (see discussion above).
The latest version adds support for 2.4 kernel and many common Wireless
10
< Linux Wireless LAN Howto >
11
< Linux Wireless LAN Howto >
12
< Linux Wireless LAN Howto >
The Netwave use a specific MAC protocol designed for radio (a pre 802.11
protocol, with fancy stuff such as RTS/CTS, virtual carrier sense and
fragmentation). It uses a 9 bits domain (Network ID), the highest bit of it used for
the type of network (set for access point operation and unset for ad-hoc operation).
The Netwave uses also a 16 bits scrambling key (encryption). The Modem offers a
1 Mb/s signalling rate and frequency hopping (100 ms hop period). On the bad side,
the Netwave has no antenna diversity and a high overhead.
Note that the Netwave AirSurfer plus is a very different beast (see below).
2.6.2 The driver
The original author of the driver (John) has made a very good job for
debugging it, and his good friend (Dag) has joined the project, and is fixing the
remaining bugs and adding new features. The driver is quite simple and don’t
implement yet the full Wireless Extensions. The driver uses only one transmit
buffer, which lower slightly the performance. The device configuration includes the
domain and the scrambling key which can be set through Wireless Extensions or
as module parameters (need to be set in /etc/pcmcia/config.opts - don’t forget to
restart cardmgr after a change).
It seems that the Netwave is quite picky with some pcmcia sockets and you
might need to choose carefully the interrupt (try different ones) and set the
memory speed correctly. In some cases, under high load (big ftp), the transmission
sometime get stuck (I guess that some interrupt are lost) and the driver has to reset
the card (you won’t notice it, it just decreases the performance).
13
< Linux Wireless LAN Howto >
2.8 BayStack 660, ZoomAir, YDI and other Harris Prism based cards...
Driver status : stable
Driver name : wlan_cs.o
Version : 0.2.7, 0.2.7a, 0.3.1.1 (beta version) and 0.3.4 (beta version)
Where : http://www.linux-wlan.com/linux-wlan/
http://www.astro.umd.edu/~teuben/linux/wireless.html
http://www.cs.berkeley.edu/~jhill/linuxwlan/
http://www.spesh.com/danny/wlan
Maintainers : Mark S. Mathews <[email protected]>
Peter Teuben <[email protected]>
Jason Hill <[email protected]>
Danny O’Brien <[email protected]>
Mailing list : http://www.linux-wlan.com/linux-wlan/
Documentation : Readme, man page
FAQ : http://linux.grmbl.be/wlan/
Configuration : Module parameters & configuration tool
Statistics : Statistic tool
Multi-devices : yes
Interoperability : 802.11-DS, interoperate with Windows
Other features : Quite exhaustive 802.11 support
Non implemented : WEP
Bugs : -
License : MPL
14
< Linux Wireless LAN Howto >
15
< Linux Wireless LAN Howto >
The driver is well written and very complete : it’s currently the only driver
where most of the higher layer 802.11 functionality is implemented. There is also
many initialisation parameters and a tool to configure the card. Because the 802.11
standard is very complex, not everything is totally finished and a few features like
WEP (RC4 40 bits encryption) are missing.
There is currently two branches maintained by Mark, 0.2.X which is stable
and 0.3.X which is experimental.
Peter (with help from YDI) has created a alternative version of Mark’s
package to add ISA support, fix a few bugs and with explicit support of cards from
YDI. In the long run, those changes should find their way in Mark’s package...
Jason has created a version of the 0.3.1 beta driver with support for the
BayStack 660, by porting bits from 0.2.6 (this allow support for both the BayStack
660 and infrastructure).
Danny has a patch to make the driver compile and work with kernel 2.4.X.
I believe that this driver doesn’t support the BayStack 650 and Netwave
AirSurfer plus cards (which don’t use the Prism chipset but Frequency Hopping),
but the changes for that might not be that hard to implement.
16
< Linux Wireless LAN Howto >
17
< Linux Wireless LAN Howto >
Documentation : Readme
Configuration : Module parameters & configuration tool
Statistics : Statistic tool
Multi-devices : yes
Interoperability : 802.11-DS and 802.11-b, interoperate with Windows
Other features : Quite exhaustive 802.11 support, Encryption, PPC support,
PLX and PCI support.
Non implemented : ?
Bugs : ?
License : MPL
Vendor web pages : http://www.compaq.com/products/wlan/index.html
http://www.magiclan.com/
http://www.dlink.com/products/DigitalHome/Wireless/
http://www.linksys.com/products/
http://www.zoomtel.com/zoomair/za11index.html
http://www.nokia.com/corporate/wlan/card_c110.html
http://www.addtron.com/
http://www.gemtek.com.tw/Product.htm
http://www.smc.com/
http://www.ambicom.com/
http://www.teletronics.com/
http://www.intersil.com/prism/
2.10.1 The device
The PrismII chipset is the successor of the PrismI chipset, described in the
previous section (see section 2.8), and is build by Intersil (formerly Harris). Intersil
offer this chipset and some reference design to various OEM, allowing them to
build various 802.11-b products (cards or integrated in their own products). I
expect that all the people that were formerly using the PrismI chipset will switch
sooner or later to the PrismII.
The first manufacturers to offer PrismII cards were Samsung and Compaq
(rumored to be selling a rebadged Samsung card - on the other hand, the WL 110,
WL 210 and WL 215 are Orinoco cards), with a Pcmcia card, a PCI card and an
Access Point. Aironet and Symbol also uses the PrismII chipset, but with their own
MAC controllers (see section 2.20 and section 2.16). Other Prism vendors like
ZoomAir, Nokia and GemTek are slowly releasing their own version of the
PrismII card. Some big networking vendors like D-Link, LinkSys and SMC were
also quick to jump on this new opportunity for them, as well as many smaller
vendors like AddTron, Ambicom and Teletronics...
Most vendors offer regular Pcmcia cards for laptops. For desktop machines,
the situation is a bit more messy, some vendors offer standard PCI-Pcmcia cards,
18
< Linux Wireless LAN Howto >
dedicated PLX cards (that look like a regular PCI-Pcmcia bridge but is not) or some
fully integrated PCI cards (Prism2.5). Some vendors also offer USB adapters.
Lastly, some laptop include MiniPCI cards that may be either integrated PCI cards
or USB adapters.
Like the initial PrismI design, the PrismII is fully compatible with 802.11 and
include a 2.4 GHz Direct Sequence modem, with all the usual features (Roaming,
WEP...).
The main differences between the PrismI and PrismII chipset are a higher
integration, a higher performance modem and the replacement of the AMD
controller with Intersil own design. The higher integration (5 chips instead of 8)
allows to reduce the price and the size of the product, and to simplify the
integration. The new physical layer (modem) has a better performance (but a lower
transmit power), increasing range, speed and battery life, and is fully compliant
with the 802.11-b standard (5.5 and 11 Mb/s). Finally, the new MAC controller
handle most of the 802.11 functionality (instead of leaving it to the driver), which
simplify driver development and help performance on slow devices (palmtop,
embedded design).
Note that the PrismII firmwares are usually not of the highest quality and
quite inconsistent from one release to another, both on the cards and on the Access
Points, and you may have to try a few of them before finding the one that work for
you. For example, encryption and IBSS ad-hoc mode seems to be working only in
the latest firmwares (0.8 and later), and multicast is not working at all. It also
usually takes a bit of time to get the workaround for the latest firmwares in the
various Linux drivers.
A few words about Ad-Hoc modes : people have reported to me that the
default Ad-Hoc mode of those cards interoperate with the Wavelan Ad-Hoc demo
mode and is therefore not 802.11-b compliant. It seems that some of the newer
firmwares and drivers for some of these cards have the option to select the IBSS
Ad-Hoc mode which is 802.11-b compliant.
2.10.2 The driver
Who was more qualified to write this driver than Mark, from AVS, who
already wrote the driver for the PrimsI cards ? In fact, Intersil did partner with
Mark to get this driver written for us !
As usual with Mark, the driver is really complete and well written. It is
currently only in beta stage, and Mark told me that he needs to add more
documentation and debug some more features. The driver support both Pcmcia and
PCI cards. This driver is compatible with Linux bridging software, includes a
generic 802.11 interface, exposing the full 802.11 MIB to user space, and include
hooks to build an Access Point. The driver also come with a configuration tools, an
utility to dump 802.11 frames and a daemon responding to 802.11 events.
The release 0.1.10 fixes a number of long standing problems and include a
number of patches and features that were floating around on the mailing lists. The
latest driver support properly WEP encryption and Ad-Hoc mode. Note that the
19
< Linux Wireless LAN Howto >
driver support only IBSS ad-hoc mode and only for recent firmwares, whereas
most cards also support the old ad-hoc demo mode.
The latest version has also support for PLX and PCI cards. The PLX card
allow to add a Pcmcia card in a PCI slot, but does not support any of the Pcmcia
functionality, so is not supported through the Pcmcia package but directly by the
driver. PCI support is for fully integrated PCI cards or MiniPCI cards. Mark is
currently working on USB support.
Mark is also selling a Wireless Development kit and an Access Point, based
on a PPC platform and this driver.
Alessandro and Virgilio maintain a separate version of the driver that
support ad-hoc modes (IBSS and ad-hoc demo mode), and they are working on a
USB version of the driver.
Reyk has developped a patch that adds basic Wireless Extension support to
the driver. He needs help for testing and improvements.
20
< Linux Wireless LAN Howto >
The driver has correct support for the various feature of the PrismII card,
support Wireless Extensions and offer various extra information in a /proc
directory.
What set this driver apart from the other driver is its support for Host AP
mode. In this mode, the driver act as an Access Point on the air and does all the
802.11 management necessary. In this mode, the driver also allows bridging
through the regular Ethernet bridge driver of Linux. Impressive work !
21
< Linux Wireless LAN Howto >
22
< Linux Wireless LAN Howto >
23
< Linux Wireless LAN Howto >
24
< Linux Wireless LAN Howto >
2.16 Symbol Spectrum24 High Rate, 3Com AirConnect and Intel PRO/
Wireless
Driver status : Beta (Pcmcia only)
Driver name : spectrum24t_cs.o
Version : 1.03
Where : http://sourceforge.net/projects/spectrum24
ftp://ftp.symbol.com/pub/SOFTWARE/IEEE/PC_CARD/LINUX/
Contact : Brad LeFore <[email protected]>
Maintainer : Lee John Keyser-Allen <[email protected]>
Discussion forums : http://sourceforge.net/forum/?group_id=11099
Documentation : Readme file
Configuration : module parameters
Statistics : None
Multi-devices : -
Interoperability : 802.11-DS and 802.11-b, interoperate with Windows
Other features : Multicast, WEP encryption and support for CF cards
Non implemented : -
Bugs : -
License : GPL or BSD
Vendor web page : http://www.symbol.com/products/wireless/wireless.html
http://www.intel.com/network/products/wireless.htm
http://www.3Com.com/
2.16.1 The device
Despite beeing a long time proponent of Frequency Hopping, Symbol couldn’t
ignore the success of 802.11-b. After a strategic agrement with Intel, Symbol is
back with a complete line of 802.11-b products, that are called Spectrum24 High
Rate (to better confuse them with their old FH products). Symbol still sell mostly
to vertical markets through VAR, but both 3Com and Intel are repackaging Symbol
cards, as Intel PRO/Wireless and 3Com AirConnect. Note that the latest 3Com
25
< Linux Wireless LAN Howto >
Wireless LAN XJack card (3CRWE62092A, with the XJack antenna) is a No Wires
Needed card.
The card is mostly sold in the Pcmcia form factor, along with the Access Point.
There is a PCI version that looks like a Pcmcia card in a regular PCI to Pcmcia slot.
But, unfortunately for us, Symbol doesn’t sell yet any of their famous “all-in-one”
products with 802.11-b. Recently Symbol released a Compact Flash version of
their card called Wireless Networker which has an amazing form factor.
The Symbol product is composed of the Intersil PrismII chipset (see section
2.10) with Symbol own MAC controller (which is originally derived from the same
core as the MAC from Lucent, Aironet and Intersil). From Symbol, we can expect
a design giving good quality and performance.
The MAC has all the usual features of the 802.11 standard, like MAC level
retransmission, RTS/CTS, fragmentation, auto bit-rate selection, power saving,
WEP encryption and roaming, which extensive configurability. The physical layer
has the classic PrismII feature, supporting 1, 2, 5.5 and 11 Mb/s.
2.16.2 The driver
The driver was initially written by TriplePoint, and Lee has taken over the
maintainance. Not surprisingly, the driver is very similar to the Wavelan-IEEE
binary driver (except for being full source), to the point of mentioning “Turbo” cards
(what Symbol calls “High Rate”).
The driver is well writen, has an extensive collection of module parameters
and has been tested successfully with Symbol, 3Com and Intel cards. Lee plans to
add Wireless Extensions and fix the few remaining bugs...
The version 1.01 of the driver fixes some bugs related to higher bit rate
(11 Mb/s) and encryption. The version 1.02, adds support for kernel 2.4.X and
disable power management (doesn’t work on latest firmwares).
Symbol has recently release a separate version of this driver to support
Compact Flash cards. Compact Flash cards need a specific driver because they
don’t have the firmware stored on the card and therefore the driver has to
download the firmware to the card after each reset.
26
< Linux Wireless LAN Howto >
27
< Linux Wireless LAN Howto >
2.20 Aironet ARLAN 4500, 4800, Cisco 340 and Cisco 350 series
Driver status : stable
Driver name : ISA, PCI : airo.o
Pcmcia : airo_cs.o
Version : 1.8 - 2001/03/27
Where : Pcmcia package (3.1.25) and Linux kernel (2.4.6)
Maintainers : Benjamin Reed <[email protected]>
Javier Achirica <[email protected]>
28
< Linux Wireless LAN Howto >
29
< Linux Wireless LAN Howto >
(30 mW). Aironet still use their own MAC controller in the 4800B (and not the new
PrismII MAC - see section 2.10).
After the aquisition by Cisco, the Aironet 4800B was renamed Cisco 340
series (exact same hardware, new name). Dell also sell the same hardware under
its own brand as Dell TrueMobile 1100 (on the other hand, the TrueMobile 1150
is a Wavelan IEEE).
Like Lucent, Cisco offer different cards with different level of encryption. The
cards labelled 340 feature no encryption, the cards labelled 341 feature 40 bits
encryption and the cards labelled 342 feature 128 bits encryption. Moreover, some
versions of the Pcmcia card are sold with antenna but others without antennas.
Cisco has now released the Cisco 350, a new family of 802.11b cards. From
the information I did gather, it seems to be equivalent to the 340 series with a
greater transmit power (100 mW instead of 30 mW). The Cisco 350 also improves
the performance of the AP and introduce greater security (Radius authentication
and co).
2.20.2 The driver
Ben has produced a solid driver for the Aironet card, The driver supports the
ISA, PCI and Pcmcia cards (4500, 4800 & 4800B versions), it looks fairly complete
and debugged, with a nice /proc interface. The driver also has very complete WEP
support.
Ben also told me that the driver was able to recognise the PC3500 cards, but
more work would be needed there to get it fully working.
Recently, I’ve started adding Wireless Extension to this driver. Ben was kind
enough to integrate properly my work in his driver. Then, Javier Achirica did an
amazing job of completing Wireless Extension support (power management, spy
and co), and this driver has one of the the most complete Wireless Extension
support of all.
Then, Javier Achirica added to the driver the Cisco proprietary API, which
allow communication with Cisco utilities (see section 2.22) and, amongst other
things, flashing new firmware on the card. All this amazing work is in the latest
release from Ben (1.5). He also wrote a couple of open source utilities allowing to
dump all the register of the card and to flash new firmwares through this API.
Lately, the driver has been integrated in the Linux kernel (2.4.6 and later).
Javier has also added the ability to dump raw 802.11 frames.
30
< Linux Wireless LAN Howto >
31
< Linux Wireless LAN Howto >
Non implemented : -
Bugs : Doesn’t work with kernel 2.4.X
License : Cisco open source license
Vendor web page : http://www.aironet.com/
2.22.1 The device
This is the same device as the two previous entry (section 2.20).
2.22.2 The driver
Recently, Cisco decided to get more involved with supporting their Wireless
LAN cards under Linux. Rather than developping an entirely new driver, they
decided to base their work on Ben’s driver (section 2.20), which is a good idea. One
of the key person behind this operation was Jim Veneskey.
The main contribution of Cisco is a proprietary API, which allow
communication with Cisco utilities and, amongst other things, flashing new
firmware on the card, and of course a set of utilities which are mostly identical to
the Windows utilities. They also provided nice installation scripts and did lot’s of
testing of the driver to guarantee its stability (Cisco usually do some pretty
intensive testing of their products).
However, since Cisco grabed a snapshot of Ben’s driver (section 2.20), it
improved as well. As they are derived from the same base, it’s easy to compare the
two drivers. In term of features, I guess that Ben’s driver is winning, because it now
has the Cisco API of this driver and Wireless Extensions (which is not in this
driver). However, I beleive that Cisco has an edge in term of stability.
I hope that the two drivers will merge rather than diverge, and that changes
will be propagated from one to the other, so that we have a driver with both
features and rock solid stability, but only time will tell... Cisco told me that they
were going to try to catch up with Ben’s driver.
2.23 Raytheon Raylink, WebGear Aviator2.4 & Aviator Pro and BUSlink
wireless LAN
Driver status : stable
Driver name : ray_cs.o
Version : 1.67 (stable) and 1.70 (experimental)
Where : Pcmcia package (3.1.9)
Linux kernel (2.3.18 & 2.3.24)
Maintainer : Corey Thomas <[email protected]>
Web page : http://world.std.com/~corey/raylink.html
Documentation : README file + headers
Configuration : modules parameters and Wireless Extension (read only)
Statistics : Wireless Extensions
Multi-devices : yes (except for module parameters setting)
32
< Linux Wireless LAN Howto >
33
< Linux Wireless LAN Howto >
The driver has been developed for the Raytheon Raylink and has also been
successfully tested with the WebGear Aviator2.4 and the BUSlink.
34
< Linux Wireless LAN Howto >
increase the performance. The driver is working for both the NWN and the
BreezeCom cards.
Bas has also implemented Wireless Extension support for the security
support, and support the full range of security features in the driver. You can also
configure the ESSID on the fly with Wireless Extensions...
Lately, Bas has been doing lot of work on roaming support. The driver export
the roaming tables in a /proc interface, allowing the implementation of a user space
roaming daemon. This interface also contains some other configuration
parameters.
35
< Linux Wireless LAN Howto >
36
< Linux Wireless LAN Howto >
37
< Linux Wireless LAN Howto >
38
< Linux Wireless LAN Howto >
ftp://projects.sourceforge.net/pub/pcmcia-cs/contrib/
Creator : Christian Olrog
Maintainer : Alfred Cohen <[email protected]>
Documentation : Readme file
Configuration : module parameters
Statistics : /proc interface
Multi-devices : no
Interoperability : 802.11-FH (only pro.11), interoperate with Windows
Other features : -
Non implemented : security (WEP), power saving
Bugs : -
License : GPL
Vendor web page : http://www.breezecom.com/
2.28.1 The device
The BreezeNet is a Radio LAN using the 2.4 GHz ISM band (Frequency
Hopping). The earlier versions of the Pcmcia cards were OEM of other vendors, the
old one was an OEM version of the Netwave, then it was an OEM version of the
Raylink, but their latest pro.11 Pcmcia card is 100 % BreezeCom (the one with
two little antenna sticks). BreezeCom has also a 802.11-b line, called DS.11, and
the Pcmcia card is a NWN card.
In term of protocol and modem, the Pcmcia cards are very similar to the other
BreezeCom products (see section 2.29). The first two Pcmcia cards were limited in
term of bit-rate (only 1 Mb/s), and have lower transmit power.
2.28.2 The drivers
The driver presented here apply only to the latest pro.11 Pcmcia card. For the
old Pcmcia card (not pro), you may use the newave_cs driver (in all good Pcmcia
packages). For the first pro.11 Pcmcia card, you may use the ray_cs driver (in
recent Pcmcia packages - and therefore get 802.11 compliance). For the DS.11 card
(802.11-b compliant), you may use the swallow_cs driver.
BreezeCom has also release a Linux driver for their latest pro.11 card. I’ve
been informed of the existence of this driver since October 99, and many people
have been using it since by getting it directly from BreezeCom, but BreezeCom did
release this driver to the wide public only 6 months later. Let’s not complain,
because the driver contains the full source and is now GPL, so it was worth the
wait !
The driver was written by Christian Olrog, an employee of Ericsson, based on
the original Windows driver source, and it seems that the maintainance has been
taken over by Alfred Cohen of BreezeCom. The source code looks very nice and
complete, with only a few features missing. One interesting feature is that the
driver can show the signal strength for Access Points in the area. However, the
initial configuration could be simpler...
39
< Linux Wireless LAN Howto >
The driver has been in use by many Linux users since its original
development and there doesn’t seem to have been much complains about it, which
is good ;-)
40
< Linux Wireless LAN Howto >
41
< Linux Wireless LAN Howto >
42
< Linux Wireless LAN Howto >
Some Nokia GSM phones use a kind of half winmodem interface where the
upper layer handling is done by the host. For these phones you need gnokii (http:/
/gnokii.org). This package also provide tools to play with various extra features of
the phone (SMS, address book...).
Of course, the ultimate geek challenge is to use IrDA (see section 2.33.3) to
connect your mobile phone to your laptop. That’s done with PPP over RfComm or
gnokii.
In most cases, Wireless WANs such as CDPD cards, the Metricom Ricochet
and ARDIS should use modem interface as well.
43
< Linux Wireless LAN Howto >
offer as well ISA and PCI versions of their cards, and most other vendors offer some
ISA-to-Pcmcia bridge (separately or included in the box) to allow to plug a Pcmcia
card in a desktop. I’ve seen some cards in PC104 form factor (for embedded
applications), and I expect sooner or later to see cards in Compact Flash form factor
or with a USB interface.
Often, people do wonder about Access Points and residential gateways
and if they need some for their network. In most cases, the Access Point is a bridge
and allow to connect the wireless network to an Ethernet backbone, whereas the
Residential Gateway connect it to an ISP (via dialup/cable/DSL), and those two
kind of products are usually not fully interchangeable. However, most Wireless
LAN cards work in ad-hoc mode (so without Access Point), and a Linux box can
offer connectivity to other networks (routing+proxy ARP, or masquerading).
For people who plan to establish point to point links, they will likely need the
card to offer a connector for an external antenna. Quite often those connectors
are small and not really standard. Of course, if the card doesn’t offer such a
connector, it’s always possible to butcher it...
Then, you may care about all the usual performance characteristics, such as
speed, range, and power consumption. However, be aware that it’s quite
difficult to compare products, for the speed read my various comments about
overhead and benchmarking, and for range pay mostly attention to the transmit
power and the sensitivity.
Finally, each implementation may offer more or less wireless parameters.
Having those parameters will allow to tune the card for specific environments and
configurations. With that, you probably want some deployment and diagnostic
tools from the vendor...
3.3 Interoperability
For people having dealt with Ethernet, it may seem absurd to see all the
interoperability worries that we have to go through for Wireless LANs. But such is
life, and product A may not communicate with product B. To their defense,
Wireless MAC protocols are a few order of magnitude more complex than Ethernet
and have not been around for as long.
For most of the old hardware, and for all the proprietary products,
interoperability is none. In other word, those products communicate only with
products from the same vendor. The risk for you is that you are locked with this
vendor to upgrade your network. That is still OK if the vendor is strong and has
been around in the business for a long time.
The only two standards that have been demonstrated to be interoperable are
802.11-FH and 802.11-DS. I must there applaud the various vendors which have
gone through great pain to make sure that their hardware was playing nice with
others and fixing their interoperability problems. Note that 802.11-FH products
are not interoperable with 802.11-DS products, and vice versa, so you can only mix
products of the same kind of 802.11. For 802.11-b, it is just a simple extension of
802.11-DS (adding 5.5 and 11 Mb/s speeds), and products seem to already
interoperate at higher speed.
44
< Linux Wireless LAN Howto >
3.4 Installation
The reader should be familiar with some of the documents listed in the Useful
readings chapter below, because the information here mainly acts as a complement
to them. A good knowledge of your Wireless LAN is also a prerequisite before
switching to Linux.
Most Wireless LAN vendors have tried to make things easy and offer product
with an interface as similar as possible as Ethernet, and which work mostly the
same way. So, a bit of background on Ethernet and the general Linux networking
is welcomed (see below).
The operating system need a piece of software to interface to the hardware.
That is the role of the driver. Basically, when Linux gives to the driver a packet to
send, the driver have to copy the packet to the hardware and toggle the correct bits
in the correct register on the card to send it. It is the same when the card generates
an interrupt, the driver go and read the packet and give it to Linux. Of course, the
driver needs to know about the specific hardware details and the specific operating
system ways.
In conclusion, you must check first if the driver for your Wireless LAN exists
(see previous section), because in many case it proves to be quite useful...
With Linux, you have to compile the driver source code (some Linux
distribution may offer precompiled modules). There is usually two compilation
options : drivers compiled staticaly in the kernel and as a module. If the driver is
already in the kernel sources, the compilation is quite simple (you have to enable
it in the kernel configuration, static or module). If it is in the Pcmcia package,
you just need to install the package. Otherwise, see the installation instructions
coming with the driver.
Once you’ve got the driver compiled, you must tell your system about it. For
pcmcia drivers, the package has its own configuration scripts (see pcmcia
documentation). For other drivers, you will have to edit the system configuration
scripts. You will likely to have to add a ifconfig line in some script (/etc/init.d/
network for the Debian). There is many other networks configuration files in /etc.
For modules, you need as well to change some stuff in the module configuration
files. See the list of readings below for more information.
45
< Linux Wireless LAN Howto >
For pcmcia modules, the configuration is done in the pcmcia scripts, and
you should check the Pcmcia Howto.
46
< Linux Wireless LAN Howto >
The Wireless Extensions (see next section) has been designed to simplify the
process of setting those parameters under Linux by providing an unified interface
across drivers, but not all drivers support (yet) the Wireless Extensions...
In conclusion, you must read your documentation to know what parameters
need to be set, what they are used for, and look the Linux driver documentation to
know how to set them under Linux. See below for a suggested list of information
sources.
It is usually quite a good idea to install the Wireless Lan first under some
mainstream operating system with the official vendors driver and tools, to have a
feeling of how the beast does work. You might also compare the performance before
and after :-)
Once you’ve got all those new parameters set, your Wireless LAN should be
up and running.
47
< Linux Wireless LAN Howto >
Some network administrators are also a bit scared by security problem over
the medium. The only solution is to use encryption.
48
< Linux Wireless LAN Howto >
After much configuration of the routing tables of your network, you should be able
to get it working.
Some people using the Aironet Arlan cards for this kind of application have
made a very nice Arlan Wireless Routing Howto, and I believe it can apply to
most other Wireless LANs as well :
http://www.rage.net/wireless/wireless-howto.html
Note that it is not always possible to use a bridging software on top of a
Wireless LAN card, and that is why I do recommend routing (or proxy-ARP + IP
forwarding). Setting the card in promiscuous mode won’t give the behavior
expected by the bridge, because of the interaction with MAC level retransmissions.
Some drivers are clever enough, and by playing directly with the 802.11 headers (if
the hardware allows it), they can allow bridging to work, but most drivers are not.
3.13 Reliability
Most Wireless LANs protocols include mechanisms to improve the reliability
of the packet transmissions to be at the same level or even better than Ethernet
(MAC level retransmissions for example). Anyway, if you are using a protocol such
as TCP (the default under Linux), you will be fully protected again any loss or
corruption of data over the air. In other word, when you copy a file across the radio,
it can’t be corrupted (but it might fail).
49
< Linux Wireless LAN Howto >
3.14 Coverage
As said earlier, people get excited about speed, and they often don’t realise
that the main measure of performance of a wireless LAN is the coverage, and by
a wide margin. This includes maximum distance between nodes, resistance to
interferences and ability to keep connectivity in a wide range of conditions.
The propagation of radio transmissions is influenced by many factors. Walls
and floors tend to decrease and reflect the signal, and background noise make it
more difficult to extract. The channel quality vary quite a lot over the time (fading).
Depending on the quality of reception, the error rate will change (forcing
packet retransmissions), or the system may switch to a more robust (and slower)
mode (fragmentation or modulation), so the actual throughput will vary from good
to nothing.
Because of the way radio transmission are affected by the environment, it is
quite difficult to predict the comportment of the system and to define a range. You
will have some good, fair and bad area/period, the closer you are the more likely
you are to be in a good one.
3.15 Mobility
One of the main advantage of Wireless LANs is that they offer mobility. It
mean that even when moving around, you retain your connection to the network.
Of course, this mobility is limited by the range of the Wireless LAN. To extend
the range, you must cover the area with access points, which very often include
roaming : you switch transparently to the closer access point which provide you a
connection to the rest of the world and nodes out of range.
Note that most cheap Access Point don’t include roaming (to force you to buy
the more expensive Access Point version), and that Access Points of different
vendors usually don’t fully interoperate (the Access Points don’t talk to each other).
If you want to move across IP subnets, this is time to try Mobile IP :-)
50
< Linux Wireless LAN Howto >
two things, snoop your communications (for example to read the e-mail you are
sending) or access your ressources (for example your access to the Internet).
For most users, the network identifier will be enough protection against
casual users : other people can’t accidentally join your network by mistake, unless
they guess the correct network identifier or really try to attack you. Trying to
discover the network identifier is usually not as easy as it seems, unless you use
social engineering...
Some people are more concerned about those issues or may want to increase
the security of their system. Some Wireless LANs offer MAC level encryption
(sometimes only as an option), which is designed for those concerned users and
target security equivalent to a having a shared Ethernet cable (i.e. not much), and
a few systems offer stronger encryption (but still considered weak by some experts
because of the distributed single key and the lack of per-packet authentication).
With these schemes, each packet transmitted over the network is individually
encrypted, and the card refuses unencrypted data. This encryption is totally
transparent to the higher layer and the user just need to set the same encryption
key in the access point and all nodes of the network. The main advantage of those
scheme is that they are very easy to set up.
Recently, various attacks have been found on WEP, the MAC level encryption
scheme of 802.11, which illustrate that WEP is not more secure than what it was
designed for (and probably less - but WEP is still better than nothing). Other
products may use other security mechanism, but designing a secure AND user
friendly AND cost effective security mechanism at the MAC layer is nearly
impossible, and wireless manufacturers are usually not security expert, so most
people serious about security already use a security solution independant of
the wireless link (like a regular VPN, see below). This separation of wireless and
security has other advantages (independant upgrades for example).
I would still argue that most home users don’t really need security beyond
preventing people accidentally joining your network. Most web site that you will
access over wireless and that handle critical information already use SSL to
encrypt those transactions, which is proven to be very secure, and there exist
secure versions of POP or IMAP (still using SSL). Users that access remote
Intranets most often already uses VPN software.
For those who need it, like if you are paranoid, your life depends on it, or if the
wireless link is already behind a firewall, you need to set up a encrypted tunnel
above the wireless link with a VPN protocol. Various VPN protocols can be used
with Linux, such as IPsec, PPTP and SSH (IPsec is the ultimate security solution,
but much more complex to set up and not much more secure). You will need to
setup a VPN gateway on the other side of the Access Points and the VPN software
on every wireless device. That’s usually complicated to setup, but that’s the price
for security.
3.17 Benchmarks
For all the reasons described above, I think it is quite tricky to benchmark
Wireless LANs, and measuring coverage or throughput in isolation is not fair.
51
< Linux Wireless LAN Howto >
Remember that coverage matters much more than raw performance in real life.
This is why I don’t give any performance numbers. Some computer magazine
publish from time to time some extensive review of all those products and try to do
some performance comparison more or less real life.
If you want to test the throughput of your device, you should use a tool called
Netperf. You might want to submit your results in the database...
http://www.netperf.org/netperf/NetperfPage.html
3.18 Tuning
More and more, vendors are delivering products in configuration that look
good in benchmarks and doesn’t perform as well in real life. This is where you need
to tune a few parameters to get better performance.
Some vendors ship products with RTS/CTS disabled. This is the best setting
if you have only two nodes, but when you have a fair number of nodes active at the
same time, RTS/CTS can increase the performance. And of course, if you have
hidden nodes, you can not get away without it...
Some vendors also tend to set the number of MAC retransmissions a bit
low for my taste. If you use TCP, this might improve your performance slightly
under good conditions, because TCP do its own retransmissions. However, all
applications not using TCP (ping, RTP, NFS...) might suffer from the packet losses.
On a related note, you can play with the bit-rate setting of the card. Most
cards nowadays include a rate-adaptation scheme, which adapt the bit-rate to the
range : basically the card try transmitting at the highest rate and decrease the rate
in case of packet losses. However, in configuration with large number of active
nodes, packet losses also come from the contention process, so disabling this rate
adaptation scheme (forcing the highest rate) can increase performance in some
cases.
If you have interferers in the band, you might need to enable fragmentation
(send smaller packet to fit between interferences) and to raise the sensibility (tell
the card to ignore the noise). Of course, the best thing is to eliminate the interferer,
if possible.
If you have different Access Points and have enabled roaming, you should also
set carefully the roaming threshold, which is the point (in signal strength) at
which the card search for a new Access Point. If you set it too low, the card will
spend to much time with a non optimal AP (getting a poorer throughput), and if
you set it too high the card will waste time searching for a new AP too often.
To finish, all this fine tuning and optimisation could/should be done in the
card itself, the card itself has most of the information it needs to optimise those
settings and the algorithms are not that complex (I describe some in my latest
paper). Let’s hope the vendors will work on that...
52
< Linux Wireless LAN Howto >
53