The devices, the drivers - 802.11a, 802.11g and 802.11n

Jean Tourrilhes

25 July 07

The who's who of Wireless LANs under Linux.

This section list devices going beyond the IEEE 802.11b standard, such
as those based on the IEEE 802.11a, 802.11g and 802.11n standards (see
section 8), offering
bitrates higher than 11 Mb/s in the 2.4 GHz and 5.2 GHz
bands.

4.1.1 The device

In 2001, TI (Texas Instruments) decided to make a big push on the
802.11 market. Because there was already many other 802.11 vendors, TI
needed to differentiate themselves. Their solution was to introduce a
chip with faster data rate. TI introduced a new modulation,
PBCC (Packet Binary Convolutional) at 5.5, 11 and 22 Mb/s,
which offers higher speed and longer range than 802.11b modulations
(CCK).

However, to get the market to accept PBCC, TI needed the stamp of
approval of the IEEE standard group. Other vendors within the IEEE
were not keen to give TI any advantage, and decided to base 802.11g on
the OFDM modulation rather than PBCC. After much political fight, the
final 802.11g standard include both OFDM (mandatory) and PBCC
(optional). Because PBCC is only optional and slower, I don't expect
anybody else than TI to implement it.

The ACX100 was one of the first second generation 802.11b
chipset. It is based on a ARM7 core, and offer both a PCI/Cardbus and
USB interface. The use of PCI busmaster allow to reduce CPU
utilisation compared to 16 bit cards. The MAC includes all the common
802.11 features, the Phy implement the regular 802.11b modulations and
PBCC. The design goal seems to have been performance and features.

As soon as TI released its ACX100 chipset, many usual vendors started
selling PCI, Cardbus and USB cards based on it, for example the D-Link
520+ and 650+ cards based on it. All the cards that support up to
22 Mb/s are based on this chipset.

The ACX100 is known for its requirement for PCI2.2 mainboards (lack
thereof or some other reason may lead to conflicts with other cards
such as SB Live! and crashes). This is not specific to the ACX100,
other modern wireless chipsets also tend to require PCI2.2.

Note that TI has released newer chipsets, the
TNETW1100b/1130/1230 chipsets, also called ACX111, which
add support for 802.11g and 802.11a, and don't seem to be driver
compatible with the ACX100. All cards supporting both 22 Mb/s
and 802.11g/a are based on those chipsets. Note that for 802.11g, a
name including "plus" does not imply a TI chipset, D-Link has a range
of 802.11g "plus" cards including Atheros chipsets.

4.1.2 The driver

From the start, TI has refused to give any help towards a Linux driver
and have decided to totally ignore the Linux community. Toward the end
of 2002, a binary Linux driver was leaked on the net. Because this
binary driver is not officially released by any vendor, its legal
status is unclear (and therefore it is not listed here). Moreover,
this driver was compiled for a very specific kernel and was overall
very problematic to install and use.

A group of people using this driver got fed up with the situation and
decided to reverse engineer the binary driver by disassembling
it. This is a huge task, as this hardware and driver are fairly
complex, and most other reverse engineering project I've heard off
eventually failed. After a few month of work, they eventually released
their first version of the ACX100 opensource driver.

The initial driver was very experimental, but it evolved fairly
rapidly, as Andy was working hard on the driver fixing
bugs. Most basic features are now working (Ad-Hoc and Infrastructure
mode, WEP, Wireless Extensions, statistics...), and some advanced
features are implemented (monitor mode, 2.6.X support...). However,
there are still lockups or eventual traffic loss on some
machines/networks, power management/hotplug is
experimental. Preliminary support for USB and ACX111 devices has been
added, but this is not yet complete. Denis joined and fixed
support for ACX111, as well as ton of other bugs.

Around mid 2005, Denis created a branch of the driver targeted
at inclusion in kernel 2.6.X. He dropped support for 2.4.X and some
non standard features such as the old firmware loader, and fixed many
bugs. For example, support for USB dongles, 64 bits, SMP is now
functional. This driver was included in Andrew's kernels (-mm
version), and meanwhile can be made to compile for standard
kernels. This version got almost included in the Linux kernel but was
eventually rejected, and also dropped from -mm kernels.

The initial ACX100 driver contains its own 802.11 code. When the
SoftMAC 802.11 stack became available in 2005 (see section 4.13), Andi and
Denis ported the driver to it. This SoftMAC driver is currently
in alpha stage. This driver was included in wireless-2.6 GIT
repository, in preparation for inclusion in the kernel, and later
dropped. The concern is that there was no clean separation between the
people that did the reverse engineering and those who wrote the
driver, unlike what was done for the Broadcom driver (see section 4.13).

In 2006, Jeff and Carlos started porting the driver to
the new mac80211 kernel stack (see section 4.9). Their intention
is to initially replace the SoftMAC driver, and eventually replace the
initial driver. The driver is currently in experimental stage.

In parallel, the branches of the initial driver from Andi and
Denis were merged. Andi has still been busy fixing
various bug and keeping this driver up to date with respect to kernel
changes. This is the version of the driver recommended for maximum
stability.

