Wireless Tools for Linux

来源:互联网 发布:java短信接口 编辑:程序博客网 时间:2024/05/16 17:57



Presentation

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

The Wireless Extension (WE) is a generic API allowing a driverto expose to the user space configuration and statistics specific tocommon Wireless LANs. The beauty of it is that a single set of toolcan support all the variations of Wireless LANs, regardless of theirtype (as long as the driver support Wireless Extension). Anotheradvantage is these parameters may be changed on the fly withoutrestarting the driver (or Linux).

The Wireless Tools (WT) is a set of tools allowing tomanipulate the Wireless Extensions. They use a textual interface andare rather crude, but aim to support the full WirelessExtension. There are many other tools youcan use with Wireless Extensions, however Wireless Tools is thereference 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 specificto a driver (private)
  • ifrename allow to name interfaces based on various static criteria

Most Linux distributions also have integrated Wireless Extensions support intheir networking initialisation scripts, for easier boot-timeconfiguration of wireless interfaces. They also include Wireless Toolsas part of their standard packages.

Wireless configuration can also be done using the Hotplug or uDev scripts anddistribution specific support, this enable the proper support of anyremovable wireless interface (Pcmcia, CardBus, USB...).

Any versions of the Pcmciapackage offer the possibility to do wireless configuration ofPcmcia and Cardbus card through thefilewireless.opts. This allow to fully integrate wireless settings inthe Pcmcia scheme mechansism. However, this method is now deprecatedin favor of distribution specific methods.

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


Documentation & errata

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

The Wireless Tools package also includes two text documents on theusage of Wireless Tools to configure wireless cardsautomatically :

  • DISTRIBUTIONS.txt describes howvarious Linux distributions implement Wireless Extensions intheir specific configuration scripts. Please read this, as mostdistributions no longer use wireless.opts. I need your helpmaking this document better.
  • HOTPLUG-UDEV.txt describes how tomanage wireless interfaces using the HotPlug subsystem and thedistribution specific support for wireless, and includes some moreadvanced material. This is a complement to DISTRIBUTIONS.txt.
  • PCMCIA.txt describes the use of Pcmciaschemes and wireless.opts (i.e. configuration with the defaultPcmcia scripts). This method is deprecated, but still work and hassome advantages.

Some driver documentations (man page, web, README) describewhat the driver support in term of Wireless Extension and how thevarious Wireless Extension parameters map to the capability of thecard.

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


I have also the following errata and comments :

  • In the rare cases where your kernel isn't compiled with WirelessExtensions (/proc/net/wireless non-existent), you need to recompileit with Wireless Extensions (CONFIG_NET_RADIO enabled).
  • After recompiling a kernel with Wireless Extension, you have torecompile your driver or the Pcmcia package as well (and restart it).
  • All versions of Wireless Tools up to version 26 need to becompiled for the precise version of Wireless Extension presenton the system. Starting with Wireless Tools 27, Wireless Toolscan handle multiple versions of Wireless Extension withoutrecompile.
  • The Wireless Extensions and Wireless Tools version numbers willnot match with each other. The Wireless Tools and the WirelessExtensions (the underlying API) evolve independantly of eachother. The command iwconfig --version gives you the detail ofyour setup.
  • Compilation of the Wireless Tools used to be tricky, especially inthe header area. I believe this has been fixed for good.
  • For kernels before 2.2.14/2.3.30, use Wireless Tools version19.
  • For kernel after 2.2.14/2.3.30 use Wireless Tools version20 or greater.
  • For kernel after 2.6.13 use Wireless Tools version27 or greater.
  • The tools and the wireless library are GPL.
  • In the old time, you could upgrade Wireless Extensions by justchanging wireless.h. Starting with Wireless Extensionsv12, this is no longer true, you need to apply the full patch tothe kernel. See below for the patches.
  • Further down, you will find a FAQ about commonproblems.


Wireless Tools latest versions

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

You can download Wireless Tools on this server :

  • Download the latestwireless tools package

For historical purpose, you can get earlier versionhere : 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 inusing an old version, as the latest version can support all versions ofWireless Extensions.

The main features of the latest beta is support for non-ASCIIESSIDs (such as localised ESSID), support for displaying ScanningCapabilities, slightly bigger scan buffer, fixing minor bug iwconfigparser and minor enhancement to ifrename :

  • Wireless Tools version30-pre9 (beta)

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

  • Wireless Tools 28 with Wireless-RtNetlinksupport (WE-20) (alpha)

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

Version 29 adds :

  • Support for long/short retry (WE-21).
  • Support power saving level, modulation (WE-21 - not in kernel).
  • Scanning options.
  • Better WPA support.
  • Enhanced command line parser in iwconfig.
  • sysfs symlinks and udev integration in ifrename.
  • More footprint reduction tricks.
  • Support for 32 bit Wireless Tools on 64 bits kernels.
  • Change dBm range to support positive dBm.

