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 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 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.

Modern versions of the Pcmcia package offer the possibility to set up various wireless parameters at boot-time (or card insertion time) through the file wireless.opts. This allow to fully integrate wireless settings in the Pcmcia scheme mechansism. This of course require that the above Wireless Tools are installed on the system.

Most 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.

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, 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 the card at boot time :

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 :


Version numbers

Some people seems to have trouble understanding version numbers listed on this page, probably because they confuse Wireless Tools and Wireless Extensions.

Wireless Extensions (WE) is a API implemented in the kernel and drivers that allow various tools to set various wireless parameters and query various wireless statistics.

Wireless Tools (WT) is a reference implementation of a set of tools to access and manipulate Wireless Extensions. However, this is only one of the many available tools for this purpose.

The Wireless Extensions and Wireless Tools evolve independantly of each other, so have different versioning systems. You don't need to match the version of the WE and the WT (actually, you usually can't). The command iwconfig --version gives you the detail of your setup.

Each version of WT is designed (and tested) to accomodate multiple versions of WE : you can for example use WT-26 on kernels with WE-16, WE-15 or WE-11. However, to achieve that, the WT must be compiled for the proper version of WE. This is supposed to happen automagically, but often fails. Similarly, WE are backward and forward compatible, if your kernel has WE-15, you can use WT-23, WT-25 or WT-26 (as long as they are compiled for WE-15). Of course, only new version of WT add support for the new features in the new version of WE, but the latest WT may also fix bugs in older features of WE. The exact same stuff applies to other tools using WE.

The recommended setup is to use WE as available in your kernel (don't mess with the kernel and driver patches), and to use the latest WT (to have all the bug fixes) and to compile WT for the exact version of WE that your kernel have.


Latest version & betas

The latest stable version is version 26, it is stable, most of the stupid bugs have been removed and it supports all Wireless Extensions (v16).

Both may find on the Pcmcia ftp server, in the contrib directory :

In case of trouble, you can fetch also from here version 19, version 20, version 21, version 22, version 23, version 24, version 25 and version 26, but be gentle on this server...

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.

The latest beta version fixes problems with long interface names and redirection of iwevent to a pipe/file.


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.5.70 802.11a/802.11g fixes, Enhanced iwspy support

The core API is strongly versionned, so both tools and driver should adapt themselves to the version of Wireless Extension present in the kernel and activate features based on that. You can use iwconfig --version to get all the details on your current setup. However, Wireless Extensions offers only source level backward/forward compatibility, not binary compatibility, therfore after an update of the core API, both drivers and tools need to be recompiled.

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, here are just a few status reports...


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 :

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 15 April 03
    Project hosted and sponsored by :