4.2.1 The device

Atheros was the first company to release a complete 802.11a solution,
and therefore most existing products are based on it. Proxim
was the first company releasing products based on the Atheros chipset,
but other familiar names such as Linksys, D-Link and
SMC did follow quickly.

Most vendor offer a CardBus card (32 bits Pcmcia) and Access Points,
and a few offer PCI solutions.

The first Atheros chipset, ar5210, implement the full
802.11a standard. The MAC protocol is identical to 802.11b, the
Atheros chipset offer both infrastructure and ad-hoc mode, enhanced
WEP with per link keys (for 802.1x) The radio modem use OFDM in the 5
GHz band (8 separate channels), with speeds from 6 Mb/s to 54 Mb/s
(depending on range).

The Atheros chipset has a few proprietary features, such as its X2
mode (turbo) that allow to double the rate by using two channels in
parallel (unfortunately, it also increases the sensitivity to
interferences, decrease the number of channels and is incompatible
with 802.11a).

The Atheros cards offer a busmaster host interface, allowing high
performance and low CPU utilisation (almost all 802.11b cards are
limited to PIO, which keeps the CPU busy). The card deals only with
the low level of the MAC protocol, and the driver has to deal with all
the 802.11 management (making driver development more
complicated). The other main characteristics of the Atheros chipset is
that it's a fully CMOS solution (including the radio), which reduces
the cost.

Atheros has released its second generation chipset, derived from the
initial ar5210, that have better performance and are no longer limited
to only 802.11a. The ar5211 support both 802.11a and
802.11b, whereas the ar5212 support 802.11a,
802.11b and 802.11g. The following chipsets from Atheros
(ar5213, ar5214, ar5413, ar5414, ar5513) kept the basic same
design and features and mostly added a wide range of proposed
enhancements to the 802.11g/a standard, add 802.11e QoS or proprietary
extensions, such as Turbo mode (bound two channels), bursting and
proprietary MIMO.

After that, Atheros released a number of more specialised chipsets,
such as single-chip solutions (integrating both MAC and radio on the
same chip) and PCI-Express chipsets. Their USB chipset AR5007UG is the
former ZyDAS ZD1211 (see section
4.14). Their new generation chipset, such as the
ar5416, support draft-802.11n MIMO (up to 300 Mb/s), and
obviously adds new proprietary extensions.

There is many products on the market using Atheros chipsets. In fact,
the vast majority of 802.11a cards are based Atheros
chipset. Most all the 802.11g cards that advertise 108 Mb/s are
also based on Atheros chipsets.

4.2.2 The driver

Sam, with the help of Atheros, had created a BSD driver for
those cards some time ago. Unfortunately, he was unable to release it
because of the FCC regulations. The Atheros hardware is basic and
doesn't enforce that valid operating parameters are set (such as
frequency and power level) and does not ensure compliance to the
various radio regulations, however the regulatory
organisations, such as the FCC and ETSI, mandate that end user should
not be able to set invalid operating parameters. Eventually,
Atheros managed to find a solution that was acceptable : they
created a HAL, a binary layer that sits between the hardware
and the driver and enforces that radio regulations are respected. The
downside is that the HAL is available only for selected architectures
(i386, PPC, Arm, Mips, SH4, Alpha and Sparc64).

In the mean time, Sam had ported is original BSD driver to
Linux, and integrated into Linux. Like the BSD driver, the initial
MADWiFi driver is based on the HAL, however it supports Wireless
Extensions and Wireless Scanning (which are Linux specific). This
driver requires a recent 2.4.X kernel or 2.6.X kernel, and requires
Wireless Extensions V14 or later.

As the hardware is basic, a lot of the 802.11 functionality is handled
in the driver (as opposed to firmware). To handle this, Sam has
created a 802.11 stack for this driver that became the de-facto 802.11
stack of BSD operating systems. This is a lot of code, and for the
first release there was still some bugs and many features and
optimisations missing (for example, Ad-Hoc mode is not yet
functional). The good news is that over time, the performance and
functionality of this driver increased. Lately, WPA support has been
added to the driver (which is a lot of work).

In early 2005, the project went into hibernation, no new release was
done and activity slowed down. Then, in mid 2005 the project was
re-energised, and Michael took over the driver maintenance. He
is coordinating the work on a new branch of the driver called
madwifi-ng created by Atheros to support more recent cards and
their features. This is now the main branch of the driver, seeing
active development, and the old branch has been deprecated.

This driver has a vast number of features and good hardware
compatibility, thanks to the support from Atheros and the close
integration with the 802.11 stack. Nearly all features of the hardware
are supported (QoS and performance enhancements). The driver also
support virtual network interfaces (called VAP), which allow one card
to act as multiple 802.11 devices.

The MadWiFi project has recently added two other branches of the
driver. The first branch is called DadWiFi and is a port of the
driver to the new mac80211 kernel stack (see section 4.9). Currently, the
mac80211 stack does not offer much more than the 802.11 stack in the
madwifi-ng driver, but with time it may change.