Version 28 adds :

  • Add preliminary display-only WPA support (WE-18).
  • Display AP-Address as 'Not-Associated' instead of a number.
  • Add sysfs selector to ifrename.
  • Make mac selector of ifrename accept any length MACaddresses, such as Firewire addresses.
  • Longer scanning timeout for driver having slow scanning, such as MadWifi.
  • Add iwmulticall and stripping option to reduce footprint ofthe tools for memory starved systems.
  • Use glibc header instead of kernel header to ease iwlib use.
  • Better integrity check of scan results.
  • Forward compatibility to WE-21 (essid length)

Version 27 adds :

  • Ability to run with multiple version of WirelessExtensions. It means that all WE version mismatch are gone, andyou don't need to recompile when changing between kernels withdifferent WE version. The tool redirector is obsolete and removed.
  • Make libiw really usable by third party tools. This includethe removal of the WE version dependancy, the stabilisation of the APIand the addition of the easy Scanning API.
  • Add ifrename, to rename network interfaces based onvarious static criteria, and associated documentation
  • Add advanced documentation about network Hotplug andrelated stuff in HOTPLUG.txt
  • Support auto/fixed frequencies and relative tx-power (WE-17)
  • Support very large scan results and private definition lists (WE-17)
  • Optionally disable individual quality statistics (WE-17)
  • Support event capability in iwlist event (WE-17)
  • Display channel alongside frequencies in iwlist and iwevent
  • Display updated quality statistics with '=' instead of '(updated)'
  • Implement iwconfig XXX txpower on and fixed
  • Fix redirection of iwevent output to file/pipe
  • Add raw display and channel support in iwgetid
  • Various bugfixes, optimisations and cleanup

Version 26 adds :

  • Fix bugs in parsing encryption keys and setting encryptionon in iwconfig.
  • Update distribitions specific documentationin DISTRIBUTIONS.txt
  • Really allow compile without maths library for embeeded platforms
  • Support new iwspy features (setthr and related event) (WE-16)
  • Add tool redirector for people having multiple kernels withdifferent Wireless Extension versions (WE-16)
  • Various trivial bugfixes and cleanup
  • Various Makefile and and iwlib improvements

Version 25 adds :

  • Start document distribitions specific wireless configuration scriptsin DISTRIBUTIONS.txt
  • Enumerate *all* network interfaces (fix problem with NWN drivers)
  • Improve private extension support : new types, sub-ioctls,iwpriv -a, handle more than 16 extensions... (WE-15)
  • Fix infinite loop with unknown Wireless Events (bad bug)
  • Add new Wireless Events : IWEVCUSTOMIWEVREGISTERED andIWEVEXPIRED (WE-15)
  • Show current settings in iwlist for freqrate andtxpower
  • New iwgetid options : modefreqprotocol
  • Implement --version to show tools and WE versions
  • Improve version warning messages to be hopefully less confusing
  • Allow compile without maths library for embeeded platforms
  • Makefile fixes, various other cleanups

Version 24 adds :

  • Fix a bug that prevents disabling encryption and setting authentication(introduced in version 23)
  • Change the way tools enumerate wireless interfaces. Tools nolonger lists interfaces not supporting/proc/net/wireless, butlists interfaces which are down.
  • Wireless Event support (WE-14)
  • Scanning support (WE-14 - replaces now obsolete iwlistaplist)
  • Support iwconfig ethX ap auto/any/off
  • Man pages for iwevent and iwgetid
  • Improved system header definitions, more complete libiw,cleanups...

Version 23 adds :

  • Fix a problem when trying to use iwspy before the interfaceis configured
  • Add missing commands in the iwlist man page
  • Fix "make install" and install man pages
  • Automatic glibc/kernel header configuration
  • Nicer iwconfig error messages
  • Add iwconfig ethX commit (WE-13)

Version 22 adds :

  • Fix minor bugs in parsing command line
  • Most basic functions of the tools available as a library(libiw)
  • Add a few extra wireless statistics (WE-12)

Version 21 adds :

  • Improved power management support (WE-10)
  • Transmit Power parameter (WE-10)
  • Document wireless.opts and Pcmciascheme usage (multi cards, multi setups)
  • Better Makefile, header options can be set there
  • Support for GLibc2.2
  • Check Wireless Extension version mismatch (WE-11)
  • Retry settings (WE-11)
  • Split iwspy into iwspy and iwlist

Version 20 was already adding :

  • Operation mode support (managed/ad-hoc) (WE-9)
  • Power saving support (WE-9)
  • New encryption support (WE-9)

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


Debugging Wireless Extensions (common problems)

