Wireless Tools for Linux



Linux & Wireless LANs Wavelan driver Linux Orinoco driver Papers Main page

Presentation Documentation Latest version Common Problems Drivers Other Wireless Apps


Presentation

The Linux Wireless Extension and the Wireless Tools are an Open Source project sponsored by Hewlett Packard (through my contribution) since 1996, and build with the contribution of many Linux users all over the world.

The Wireless Extension (WE) is a generic API allowing a driver to expose to the user space configuration and statistics specific to common Wireless LANs. The beauty of it is that a single set of tool can support all the variations of Wireless LANs, regardless of their type (as long as the driver support Wireless Extension). Another advantage is these parameters may be changed on the fly without restarting the driver (or Linux).

The Wireless Tools (WT) is a set of tools allowing to manipulate the Wireless Extensions. They use a textual interface and are rather crude, but aim to support the full Wireless Extension. There are many other tools you can use with Wireless Extensions, however Wireless Tools is the reference implementation.

Most Linux distributions also have integrated Wireless Extensions support in their networking initialisation scripts, for easier boot-time configuration of wireless interfaces. They also include Wireless Tools as part of their standard packages.

Wireless configuration can also be done using the Hotplug scripts and distribution specific support, this enable the proper support of any removable wireless interface (Pcmcia, CardBus, USB...).

Any versions of the Pcmcia package offer the possibility to do wireless configuration of Pcmcia and Cardbus card through thefile wireless.opts. This allow to fully integrate wireless settings in the Pcmcia scheme mechansism. However, this method is now deprecated in favor of distribution specific methods.

Please note that the Wireless Tools (starting with version 19) supports fully IEEE 802.11 parameters and devices, support older style of devices and most proprietary protocols, and are prepared to handle HiperLan as well. More recent versions of course adds more 802.11 support.
But, unfortunately not all drivers support all these features...


Documentation & erratas

The Wireless Tools package include extensive man pages for each of the tools, which are the most up to date and most detailed documentation on the capability of these tools.

The Wireless Tools package also includes two text documents on the usage of Wireless Tools to configure wireless cards automatically :

Some driver documentations (man page, web, README) describe what the driver support in term of Wireless Extension and how the various Wireless Extension parameters map to the capability of the card.

The Linux Wireless LAN Howto contains a section about the Wireless Extensions, but it's a bit out of date for the details...


I have also the following erratas and comments :


Wireless Tools latest versions

The latest stable version of Wireless Tools is version 27, it is stable, most of the stupid bugs have been removed and it supports all Wireless Extensions (from version v11 to v17).

You can download Wireless Tools on the Pcmcia ftp server, in the contrib directory :

In case of trouble, you can also fetch it on this server : version 27, but be gentle on this server... For historical purpose, you can get earlier version here : version 19, version 20, version 21, version 22, version 23, version 24, version 25 and version 26. There is no point in using an old version, as the latest version can support all versions of Wireless Extensions.

If you have troubles compiling version 27 on your system, you may use version 27 + compile fix. This version will produce the exact same code as the regular version 27, but should compile properly on those systems where the regular version 27 fails.

The main features of the latest beta is a longer scanning time for the MadWiFi driver, more features for ifrename, a multicall version of the tools for memory starved systems, and minimal WPA (WE-18) support :

Experimental version of Wireless Tools (at your own risk) :

The detailed changelog of the Wireless Tools is in the package, what follows is a human readable version of it ;-).

Version 27 adds :

Version 26 adds :

Version 25 adds :

Version 24 adds :

Version 23 adds :

Version 22 adds :

Version 21 adds :

Version 20 was already adding :

However, the version 20 and later don't work for older kernels (prior to 2.2.14 and 2.3.30), for those kernel I recommend to use version 19, which is also very stable (but with less features). Note that most 802.11b drivers require Wireless Extension v9 or later, so won't work with those ancient kernels.


ifscheme for Debian users

Users of the Debian distribution may want to use the ifscheme scripts to manually manage multiple configuration per wireless interface. Note that a Debian package exist, so you probably don't have much reason to pick the version here...

For automatic management, please check for various tools in the later section.


Wireless Extensions patches (for kernel and drivers)

The Wireless Extensions support come as 3 parts :

  1. The Wireless Extension (the core API), part of the Linux kernel (mostly defined in wireless.h).
  2. Driver support, implementing some of those extensions for the specific hardware.
  3. Wireless Tools and other wireless applications, that the users manipulate.

Wireless Extension versions :

Version Kernel Features
WE-9 2.2.14, 2.3.30 Basic 802.11b support
WE-10 2.2.19, 2.4.0 Add TxPower setting
WE-11 2.4.4 Driver version check, retry setting
WE-12 2.4.13 Additional statistics
WE-13 2.4.19, 2.5.3 New driver API
WE-14 2.4.20, 2.5.7 Wireless Scanning, Wireless Events
WE-15 2.4.21, 2.5.37 Enhanced iwpriv support
WE-16 2.4.23, 2.5.70 802.11a/802.11g fixes, Enhanced iwspy support
WE-17 2.6.10 Event capability, large scan results

The core API is strongly versioned, so that application can detect changes in the API. The version number of Wireless Extensions specify which feature are available through the API, and is completely independant of the version of the tool using it, for example, each version of the Wireless Tools can support a wide range Wireless Extension versions. You can use iwconfig --version to get all the details on your current setup.

One common issue is that Wireless Extensions offers only source level backward/forward compatibility, not binary compatibility. Therefore, every time the core API is updated or changed on the system (kernel upgrade), both drivers and tools need to be recompiled. Version 27 and later of Wireless Tools can support multiple versions of Wireless Extensions without the need of a recompile.

Some wireless drivers require a minimum level of Wireless Extensions, and most often newer version of Wireless Extensions enable additional features in the driver. Usually, the simplest way to upgrade the Wireless Extensions is to upgrade your kernel (see table above). Most driver support the newer Wireless Extension only in their most recent version, so most often to get the benefit of the additional features you might need to upgrade your driver.

Alternatively, you can use the patches below. Those patches may not always apply properly to your kernel, they may crash or eat your hard drive, use at your own risks and don't expect much help, because I would rather have you upgrading your kernel. After patching the kernel, don't forget to recompile and reinstall the kernel itself, the kernel modules, the Pcmcia package modules and the various external driver modules.


Debugging Wireless Extensions (common problems)

Usually, people don't have much trouble with Wireless Extensions. There are a few gotchas, here are the most common ones :


Driver support

All the drivers for Wireless LANs are listed in the Linux Wireless LAN Howto, and each section detail the level of Wireless Extension support.

If you are developping Wireless Extension support in your wireless driver, those few drivers are worth a look at :


Wireless Applications for Linux

I need your help to make this section larger ;-)

The first set of application are applications that make use of Wireless Extensions :

Those applications are partially using Wireless Extension, but also require specific driver APIs, making them only useful if you use the specific wireless driver (HostAP in this case) : Now, a few other applications that don't use Wireless Extensions but are useful anyway :
Wavelan, Orinoco and Wireless LANs - jt@hpl.hp.com
Updated 26 May 04
Copyright © 1996-2004 Jean Tourrilhes
    Project hosted and sponsored by :
HP home page