The other branch is called OpenHAL, it is a replacement of the
binary only HAL with OpenSource code. The OpenHAL is mostly a port
from the OpenBSD Atheros driver called ar5k from Reyk Floeter,
which itself is derived from the vt_ar5k driver for Linux written by
Reyk, which was listed in this document a few years ago. The
work on OpenHal and the port to mac80211 would make this driver more
likely to go in the Linux kernel at some point in the future.

4.3.1 The device

The Prism Indigo, Prism GT and Prism Duette are the third generation
of chipsets from Intersil, logical follower of the second generation
PrismII and Prism3 chipsets (see section
3.6). The Prism Indigo was released first, and support
802.11a (5 GHz band). The Prism GT support 802.11g (and
802.11b - 2.4 GHz band). The Prism Duette support both
802.11a and 802.11g (in both the 2.4 GHz and 5 GHz band).

Because of the limitations of the previous PrismII design, those new
chipsets feature a totally new design, much cleaner and much more
efficient, and doesn't share much in common with the earlier Prism
designs, but is more likely to be related to the NWN MAC that Intersil
acquired (see section
3.17).

The chipset is highly integrated (2 or 3 chip solutions). Like
previous Prism chipsets, most of the 802.11 management is handed in
firmware. However, the bus interface is now PCI DMA only (less CPU
overhead, faster). The MAC support the usual 802.11 features, and
hardware WEP and AES encryption, and the firmware fully act as an
Access Point. The Radio implement the OFDM modulation necessary to
support 802.11a and 802.11g.

There doesn't seem to be any products using the Prism Indigo chipset
(most card offering 802.11a are based on Atheros chipset - see section 4.2), and I don't expect to
see any in the future. A few of the usual Intersil partners, such as
Netgear and SMC, have started selling 802.11g cards
based on the Prism GT and Prism Duette chipsets.

Note that there are two types of firmware for this card, the FullMAC
firmware, that can handle most of the 802.11 functionality by itself,
and the SoftMAC firmware, that delegates it to the driver. Older
revision of the hardware can handle both types of firmware, whereas
newer revisions can only handle the SoftMAC firmware. Cards that can
support the older FullMAC firmware are now very difficult to find.

After releasing this chipset, the wireless division of Intersil
(formerly part of Harris) was bought by GlobespanVirata, and
after a few month, GlobespanVirata merged with
Conexant. Therefore, the Prism chipsets are now sold by
Conexant.

4.3.2 The driver

This driver was written and released as GPL by Intersil
themselves ! This is a much stronger commitment to OpenSource
than some other vendors have made. Unfortunately, after the aquisition
by Conexant, they stopped contributing to the OpenSource community.

Luis, Frederik and Sebastian are taking care of
this driver after the initial release from Intersil and helping people
with the driver. They are fixing bugs and improving compatibility
with the various kernels and configurations. Aurelien has done
a tremendous work on Wireless Extensions support.

After an initial frenetic pace of changes and reorganisation, the
driver has stabilised and matured, and is now included in the Linux
2.6.X kernel. The driver requires firmware download (through the
standard HotPlug support) and has full support for Wireless Extensions
(including Wireless Scanning) and monitor mode. The driver also can
act as an Access Point through a FirmwareAP mode (all the AP
management is handled by the firmware). Full support for WPA has been
added recently to the driver.

One of the limitation of the driver is that it does not support the
new SoftMAC devices, which means that it only works with older Prism54
devices. For SoftMAC devices, you will need the SoftMAC driver (see section 4.4).

4.4.1 The device

After Conexant acquired the Prism54 family of chipsets (see section 4.3), the Prism54 chipsets changed
their mode of operation from FullMAC, where the firmware handle
all the 802.11 protocol, to SoftMAC, where the driver has to
handle all the 802.11 protocol. This allows to reduce the cost of the
cards by decreasing the on-board memory and flash. However, the
chipset is no longer compatible at the driver level, because the
firmware is different. Older devices can support both types of
firmwares, newer card with less memory can not accommodate the FullMAC
firmwares. All the Prism54 USB devices and most recent PCI/Cardbus
cards can only support SoftMAC operation.

Conexant also released the Prism WorldRadio, an enhanced
version of the Prism Duette with 802.11a and 802.11g support with
proprietary bit rate enhancement. Then, they released the CX85510,
which adds QoS and more security features, and the CX3110x, a single
chip solution.

4.4.2 The driver

Up to that point, Intersil had a long tradition of being one of
the most friendly vendor towards Linux, and they did help the many
Linux drivers and even released themselves the Prism54 FullMAC driver
(see section 4.3). However, after being
acquired by Conexant and with the release of SoftMAC devices, they
decided to ignore the Linux community. The Prism54 team tried for
months to negotiate the release of specs in vain.