Usually, people don't have much trouble with WirelessExtensions. There are a few gotchas, here are the most commonones :
  • iwconfig doesn't list my card
    1. Make sure your card is plugged in the PC, and check its led.
    2. Make sure the system can identify your card.
    3. Make sure the proper driver for your card is loaded using lsmod.
    4. Check if the driver did recognise the card using dmesg.
  • iwconfig says "no wireless extensions." for my card
    1. Enable the config option CONFIG_NET_RADIO in your kernelsetup.
    2. Recompile and reinstall this kernel.
    3. Recompile and reinstall the kernel modules.
    4. Do cat /proc/net/wireless. If the command returns an error,you are using the wrong kernel. Try again.
    5. If you are using driver from the external Pcmcia package (kernel2.2 and earlier), go into the Pcmcia package, do a make config
    6. Check that the following line appears : "Radio network interfacesupport is enabled.".
    7. Recompile and install the Pcmcia package.
  • iwconfig still says "no wireless extensions.", displaysgarbage or crashes before displaying anything.
    1. Make sure you have fully checked all the steps of the secondquestion.
    2. The driver or driver version you are using probably does notsupport Wireless Extension.
    3. Check status of Wireless Extension support for your driver in theWireless LAN Howto.
    4. If your driver is listed, try a more recent version.
    5. If your hardware is listed, try the driver mentionned (there maybe multiple of them).
    6. Make sure that Pcmcia is loading the driver you think it isloading. Hack the various files in/etc/pcmcia/ until it loadsthe correct driver (grep is your friend).
    7. If you still can't get it, or if you find no suitable driver,complain to the driver maintainer.
  • I try to change a specific parameter with iwconfig, itjust returns an error message
    1. Check reading parameters and setting other parameters.
    2. If setting all parameters fail, see first two questions.
    3. No card support the full range of Wireless Extension, so yourhardware or firmware may not have this feature.
    4. Check the Windows driver and card documentation to see if thefeature exist.
    5. Then, your driver or your driver version may not export thisparticular feature. Try the latest version.
    6. For driver with otherwise rich support, it's more likely ahardware limitation. For driver with limited support, it might be adriver limitation.
    7. Check the driver documentation to see if the feature is supported.
    8. Lastly, ask the maintainer if it is a hardware, software ordocumentation limitation and what to do about it.
  • iwconfig crashes after displaying valid info...
    1. Use Wireless Tools version 27 or later, which fixes this issue.
  • iwlist scan crashes while iwconfig and otheriwlist commands work fine
    1. Use Wireless Tools version 27 or later, which fixes this issue.
  • iwconfig says : "Warning: Driver for device XXXXhas been compiled with version XX, while this program is usingversion XX"
    1. Use Wireless Tools version 27 or later, which fixes this issue.
  • iwconfig says : "Warning: Driver for device XXXXhas been compiled with version XX, while this program supportsup to version XX"
    1. Upgrade to the latest stable version of Wireless Tools.
    2. If this doesn't fix that issue, you may 
      • If nothing bad happens, just ignore the message.
      • Install a pre-release version of the Wireless Tools (see above).
  • iwconfig says : "Warning: Driver for device XXXXrecommend version XX of Wireless Extension"
    • Ignore, unless you can't configure your card.
    • Upgrade your kernel, and recompile/reinstall kernel/modules/tools.
  • When compiling the Wireless Tools, it says "WirelessExtension earlier than XX detected"
    1. Ignore, unless you find a bug.
  • When compiling the Wireless Tools, it says "WirelessExtension later than XX detected"
    1. This is not problematic, but think of getting a newer version of the tools.
  • When compiling the Wireless Tools, it complains thatIFLA_WIRELESS is undeclared
    1. Use Wireless Tools version 27 or later, which fixes this issue.
  • In the kernel log, it says "wlan0 (WE) : Buffer for requestXXXX too small (0<XX)"
    1. Find the wireless application that generates it
    2. Upgrade this application it to the latest version
    3. If the problem persist, file a bug on the application
  • In the kernel log, it says "wlan0 (WE) : Invalid/UnknownWireless Event"
    1. Your kernel and your driver are out of sync
    2. Recompile/reinstall your kernel, kernel modules, pcmcia modulesand external driver modules
  • I change stuff in wireless.opts, nothing happens
    1. Check that the MAC address prefix of the definition matches the MACaddress of your card (withifconfig).
    2. Check that no other previous definition would match your card (thefirst matching section is used, "*" matches everything).
    3. In particular, make sure that you have either commented or removedthe "*,*,*,*)" at the top ofwireless.opts.
    4. Check the scheme matching and the scheme you are currently using(with cardctl scheme).
    5. Restart the Pcmcia card manager.
    6. Check you system logs for error messages.
    7. See next question
  • My config in wireless.opts is still ignored, and I haveno error message in the system log
    1. If your card is not a Pcmcia card, it's normal, becausewireless.opts is part of the Pcmcia specific configuration. Theworkaround is to use a distribution with integrated support forWireless Extensions.
    2. Most distributions don't use standard Pcmcia configuration buttheir own network configuration scripts. In this case, they willignore wireless.opts.
    3. Most modern distributions have integrated support for WirelessExtensions. When this is available, this is the easiest option, asyou just need to add your settings the network configuration file ofthe distribution. Sometime you can even do wireless configuration inthe graphical tools.
    4. For distributions that don't have integrated support for WirelessExtensions, file a bug report with the distribution and reinstallstandard Pcmcia scripts, especially /etc/pcmcia/network.
  • When I set my configuration in wireless.opts, itcomplains in the system log that it can't findiwconfig
    1. Install Wireless Tools somewhere on the system, like in/usr/local/sbin
  • When I set my configuration in wireless.opts, I've gotweird errors in the system logs
    1. Run iwconfig. See first two questions.
    2. Try to set the equivalent parameters directly usingiwconfig to make sure that you get the syntax right and thatthe card support those.


