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.
- iwconfig manipulate the basic wireless parameters
- iwlist allow to initiate scanning and list frequencies,
bit-rates, encryption keys...
- iwspy allow to get per node link quality
- iwpriv allow to manipulate the Wireless Extensions specific
to a driver (private)
- ifrename allow to name interfaces based on various static criteria
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 the
file
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 for each
of the tools, which are the most up to date and most detailed
documentation on the capability of these tools.
The latest stable version of Wireless Tools is , it
is stable, most of the stupid bugs have been removed and it supports
all Wireless Extensions (from version v11 to v21).
man pages
The Wireless Tools package also includes two text documents on the
usage of Wireless Tools to configure wireless cards
automatically :
- DISTRIBUTIONS.txt describes how
various Linux distributions implement Wireless Extensions in
their specific configuration scripts. Please read this, as most
distributions no longer use wireless.opts. I need your help
making this document better.
- HOTPLUG-UDEV.txt describes how to
manage wireless interfaces using the HotPlug subsystem and the
distribution specific support for wireless, and includes some more
advanced material. This is a complement to DISTRIBUTIONS.txt.
- PCMCIA.txt describes the use of Pcmcia
schemes and wireless.opts (i.e. configuration with the default
Pcmcia scripts). This method is deprecated, but still work and has
some advantages.
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.
I have also the following errata and comments :
- In the rare cases where your kernel isn't compiled with Wireless
Extensions (/proc/net/wireless non-existent), you need to recompile
it with Wireless Extensions (CONFIG_NET_RADIO enabled).
- After recompiling a kernel with Wireless Extension, you have to
recompile your driver or the Pcmcia package as well (and restart it).
- All versions of Wireless Tools up to version 26 need to be
compiled for the precise version of Wireless Extension present
on the system. Starting with Wireless Tools 27, Wireless Tools
can handle multiple versions of Wireless Extension without
recompile.
- The Wireless Extensions and Wireless Tools version numbers will
not match with each other. The Wireless Tools and the Wireless
Extensions (the underlying API) evolve independantly of each
other. The command iwconfig --version gives you the detail of
your setup.
- Compilation of the Wireless Tools used to be tricky, especially in
the header area. I believe this has been fixed for good.
- For kernels before 2.2.14/2.3.30, use Wireless Tools version
19.
- For kernel after 2.2.14/2.3.30 use Wireless Tools version
20 or greater.
- For kernel after 2.6.13 use Wireless Tools version
27 or greater.
- The tools and the wireless library are GPL.
- In the old time, you could upgrade Wireless Extensions by just
changing wireless.h. Starting with Wireless Extensions
v12, this is no longer true, you need to apply the full patch to
the kernel. See below for the patches.
- Further down, you will find a FAQ about common
problems.
version 29
You can download Wireless Tools on
this server :
- Download the latest
wireless tools package
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 ;-).