Jean-Baptiste has led the effort to reverse engineer the
Windows driver and create a driver for the Prism54 SoftMAC devices. He
reversed engineered the driver by loading it with ndiswrapper and
spying on the USB traffic, as opposed to other effort that actually
disassemble a driver.

Jean-Baptiste is mostly concentrating on support for USB
devices, however support for PCI devices was added as well to the
Prism54 SoftMAC driver. The driver is based on the 802.11 stack from
the MadWifi project (see section
4.2). The driver is claimed to work, but at the time of
writing not tarball or release seems to be available.

4.5.1 The device

4.5.2 The driver

When Jean-Baptiste decided to write the SoftMAC Prism54 driver
(see section 4.4), he decided to
use the 802.11 stack from the MadWifi project (see section 4.2), which is one of the
most fully featured 802.11 stack available. Since then, the Linux
kernel developers decided to standardise on the mac80211 stack
(see section 4.9), and
therefore a driver using another stack can not be included in the
kernel.

Michael ported the work of Jean-Baptiste to the mac80211
stack, with the goal of merging it in the Linux kernel in the near
future. The driver has two versions, one for PCI/Cardbus devices and
one for USB devices. This driver is only available in the wireless-dev
GIT repository, and not much documentation is available about it.

4.6.1 The device

The Intel PRO/Wireless 2200 is the second 802.11 product
designed by Intel, following the previous PRO/Wireless 2100 product
(section
3.28). It mostly adds support for 802.11g (i.e. faster data
rates). The PRO/Wireless 2915 is their third 802.11 product,
and adds support for 802.11a.

The design of the 2200 and 2915 are based on the original 2100, the
main improvement are the new radio modems and better support for the
new security protocols (WPA). The MAC core still support the same vast
array of standard 802.11 features. The radio are obviously different,
adding the OFDM bit-rates, up to 54 Mb/s, and support for
5 GHz frequencies for the 2915.

The marketing program is still the same, and the PRO/Wireless 2200 and
2915 Mini-PCI cards are exclusively sold as part of the
Centrino package, therefore you will mostly find them
integrated in various laptops, and not as a separate add-on card.

If you really want a separate add-on card, Intel also sells the Intel
PRO/Wireless 2225, which is basically the PRO/Wireless 2200 in
a half-height PCI card and sold separatly. And obviously, it's not
called Centrino. And this card is very hard to find and buy, and is
not listed on Intel web site.

Some people, such as Passys, have built PCI to Mini-PCI
adapters for the PRO/Wireless 2200. This allows to put a standard
Mini-PCI PRO/Wireless 2200 in any regular desktop, and it is supported
by Linux.

4.6.2 The driver

Intel is actively supporting the driver for both the
PRO/Wireless 2200 and 2915, like they do for the PRO/Wireless 2100 (section
3.28). James is still leading the development of this
driver. The driver is fully OpenSource, and like for the 2100 require
a specific firmware.

Obviously, the driver share a lot of code with the 2100 driver, it
supports both the 2200 and the 2915 and offer a similar
rich feature set (WEP, WPA, Scanning). The development is very active
and many bug are being fixed and features added.

The 802.11 code originally taken from the HostAP driver (see section
3.8) was eventually spin-off into the separate Intel
ieee80211 stack (see section
3.28). This driver and the 802.11 stack was included in Linux
kernel 2.6.14.

4.7.1 The device

4.7.2 The driver

Intel is one of the most active company when it comes to Linux
wireless drivers. After releasing the standard driver for the
PRO/Wireless 2200 and 2915 (see section
4.6), they released an alternate driver with Access Point mode
(HostAP mode), which let you use your card as an Access Point.

The driver is still based on the 802.11 code originally taken from the
HostAP driver (see section
3.8), it is a variant of the Intel ieee80211 stack (see section
3.28) that includes the HostAP functionality. This driver
requires a specific firmware for the card, provided by Intel. This
driver seems to be updated less often than the standard drivers.

4.8.1 The device

The Intel PRO/Wireless 3945 is the third 802.11 product
designed by Intel, following the previous PRO/Wireless 2200
product (see section 4.6). The main
goal was to reduce the cost and the size of the previous chipset,
however Intel has added a few novel features such as WakeOnWLAN and
better VoIP support.

Like their previous chipset, the 3945 is only available as a
MiniPCI card for Intel Centrino processor, integrated in
various laptops, and not available as a separate add-on card.

4.8.2 The driver

Like for all their previous chipset, Intel decided to release a driver
for this chipset. However, they were faced with a problem. To achieve
reduced cost, a lot of functionality was moved from the
hardware/firmware into the driver. The task of insuring compliance
with various radio regulations was moved out of the hardware,
which is an issue because regulatory organisations, such as the FCC
and ETSI, mandate that end user should not be able to set invalid
operating parameters. This is the reason why the Atheros drivers
contains a binary HAL (see section
4.2).

Intel opted for a different approach, they created a fully
OpenSource driver and moved regulation compliance to a binary
userspace daemon interacting with the driver. This is technically
better than using a binary driver, as the driver could be included in
the kernel and the user just need to add the binary daemon to his
system, which is simpler than adding a kernel driver. However, this
has similar downside as a binary driver, the platform support is
limited (currently only to x86 and x86-64).