Wireless Tools oldest version

A few bits of history for your amusement...

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

  • Wireless Tools v10

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

  • iwconfig v6


ifscheme for Debian users

Users of the Debian distribution may want to use the ifschemescripts to manually manage multiple configuration per wirelessinterface. Note that a Debian package exist, and is usually up todate, so you probably don't have much reason to pick the versionhere...
  • ifscheme scripts for Debian (version 1.7)

For automatic management, please check for various tools in thelater 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 thespecific hardware.
  3. Wireless Tools and other wireless applications, that the usersmanipulate.

Wireless Extension versions :

VersionKernelFeaturesWE-92.2.14, 2.3.30Basic 802.11b supportWE-102.2.19, 2.4.0Add TxPower settingWE-112.4.4Driver version check, retry settingWE-122.4.13Additional statisticsWE-132.4.19, 2.5.3New driver APIWE-142.4.20, 2.5.7Wireless Scanning, Wireless EventsWE-152.4.21, 2.5.37Enhanced iwpriv supportWE-162.4.23, 2.5.70802.11a/802.11g fixes, Enhanced iwspy supportWE-172.6.10Event capability, large scan resultsWE-182.6.13WPA/WPA2/802.11i supportWE-192.6.14Improved dBm reportingWE-202.6.17RtNetlink Wireless Extensions (dropped in 2.6.20)WE-212.6.19(partial WE-21) Full ESSID support, not just stringWE-222.6.21Fix information leak on 64 bits

The core API is strongly versioned, so that application can detectchanges in the API. The version number of Wireless Extensionsspecify which feature are available through the API, and is completelyindependant of the version of the tool using it, for example, eachversion of the Wireless Tools can support a wide range WirelessExtension versions. You can use iwconfig --version to get allthe details on your current setup.

One common issue is that Wireless Extensions offers only source levelbackward/forward compatibility, not binary compatibility. Therefore,every time the core API is updated or changed on the system (kernelupgrade), both drivers and tools need to be recompiled. Version27 and later of Wireless Tools can support multiple versions ofWireless 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 additionalfeatures in the driver. Usually, the simplest way to upgrade theWireless Extensions is to upgrade your kernel (see tableabove). Most driver support the newer Wireless Extension only intheir most recent version, so most often to get the benefit of theadditional features you might need to upgrade yourdriver.

