Wireless Tools for Linux



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

Documentation Latest version Common Problems Wireless Extensions 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 or uDev 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 & errata

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 errata and comments :


Wireless Tools latest versions

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

You can download Wireless Tools 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, version 26, version 27, version 28 and version 29. There is no point in using an old version, as the latest version can support all versions of Wireless Extensions.

The main features of the latest beta is support for non-ASCII ESSIDs (such as localised ESSID), support for displaying Scanning Capabilities, slightly bigger scan buffer, fixing minor bug iwconfig parser and minor enhancement to ifrename :

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 29 adds :

Version 28 adds :

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.


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 :


Wireless Tools oldest version

A few bits of history for your amusement...

The oldest version of wireless tools that was made is v10, its release date is 08 december 1996. Obviously it does not have Copyright notice, Makefile, README or any kind of instructions.

Prior to that date, iwconfig was bundled with my version of the wavelan driver. The oldest version on my hard drive is v6, from 05 september 1996, and was not publically distributed (it is clearly not finished).


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, and is usually up to date, 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
WE-18 2.6.13 WPA/WPA2/802.11i support
WE-19 2.6.14 Improved dBm reporting
WE-20 2.6.17 RtNetlink Wireless Extensions (dropped in 2.6.20)
WE-21 2.6.19 (partial WE-21) Full ESSID support, not just string
WE-22 2.6.21 Fix information leak on 64 bits

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. When upgrading from over version of Wireless Extensions to another, you need to apply all the patches for the versions in between in the proper order, otherwise the patches will reject. 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.


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 folowoing sections are applications that make use of Wireless Extensions :

Wireless Tools I personally maintain

Security and Association daemons

GUI configuration and management tools

Wireless monitor tools

Stumbler/Wardriving tools

This section is far from exhaustive, as most stumber application directly use monitor mode (some are listed later on...).

Other packages using Wireless Extensions

Application specific to a driver

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) :

Useful applications not using Wireless Extensions

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 29 August 08
Copyright © 1996-2008 Jean Tourrilhes
    Project hosted and sponsored by :
HP home page