The driver is similar to the ipw2200 driver (see section 4.6), it share a lot of code
with it, has a similar set of features and uses the same Intel
ieee80211 stack (see section
3.28).

Note that Intel has a second driver for this hardware using the new
mac80211 kernel stack (see section 4.9).

4.9.1 The device

4.9.2 The driver

With all their previous drivers, Intel were using their
Intel ieee80211 stack (see section
3.28), derived from the HostAP driver (see section
3.8). This stack is a good match for the previous Intel
chipsets, however it is not well suited to the 3945 and other modern
wireless chipset from other vendors due to the fact that it does not
handle the MAC management functionality. The SoftMAC addition to Intel
ieee80211 stack adds such function (see section
4.13), but is very limited in functionality compared to modern
802.11 stacks such as the MadWiFi stack (see section 4.2).

For these reasons, various driver maintainers decided to standardised
on a new stack, the mac80211 stack. This stack was initially
released in middle 2006 by DeviceScape, a Linux consulting company,
and was mostly designed by Jouni Malinen, author of the HostAP
driver (see section
3.8). After this release, the DeviceScape stack was very
heavily reworked by Jiri Benc, Michael Wu and Zhu
Yi and the rest of the Linux wireless community, to become
mac80211. The mac80211 stack was included in kernel 2.6.22, but it is
still experimental and a lot of work remains. For example, early
version of mac80211 have deadlocks and are not SMP safe.

Intel was obviously interested in this new mac80211 stack, as
in the long term it makes their driver better and easier to
maintain. Intel is contributing to the mac80211 stack, and they also
have their own branch of mac80211 with features needed by their driver
and not found yet in the kernel stack (but planed to be merged later).

Intel also ported their driver for the 3945 chipset to the new
mac80211 stack, as part of the iwlwifi package. The driver is
still experimental and under heavy development.

The previous driver for the 3945 requires a binary daemon for
regulation compliance, but this turned out to be not
satisfactory. Intel decided to rewrite the firmware for the 3945 to
ensure regulation compliance. This means that the iwlwifi Linux driver
requires its own specific firmware, and that the driver can be
fully OpenSource without binary daemon. This represents an impressive
commitment to the Linux community.

4.10.1 The device

The Intel PRO/Wireless 4965 is the fourth 802.11 product
designed by Intel, following the previous PRO/Wireless 3945 product
(section 4.8). It mostly adds
support for draft-802.11n support, i.e. MIMO.

MIMO uses multiple antennas to simultaneously transmit or receive
signal, and using some clever processing can achieve much greater
range or speed than regular transmissions. The 802.11n standard is not
yet finalised, which is why those products are called draft-802.11n
compliant. It offer bitrate up to 300 Mb/s (most users won't see
that in practice), and may double the range indoors.

Like their previous chipset, the 4965 is only available as a
MiniPCI card for Intel Centrino processor, integrated in
various laptops, and not available as a separate add-on card.

4.10.2 The driver

For the 4965, Intel decided to directly based their driver on
the new mac80211 kernel stack (see section 4.9). This driver is
part of the iwlwifi package, and currently requires a version
of mac80211 with Intel changes to support draft-802.11n. This driver
also require a specific firmware the ensure regulation compliance.

4.11.1 The device

Ralink may have been late in releasing a 802.11b chipset, the RT2400
(section
3.27), however it was fairly quickly followed by the
RT2500, a 802.11g chipset. The RT2500 is a evolution of the
RT2400, and share many characteristics with it.

Like other 802.11g chipsets, it supports standard OFDM bitrates up to
54 Mb/s and all modern 802.11 features such as WPA and QoS
(802.11e). On top of that, it support a proprietary 72 Mb/s
bitrate. The RT2500 is designed for MiniPCI and CardBus interfaces,
and the RT2570 is designed with a USB 2.0 interface.

As usual, this chipset is sold by a wide variety of vendors under
different model names, and some of those use the same model name for
different chipsets. The project pages includes a long list of cards
including this chipset. A special mention to Minitar which has a
dedicated Linux support forum.

The RT2500 was quickly followed by other 802.11g chipsets. The
RT61 family includes the rt2561 and rt2661 PCI chipsets and
adds support for turbo bit rate (100 Mb/s) and for the rt2661 only
proprietary MIMO (not 802.11n compatible). The RT73 family
includes the RT2573 and RT2571 USB chipsets, and is the equivalent of
the RT61 (but without the MIMO chipset). Those chipset are available
with two radio options, 2.4 GHz only, or 2.4 GHz plus 5 GHz, for
additional 802.11a support.

Ralink has now released the RT2800 family. The main feature of
those chipset is the addition of draft-802.11n MIMO support.

4.11.2 The driver

Like for the RT2400, Ralink wrote a Linux driver for the RT2500
and RT2750, but this time they decided to release it themselves as
GPL. Moreover, the driver is functional, full of features and with a
graphical utility, so this represent a very generous contribution to
the OpenSource community. The driver supports WEP, WPA, Scanning and
Monitor mode...