Alternatively, you can use the patches below. Those patches may notalways apply properly to your kernel, they may crash or eat your harddrive, use at your own risks and don't expect much help, because Iwould rather have you upgrading your kernel. When upgrading from overversion of Wireless Extensions to another, you need to apply all thepatches for the versions in between in the proper order, otherwise thepatches will reject. After patching the kernel, don't forget torecompile and reinstall the kernel itself, the kernel modules, thePcmcia package modules and the various external driver modules.

  • Kernel 2.2.X patches
    • Wireless Extensions v15 for kernel2.2.25 : cummulative patch to upgrade directly from WE-10 toWE-15. Wireless Event is not available, the rest seems to work.
  • Kernel 2.4.X patches
    • Wireless Extensions v11 for kernel2.4.2, including various wireless drivers. Adds driver version check,retry setting. [Already in 2.4.3]
    • Wireless Extensions v12 for kernel2.4.12. Adds more statistics, move iwpriv ioctls to a privatespace.[Already in 2.4.13]
    • Wireless Extensions v13 forkernel 2.4.18. Add the new driver API based on iw-handlers (to replaceioctl handler). [Already in 2.4.19-pre5]
    • Wireless Extensions v14 + WE-13ESSID bug fix for kernel 2.4.19. Add a Wireless Event dispatcherthrough rtnetlink (driver and set events) and support forWireless Scanning (iwlist ethX scan). Also fix a stupid bug inWE-13 patch above (of by one). [Already in 2.4.20-pre2]
    • Wireless Extensions v15 for kernel2.4.20. Fix and enhance private extensions support, mostly for HostAPdriver. Define additional Wireless Events. Get strict on buffer sizefor GET requests (this may break old applications using WirelessExtensions). [Already in 2.4.21-pre2]
    • Wireless Extensions v16 for kernel2.4.21. Rework iwspy support : simplify driver side iwspy supportand add iwspy Wireless Event. Also increase the number of bit-rates iniwrange for complete 802.11a/802.11g support. [Already in2.4.23]
    • Wireless Extensions v16 for kernel2.4.19 and earlier. Same as patch above, but apply to kernel 2.4.19and earlier. Not a cumulative patch, you will need to apply after thev15 patch (and previous patches as needed). [Already in2.4.23]
    • Wireless Extensions v17 forkernel 2.4.29. Export driver event capacities, allow large scanrequests and various minor fixes.
    • Wireless Extensions v18 for kernel2.4.30. WPA support, from Jouni Malinen. You will need WT-27-pre25 orlater.
  • Kernel 2.5.X patches
    • Wireless Extensions v13 forkernel 2.5.2. Add the new driver API based on iw-handlers (to replaceioctl handler). [Already in 2.5.3-pre3]
    • Wireless Extensions v14 forkernel 2.5.6. Add a Wireless Event dispatcher through rtnetlink(driver and set events) and support for Wireless Scanning (iwlistethX scan). [Already in 2.5.7-pre1]
    • WE-13 ESSID bug fix for2.5.15, fix a stupid bug in WE-13 patch above (of by one). [Alreadyin 2.5.16]
    • Wireless Extensions v15 for kernel2.5.32. Fix and enhance private extensions support, mostly for HostAPdriver. Define additional Wireless Events. Get strict on buffer sizefor GET requests (this may break old applications using WirelessExtensions). [Already in 2.5.37]
    • Wireless Extensions v16 for kernel2.5.64. Rework iwspy support : simplify driver side iwspy supportand add iwspy Wireless Event. Also increase the number of bit-rates iniwrange for complete 802.11a/802.11g support. [Already in 2.5.70]
  • Kernel 2.6.X patches
    • Wireless Extensions v17 for kernel2.6.9. Export driver event capacities, allow large scan requests andvarious minor fixes. [Already in 2.6.10-rc2]
    • Wireless Extensions v18 for kernel2.6.11. WPA support, from Jouni Malinen. You will need WT-27-pre25 orlater. [Already in 2.6.13-rc1]
    • Wireless Extensions v19 forkernel 2.6.13. Misc updates and cleanups. You will need WT-27-pre25 orlater. [Already in 2.6.14-rc1]
    • Wireless Extensions v20 for kernel2.6.16. Wireless-RtNetlink support : Allow to Set/Get WirelessExtensions through the RtNetlink socket. Final version, feature testedand complete.
    • Wireless Extensions v21 for kernel2.6.17-rc1. Add modulation, generic power saving, short/longretries. This is experimental and require both drivers and userspacemodification (WT-28-pre14), especially around ESSID.
  • Aironet driver patches
    • The Aironetdriver has already been converted to the new driver API (WE-13)and has scanning and event support (WE-14). [Already in 2.5.20 ;2.4.20-pre1 and CVS]
    • Use new iwspy support (WE-16) in the Aironet driver. [Already in 2.6.0-test2and CVS]
    • WE-17 support for the Aironetand old Wavelan drivers. For kernel 2.6.8. [Already in 2.6.10-rc1]
    • iwstats cleanups (WE-19) in the Aironet driver.
    • WE-19 support for the Aironetdriver. For kernel 2.6.13. [Already in 2.6.14-rc1]
    • Aironet WE-21 minimalsupport : fix ESSID size, use short/long retry. For kernel2.6.17-rc1.
  • HostAP driver patches
    • The Prism2HostAP driver has already been converted to the new driver API(WE-13), has scanning and event support (WE-14) and take advantage ofthe improved iwpriv support (WE-15). [Already in 2002-09-12]
    • Add support for "iwlist scan" in master mode in the HostAP driver. [Already inv0.0.1]
    • Add new iwspy support (WE-16) in the HostAP driver. [Already inv0.0.2]
    • HostAP WE-17support : allow large scan requests, export eventcapability. For hostap-driver-0.2.3.[Already inv0.3.0]
    • HostAP WE-19 support :better statistics. For hostap-driver-0.3.9. [Already in v0.4.5]
    • HostAP WE-21 support :use short/long retry. For kernel 2.6.17-rc1.
  • Orinoco driver patches
    • Conversion of the Orinoco driverversion 0.9b to the new driver API (WE-13).
    • Add some Wireless Events and Scanning (WE-14) to the Orinoco driver version 0.9b.
    • MoustafaA. Youssef has updated my patches to the Orinoco driverv0.11b (both WE-13 and WE-14 support : convert to new API andadd Wireless Events and Scanning).
    • Orinoco v0.13a patch :convert the Orinoco to the new API (WE-13), and add Wireless Eventsand Scanning (WE-14). Contributed by Jim Carter, based on thepatch from Moustafa (see above). I didn't yet test that patch.
    • Orinoco v0.13d patch :convert the Orinoco to the new API (WE-13), and add Wireless Eventsand Scanning (WE-14). Contributed by Pavel Roskin, based on thepatch from Moustafa (see above). Also include scanning support forSymbol firmwares (from Jesus Molina). [Already inv0.15rc1 and kernel 2.6.13-rc1]
    • Orinoco WE-16 & WE-17support : use the new iwspy support, export eventcapability. For orinoco-0.15rc1.
    • Orinoco WE-16 & WE-17support : use the new iwspy support, export eventcapability. For kernel 2.6.13.
    • Orinoco WE-21 minimalsupport : fix ESSID size, use short/long retry. For kernel2.6.17-rc1.
  • Other current driver patches (Prism54, IPW...)
    • Prism54 WE-17support : allow large scan requests, export eventcapability. For kernel 2.6.8.[Already in 2.6.10-rc1]
    • Prism54 WE-17 support (missingbit from above). For kernel 2.6.13. [Already in 2.6.14-rc1]
    • WE-17 support for the Atmeldriver. For kernel 2.6.13. [Already in 2.6.14-rc1]
    • WE-17 support for the wl3501driver. For kernel 2.6.13. [Already in 2.6.14-rc1]
    • Prism54 Bitrate in Scansupport. For kernel 2.6.17-rc1.
    • Prism54 WE-21 minimalsupport : fix ESSID size, use short/long retry. For kernel2.6.17-rc1.
    • Atmel WE-21 minimal support :fix ESSID size, use short/long retry. For kernel 2.6.17-rc1.
    • wl3501 WE-21 minimalsupport : fix ESSID size, use short/long retry. For kernel2.6.17-rc1.
    • ipw2100 WE-21 minimalsupport : fix ESSID size, use short/long retry. For kernel2.6.17-rc1.
    • ipw2200 WE-21 minimalsupport : fix ESSID size, use short/long retry. For kernel2.6.17-rc1.
    • ipw2200 WE-21 additionalsupport : modulation, generic power saving. For kernel2.6.17-rc1.
  • Obsolete wireless driver patches (wavelan,wavelan_cs, netwave_cs, ray_cs...)
    • Update wavelan_cs to v23 : backportPcmcia package fixes in the kernel. [Already in 2.5.3-pre2]
    • Shell script and Patch to move old wireless drivers : movewavelan.cwavelan_cs.c andnetwave_cs.c todriver/net/wireless[Already in 2.5.3-pre3]
    • Additional fixed for wavelan_cs :fix trigraph warnings. [Already in 2.5.3-pre6]
    • Update wavelan_cs to v23 + extra :backport Pcmcia package fixes in the kernel, fix trigraph warnings andfix watchdog message. [Already in 2.4.20-pre2]
    • Conversion of the old Wavelan driverversion 23 to the new driver API (WE-13). [Already in2.5.6-pre1]
    • Conversion of the old Wavelan_csdriver version 23 to the new driver API (WE-13). [Already in2.5.6-pre1]
    • Conversion of the Netwave_cs to thenew driver API (WE-13). [Already in 2.5.6-pre1]
    • The No Wires Neededdriver has already been converted to the new driver API (WE-13)and has scanning support (WE-14).
    • Trivial fix in wavelan : fix thewatchdog message in the wavelan (ISA) driver. [Already in2.4.20-pre2 and 2.5.37]
    • Use new iwspy support (WE-16) in the oldWavelan ISA driver. [Already in 2.5.70]
    • Use new iwspy support (WE-16) in the old Wavelan Pcmcia driver, plus cleanupbackward compatibility stuff (which didn't work anyway). [Alreadyin 2.5.70]
    • WE-17 support for the Netwavedriver. For kernel 2.6.13. [Already in 2.6.14-rc1]
    • WE-13/WE-17 support for the Raylinkdriver. For kernel 2.6.13. [Already in 2.6.14-rc1]
    • Raylink WE-21 minimalsupport : fix ESSID size. For kernel 2.6.17-rc1.


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 wirelessdriver, those few drivers are worth a look at :

  • The Wavelandriver is the reference implementation of Wireless Extensions forpre-802.11 devices. It supports NWID, Channel, Sensitivity, Encryptionkey, stats and spy.
  • The HostAPdriver is the reference implementation of Wireless Extensions for802.11b devices, and is the reference implementation foriwpriv functionality.
  • The Aironetdriver (version 1.4 and later from Ben) is an alternate referenceimplementation of Wireless Extensions for 802.11b devices. Itimplements fully WE-14 (Wireless Scanning and Wireless Events), and isdifferent than HostAP.
  • The OrinocoMPL/GPL driver version v0.14 or later is also an alternatereference implementation of Wireless Extensions for 802.11bdevices. On the other hand, version v0.13 and earlier found in mostplaces only support WE-12 (so no scanning and no events). The Orinocodriver tend to be easier to study than both the HostAP and the Aironetdrivers.


Wireless Applications for Linux

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

The folowoing sections are applications that make use ofWireless Extensions :

Wireless Tools I personally maintain

  • Download my wireless tools package(iwconfig, iwspy, iwpriv).
  • The Pcmcia packageuses wireless tools for integrated wireless setting in wireless.opts.

Security and Association daemons

  • Jouni Malinen hasdevelopped wpa_supplicant, a complete implementation of theWPA protocol, providing enhanced privacy and security. Thistools also provide complete management to the wireless interface, withautomatic association to Access Points.
  • Open1x is an Open Sourceimplementation of the 802.1x protocol, providing enhancedprivacy and security. Recent version add support for the WPA andWPA2 protocols.
  • LennartPoettering has written IfPlugd/WapRoamd, a pair of deamonsthat automatically roam between Access Points. It can use wirelessevent support to detect AP handoff and can then automaticallyselect an new AP and configure the link.
  • Joshua D. Abrahamhas written Getwifi, a bash script that automaticallyconnect to the best network, including WEP.

GUI configuration and management tools

  • DanWilliams has developped NetworkManager, a complete networkconfiguration and autodiscovery package used in RedHat andFedora, which fully support Wireless Extensions includingScanning.
  • Stefan Winterhas developped KWiFiManager, a very complete set of KDEtools using Wireless Extensions (configurator, link monitor) andcompatible with many drivers/cards. It is the successor to the famousKOrinoco. The latest version has scanning support.
  • OlivierBlin has written netapplet, the network manager andconfigurator for the Mandrake distribution.
  • Robert Love &Joe Shaw have written netapplet, a network switcherapplication integrated in the SuSE distribution.
  • AhmadBaitalmal is writting Wifi Radar, an Python/PyGTK2application that scan for network, edit wireless configuration andallow you to connect to one network.
  • OlivierRossiny is developping NetSwitch, a set of tools (commandline, GTK) that allow you to manage wireless profiles and scan fornetworks.
  • Don Park is writtingApRadar, a GTK application that use scanning support toshow a graphical list of reachable Access Point and to allow the userto easily connect to one wireless network at the click of a button.
  • ChristopherTenHarmsel and his friends have developped Kifi, anotherKDE wireless configuration tool, that use scanningsupport to show a graphical list of reachable Access Point and toallow the user to easily connect to one wireless network at the clickof a button.
  • Helge Oyvind wrote WaveSelect, a KDE wrapper around iwlistand iwconfig.
  • Eugene Bertawrote Netchoose, a GUI (QT based) wrapper for helping users whoneed to connect to multiple wireless network.
  • Edward A. Falk hasdevelopped a new version of Netcfg, which main features are thesupport of wireless configuration and network profiles (implementedthrough Pcmcia schemes). Very nice !
  • Sujal Shah hasdevelopped GWireless, a Gnome link monitor andconfigurator for 802.11b cards using Wireless Extensions.
  • Tom Watershas written xwconfig, a GTK version of iwconfig.
  • Paolo Cavone has writtenMobydik.tk, a TCL wrapper around Wireless Tools.
  • Luis Peraltahas written a web based Wireless Configurator and a LinkQuality Checker, which are perl wrappers around my Wireless Tools.

Wireless monitor tools

  • Werner Schulte hasdevelopped QWireless, a program for the X86 and ipaq allowingto analyse wireless lans.
  • JanMorgenstern has written wavemon, a very nice cursesapplication to monitor your card using Wireless Extensions.
  • GreenBay Professional Packet Radio has a modified version of myWireless Tools for the Symphony, with nice colors and bar graphs, toallow better setup of Wireless Links.
  • JimCarter has written a APHunter, a Perl wrapper around myWireless Tools using curses to shows the result of WirelessScans.
  • Matthias Reifhas written KWaveControl, a KDE application that displaycurrent setting and statistics of Wireless cards.
  • Tobias Rundström did wvlanmon, a link monitor forGnome using Wireless Extensions.
  • MarkC. Langston has developed a very nice Enlightenment epplet,E-Wireless, that monitor link quality, of course using WirelessExtensions...
  • CarstenSchuermann has developed a very nice Window Maker dockapp,WMWave, that monitor link quality, signal strength and noiselevel.
  • GtnxSjoerd has developped a signal strength plug-in that fits into theGKrellM monitoring system.
  • TrentTrautman has developped a signal strength plug-in that fits intothe Entity XML framework.
  • Tim Ehlers has modifiedxosview to monitor the wireless link.
  • Jim Binkley hasdevelopped a wireless signal strength monitor. The Linuxversion uses the Wireless Extensions and has been designed for theiPaq.
  • DavidKoski has written a Java Applet to monitor the WirelessLink.
  • GabrielCain made a compact X11 wireless monitor.
  • Rob Flickenger made aPerl script that display link quality in color on your teminal.
  • Ico Doornekamp haswritten a simple applet that show basic network info and alsowireless signal strength.
  • Ico Doornekamp haswritten a simple applet that show basic network info and alsowireless signal strength.
  • JeromeKerdreux has written Gtk-Womitor, an applet that showgraphs of signal strength.
  • P. Lutushas written NetworkControl, an utility to monitor networkinterfaces statistics and signal strenght.
  • Jess Mahan wroteWM WiFi, a small Window Maker dockapp that monitor linkquality, bit rate and current access point.
  • Steven Hanley hasdeveloped a small package using Wireless Extensions to get thestatistics at the other end of the wireless link (remotestats), with a nice graphical user interface, and which can be dockedin your window manager.

Stumbler/Wardriving tools

This section is far from exhaustive, as most stumber applicationdirectly use monitor mode (some are listed later on...).
  • EricMaland and friends have developped a package to log discoveredESSID (and related info) of wireless networks in range.
  • Jeffrey Strube haswritten AP Hopper, a program that automatically hops betweenaccess point, check DHCP and log the result.
  • Paul Foxhas developped a shtumble, tiny shell script stumbler.
  • Iván Forcada Atienzahas developped a graphical stumbling package which generatesfiles compatible with NetStumbler.

Other packages using Wireless Extensions

  • Petr Baudishas modified the Hotplug scripts to better integrate ifrename withifplugd.
  • MoustafaYoussef has developped a general API for interfacing withWireless Extensions.
  • Jim Binkley hasdeveloped a version of Mobile IP which is wirelessaware. His Linux implementation uses the Wireless Extensions...
  • AvantCom hascreated a 802.11 SNMP MIB which expose Wireless Extensioninformation through SNMP.

Application specific to a driver

Those applications are partially using Wireless Extension, but alsorequire specific driver APIs, making them only useful if you use thespecific wireless driver (HostAP in this case) :
  • WeWimomonitor the HostAP driver and clients associated to it in a webinterface.
  • wifimonmonitor the HostAP driver and clients associated to it in atext terminal.
  • Thanos Panousis andThimios Dimopoulos have developped WiFiAdmin, a web frontend to configure theHostAP driver and some other drivers.

Useful applications not using Wireless Extensions

Now, a few other applications that don't use Wireless Extensions butare useful anyway :
  • Jon Sevy hasdevelopped a Java-based AirPort/RG1000 Base Stationconfigurator, that should please some people not owning aMac... He has also done Wireless Link Test Utility and aWireless Host Monitoring Utility for the Airport/RG1000.
  • JohanAlmqvist has developed a perl script to configure a D-LinkDWL-1000AP Access Point via SNMP.
  • Sujal Shah iswritting a Gnome application to configure a LinksysWAP11 Access Point via SNMP.
  • Ori Pessach hasdone a Gnome application to configure a Linksys WAP11Access Point via SNMP, which really works.
  • Roman Festchook haswriten a set of ncurses based utilities to configure via SNMP protocolAccess Points based on Atmel chipset (the case for mostIntersil clone vendors), and also Access Points based on NWNchipset.
  • MarkC. Langston has written some Perl script to check the status ofthe Airport Base Station.
  • TomZ. Meinlschmidt has developped an impressive package allowing tomonitor a Wavelan Access Point using SNMP.
  • Greg Hankinshas done a similar monitor for the RoamAbout Access Points.
  • V.Melnik has developpeda package to monitor a Wavelan Access Point using SNMP andstore the result in a mySQL database.
  • Dominic Kilbridehas developped a package to monitor various Access Points usingSNMP and store the result in a mySQL database and show graphicalresults.
    http://winfingerprint.sourceforge.net/aptools.php
  • KirbyKuehl has developped a package discovering Wireless Accesspoints from their wired side. It basically check MAC address thatmatch known Access Point manufacturers.
  • Jan.B.Fernquist hasdevelopped PrismStumbler, discovering networks in ranges withPrismII cards.
  • AirSnort is the veryfamous tools that allow you to crack WEP encryption and snoop802.11 traffic. Use only on your own network...
  • BruceBarnett has some tool to decode 802.11 frames.
  • Mike Kershaw andfriends have developped Kismet, a complete package forfinding 802.11 cells and their characteristics and 802.11 trafficanalysis (using the "monitor" mode of various cards).
  • The iproute2package, which allow to configure part of the Linux TCP/IP stackthat ifconfig just can't reach (original archive).
  • The NetPerf benchmark. That's the one I use, and I love it !
  • MRTGseems an interesting tool to monitor the quality of TCP links(I need to try it...).
0 0