Mark integrated this driver in the existing SourceForge project
for the RT2400 driver and started to maintain it. Many patches have
been integrated to improve the stability and functionality of the
driver.

After that, Ralink released the RT61 driver and the
RT73 driver, to support the new 802.11g chipset. Those drivers
are GPL and have the same features as the RT2500 chipset. Mark
has integrated this driver in the existing SourceForge project, and
the community is provided various improvement to those drivers.

Ivo has started a rewrite of those drivers, called
rt2x00, his goal is to have a source code easier to integrate
in the Linux kernel and to maintain. His rewrite targets both the
RT2400 (see section
3.27), the RT2500, the RT61 and RT73. The initial version of
this new driver was using the Intel ieee80211 stack from the Centrino
driver (see section
3.28).

Then, Ivo ported the driver to the new mac80211 kernel
stack (see section 4.9),
and lots of development has happened on that version of the
driver. This alternate version is available in the wireless-dev GIT
repository and in the CVS, and should appear in a Linux kernel in the
future.

4.7.1 The device

4.7.2 The driver

Jeremy has ported the BSD driver for the RT2750 to
Linux. This port is based on the 802.11 stack from the MadWifi
project (see section 4.2) and
support only USB devices. This driver is experimental and has not seen
much work since 2005.

4.13.1 The device

Broadcom is a company that is developing all king of networking
solutions, and well known for its Ethernet chipsets. When it decided
to enter the Wireless LAN market, they decided a bold
strategy. Instead of releasing a 802.11b product, which was the only
standard at that time, they decided to release a product based on the
upcoming 802.11g specification that was still one year from
completion. Most competitors were taken by surprise, consumer were
attracted by the higher speed and Broadcom quickly gained a good
market share. When the 802.11g standard was eventually released,
Broadcom quickly upgraded to it, and for a while the vast majority of
802.11g card were based on Broadcom chipsets. Many laptops of that
period also included Broadcom chipsets. The Apple Airport
Express is also based on the Broadcom chipset.

Eventually, the competition caught up, started offering more features
than Broadcom or cheaper prices, and a lot of vendor using Broadcom
chipsets migrated to other chipsets. Linksys is still a
Broadcom stronghold, and a large portion of their 802.11g products are
based on Broadcom chipsets (but not exclusively). A lot of laptops
today that offer 802.11 includes either an Intel Centrino or a
Broadcom chipset.

Like most 802.11g chipsets, the BCM43xx chipsets support standard OFDM
bitrates up to 54 Mb/s and all modern 802.11 features such as WPA and
QoS (802.11e). Broadcom has a complete family of chipsets, each
iteration lowering the price or adding features. Their newer chipsets
add support for 802.11a and pre-802.11n MIMO, and also add USB and
PCI-Express interfaces.

Broadcom first proprietary extension is SpeedBooster, Broadcom's name
for Packet Bursting, which is part of the 802.11e standard. They have
few proprietary extension, their newer chipsets include a proprietary
125 High Speed Mode : this is not a enhanced modulation at 125 Mb/s,
the card still use 54 Mb/s and a combination of protocol enhancement
and compression. In fact, if a card advertise 125 Mb/s (which
is misleading), it's a good clue that it's most likely a Broadcom
card. Broadcom also advertise BroadRange, which is mostly a higher
radio sensitivity.

Broadcom has two main firmware version, V3 and V4. Most cards can run
both firmware, however older cards do not support V3 (such as the
BCM4301 chipset, which is 802.11b only). Firmware V4 is necessary for
most of the more advanced features.

4.13.2 The driver

Like TI (see section 4.1), Broadcom
quickly gained a reputation as being very unfriendly to Linux. It was
known that Broadcom internally had a fully functional Linux driver,
but it was unwilling to release it in any form (even binary), and was
not answering call for chipset specifications. However, soon people
realised that the Linksys WRT54G, a router/access point with a
Broadcom chipset, was based on Linux. Linksys was made aware that,
because Linux is GPL, they had to release the full source code of the
WRT54G firmware, which they promptly did. This source code contained a
binary Linux driver for the Broadcom chipset.

A team of people led by Brett Wooldridge, Joe Jezak and
Johannes Berg started to reverse engineer this driver by
disassembling it, like it was done for the TI driver (see section 4.1). They did not write directly a
driver, they produced a set of documentation so that the driver
development would be legally separate from the reverse engineering
effort.

A second team of people led by Michael started to write a
driver based on those documents. They based their driver on the
Intel ieee80211 stack from the Centrino driver (see section
3.28), and added a SoftMAC layer. The SoftMAC layer add
all the MAC management functionality missing from the Intel ieee80211
stack. Both the driver and the SoftMAC stack were merged in the Linux
kernel 2.6.17.

The driver and SoftMAC have seen tremendous development and reached a
point where they are usable and stable. Support for more variations of
the Broadcom chipset was added, such as PCI-E, support basic and
advanced encryption was added. This driver only supports firmware
V3.

In 2006, Michael started porting the driver to the new
mac80211 kernel stack (see section 4.9). Along the way,
the driver was significantly changed, this version only supports
firmware V4 (so dropped support for older cards), and should
offer support for the advanced features not supported in the SoftMAC
driver, such as 802.11a. The mac80211 version is only available in the
wireless-dev GIT repository, and should appear in a Linux kernel in
the future.

In parallel, Larry has reused the SoftMAC driver and the
mac80211 driver above to create an alternate driver for the mac80211
kernel stack that support only firmware V3. This driver
supports cards that are not supported by the other mac80211
driver. Note that the names of all those drivers is currently in flux.

4.14.1 The device

After the release of the ZD1201 (see section
3.29), the logical step for ZyDAs was to release a 802.11g
chipset, the ZD1211. This chipset has similar features as other
802.11g chipset, such as advanced security features, and it seems that
some version also support 802.11a.

The main feature of ZyDAS chipsets is their small size and low power
consumption, making them especially suitable for USB
dongles. Actually, it seems that this chipset is only found in USB
dongles, even though it support other interfaces (PCI and Pcmcia). USB
2.0 is needed for full 802.11g operation.

ZyDAS was acquired by Atheros, and the ZD1211 is now known as
Atheros AR5007UG.

4.14.2 The driver

Like for the ZD1201 (see section
3.29), ZyDAS themselves released a driver to support the
ZD1211 under the GPL license.

At this point, a community organised around this driver : many people
contributed patches and created branches of the driver. Most of the
branches, which were aiming at simplifying the driver code or
integrating it in the kernel, seems to have died. Instead, a new
driver was written (see section 4.15).

Meanwhile, ZyDAS continues to release new version of the driver
including bug fixes and patches from the community. Markus is hosting
this driver and many patches on his web site.

4.15.1 The device

4.15.2 The driver

Various effort to cleanup and simplify the ZyDAS driver failed (see section 4.14), so Ulrich and
Daniel decided to write a new driver for the ZD1211 USB.

The driver was developped based on the SoftMAC 802.11 stack
(see section 4.13), saw a rapid
development and was included in kernel 2.6.18. After that, it was
gradually improved with new features and more hardware
support. However, some important features, such as automatic bitrate
selection, are missing from this driver, and users have to manually
select a bitrate. The performance is also not as good as the official
driver, but it is very stable.

Many of the shortcomings of the SoftMAC driver are due to function not
implemented in the SoftMAC 802.11 stack. Rather than implement those
features in their driver, Daniel and Ulrich decided to port their
driver to the new mac80211 kernel stack, which include those
features (see section
4.9). This new driver currently does not have the same level
of features and stability as the SoftMAC driver. This alternate
version is currently only available in the wireless-dev GIT
repository.

4.16.1 The device

Like all the other 802.11b chipset manufacturer, Realtek introduced a
new 802.11g chipset based on their earlier design, the RTL8180L (see
section
3.25). It mostly adds support for the OFDM bit rates (up to 54
Mb/s), and some version also support 802.11a. The RTL8185L has
a PCI/Cardbus interface, whereas the RTL8187L has a USB 2.0
interface. Realtek offers a proprietary turbo mode with 72 Mb/s, but
other chipsets do as well (see section
4.11).

4.16.2 The driver

With those new chipsets, Realtek changed their driver
strategy. Instead of releasing a binary driver (see section
3.25), they decided to team up with Andrea who produced
the GPL driver for their previous chipset (see section
3.26). They sent him a few reference design cards (prototypes)
and specifications to help him.

Andrea has added preliminary support for those cards in the new
branch of the RTL8180L driver, called rtl8180-sa2400. He also
created a driver for the USB dongle called rtl8187-dev. Those
branches are using their own 802.11 code.

To gain robust 802.11 support, he decided to create a new versions of
the driver based on the Intel ieee80211 stack from the Centrino
driver (see section
3.28), those branches are called respectively
rtl818x-newstack and rtl8187-newstack.

Mid 2005, Andrea stopped this work, leaving his work on the new
branches unfinished, and later started helping the mac80211 driver
(see section 4.17). Beginning
2007, a group of users led by Hauke restarted working on the
driver, with a new project page and new repository. Their main work so
far has been updating the driver to work with the latest kernel.

4.17.1 The device

4.17.2 The driver

Michael and Andrea decided to port the USB driver
written by Andrea (see section
4.16) to new mac80211 kernel stack (see section 4.9). Michael
did most of the work, with Andrea helping with the tricky parts
about the hardware.

This driver was included in the Linux kernel 2.6.23. It will be the
first driver included in the kernel to use the new mac80211 kernel
stack, and as such it may be a bit rough for a while. Because it uses
the mac80211 stack, the driver offer a wide array of features,
such as monitor mode, WPA and virtual interfaces, and as mac80211
evolves this set of features should increases.

4.18.1 The device

Marvell is a networking company mostly based in the Silicon Valley,
they design various networking and storage chips. When Marvell decided
to release a 802.11 product, the market was already very
crowded. Obviously, they would have to include all the features of the
latest standard, but they would also need a few differentiators.

The Libertas chipset was designed mostly for the embedded
market and access point market. Embedded devices don't have much
resources, and use all kind of weird software platforms, therefore
Marvell decided to push as much functionality as possible in the chip,
so that interfacing to the chip and writing driver would be simplified
and use less resources. The Libertas chipset includes an ARM core and
the whole 802.11 stack, including management and security, runs on
that core. This is very similar to the architecture of early 802.11b
chipsets (FullMAC).

The Libertas chipset has all the features of a modern 802.11g chipset,
such as security (802.1x, WPA) and QoS (802.11e). Libertas also added
proprietary extensions to increase bitrate and range.

One of the interesting thing of the architecture of this chipset is
that some additional code can be run on the ARM core. For example, in
the case of the Access Point version of this chipset, all the access
point functionality is running on the ARM core and the chip doesn't
need an external CPU. The One Laptop Per Child project contracted
CozyBit to develop a proprietary mesh functionality running
inside the Libertas chipset. The advantage of such an implementation
is that packet in the mesh can be forwarded without having to wake up
and go through the CPU.

4.18.2 The driver

The One Laptop Per Child (OLPC) project wanted integrate
wireless mesh capability into their devices. Their desire was to be
able to off-load the mesh functionality to the chipset, to save
battery power, however nearly all modern 802.11 design are softmac, a
simple hardware with all the 802.11 intelligence in the driver. One of
the few candidate was the Marvell Libertas, however there was no Linux
driver and Marvell was restrictive about sharing information. The OLPC
project convinced Marvell to allow them to write a Linux driver and
release it.

The driver was written for OLPC by Red-Hat, lead by Dan (who
also wrote NetworkManager). The driver does not use any 802.11 stack,
because such functionality is implemented in the firmware, and it
offers all modern functionality such as Scanning and WPA support. The
Linux driver also supports the proprietary mesh functionality
when using the appropriate firmware. The driver has been developped
and tested in the OLPC source tree for a long time, and after various
changes required for kernel inclusion, it was eventually included in
kernel 2.6.22.

4.19.1 The device

AirgoNetworks was a small startup based in the Silicon Valley, and one
of the pioneers in MIMO designs. AirgoNetworks decided to apply their
expertise of MIMO to the successful 802.11 standard, and released in
2003 some 802.11g products with a proprietary MIMO extension. Their
MIMO extension is branded TrueMIMO and initially delivered
bitrate of 108 Mb/s, further version increased it to
240 Mb/s.

MIMO uses multiple antennas in the radio transmitter and in the
receiver to exploit the physical diversity of the channel, especially
indoor where you typically have multipath. The radio path between each
pair or transmitting and receiving antenna is different, and therefore
using clever techniques on both sides, it is possible for the receiver
system to properly decode multiple simultaneous transmissions from the
transmitter system. Using MIMO, it is possible to increase bandwidth
by sending multiple data streams in parallel, the bandwidth increase
depends on the number of antenna used. By using more robust encoding,
it is also possible to increase range (at lower speed).

Shorty after the release of AirgoNetwork products, the IEEE 802.11
committee decided to create the new 802.11n standard, a 802.11
standard using MIMO technology. The new 802.11n standard was not
planned to be compatible with TrueMIMO, and as of 2007 has not been
yet finalised. Because there is not standard yet, any devices that is
compliant with the evolving 802.11n draft is called pre-802.11n, and
as the draft evolves future compatibility is unknown.

The strategy of AirgoNetworks was quite successful, and the vast
majority of the early and non pre-802.11n devices were based on their
chipset. However, the other major 802.11 vendor reacted quickly, first
by releasing their own proprietary MIMO chipset, and then by releasing
pre-802.11n products. The 802.11n standard is now gaining momentum,
therefore the newer chipsets of AirgoNetworks are compliant with the
802.11n draft, with bitrate up to 315 Mb/s.

AirgoNetworks was acquired by Qualcom, most likely because of
its patent portfolio on MIMO technology. Qualcom sells the former
AirgoNetworks chipset under a new name but with the same TrueMIMO
branding.

4.19.2 The driver

Like a lot of 802.11 vendors, AirgoNetworks does not want to release
any driver of specification to the Linux community, even though they
have internally a Linux driver (used on their Access Point platform).

Jeff Williams started reverse engineering the binary Linux
driver of AirgoNetworks, and documented the interface for the AGN100
and AGN300 chipsets. Jeff previously led the reverse
engineering on the TI ACX driver (see section
4.1), and because of the problems with the ACX driver, he is
using the methodology of the team who wrote the Broadcom Linux driver
(see section 4.13) : he is not
implementing any driver and only publishing the specification of the
chipsets.

Currently there is no Linux driver available, but hopefully some
people will use the work of Jeff to produce a Linux driver.