waproamd 0.6

Copyright 2003,2004 Lennart Poettering <mzjncebnzq (at) 0pointer (dot) de>

waproamd is obsolete, please use wpa_supplicant instead. waproamd contains some race conditions that are impossible to fix. wpa_supplicant supersedes waproamd in almost every way.


This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.


Tue Feb 10 2004:

Version 0.6 released, added spec file, disable host roaming by default, the default configuration doesn't rely on ifplugd anymore

Mon Jan 26 2004:

Version 0.5b released, added missing file.

Mon Jan 26 2004:

Version 0.5 released, changes include: Better compatibility with wireless drivers, support for disabling specific networks, assorted fixes, compatibility with newer kernels

Mon Nov 17 2003:

Version 0.4 released, changes include: support for ESSID based configuration, host_roaming private ioctl support on hostap drivers, ability to suspend/resume the daemon, support for looking for uppercase MAC scripts, many robustness fixes.

Fri Oct 17 2003:

Version 0.3b released, changes include: minor bug fixes.

Fri Oct 17 2003:

Version 0.3 released, changes include: split aeswepd into its own package, add documentation, several bug fixes.


waproamd is a roaming daemon for wireless IEEE 802.11 NICs supporting the Linux wireless extensions. It is intended to configure the WEP keys according to the networks found.

Due to driver and stability issues, starting from version 0.5 ifplugd is no longer recommended for joint use with waproamd. The default action scripts of waproamd are modified accordingly: they run ifup/ifdown on their own behalf when a new network became available or and old one is lost. If you like you may still use waproamd and ifplugd on the same interface together, but you have to modify the default configuration to reflect that.

An alternative implementation of a tool like this is wlandetect.


Version 0.6 works fine on hostap 0.0.4 and airolan. Other driver/card combinations not tested, but may work too.


Have a look on the man pages waproamd(8), waproamd.conf(5). (An XSLT capable browser is required)

Mode of Operation

As long as the local NIC is not associated to any wireless network waproamd scans iteratively for them. If one is detected, a script in /etc/waproamd/scripts/ named after the MAC address of the access point is called. (First lowercase, than uppercase is checked) If a script like this is not found a script named essid:<ESSID> in the same directory is used. Special characters are escaped in an HTTP URL like fashion. If this script is not existent, /etc/waproamd/scripts/default is called instead. The first argument to this script is "start". If the association is lost, the same script is run with the argument "stop". While the NIC is associated no scans are issued.

If multiple WLANs are detected at the same time, the network which is detected by the hardware first is selected. However, networks where a matching script exists take precedence.

waproamd requires a network driver supporting the Linux wireless extensions v15 or newer. The driver needs to support scanning for wireless networks, which may be tested by running "iwlist scan". If the driver supports the wireless event subsystem, waproamd may use it to improve latency behaviour. It is not required, however.

waproamd supports the host_roaming private ioctl() as defined by the hostap driver.

Don't forget to install a firewall on your computer, since waproamd will try to log into any network it finds with default settings, if not configured otherwise. Yes, you a right, waproamd is war-driving on steroids.


Edit /etc/waproamd/waproamd.conf for configuration changes. This file is a bourne shell script sourced by the init script and used to generate a suiting command line. You may specify more than one ethernet interface in INTERFACES. For each interface a seperate instance of waproamd is spawned. The arguments specified in ARGS are appended to waproamd's command line. Have a look on waproamd -h or man waproamd for further information about the options available.

Put your WEP keys in /etc/waproamd/keys/ in files named after the AP's MAC address with an appended .wep. If the AP uses aeswepd for automatic rekeying, you may put the AES key into a file with the suffix .aes instead.

The configuration is similar to ifplugd.


Not all drivers/cards support the wireless event subsystem of the Linux wireless extensions. Its support on your machine cannot be detected automatically, you have to test it yourself with "iwlist scan". See man 8 iwlist for more information. If your driver/card combination does not support this, you have to enable polling of association status by passing -e on the command line. This will increase the reaction latency of waproamd.

You can priorize networks over others by adding symbolic links to the default script to /etc/waproamd/scripts.


A newer Linux Kernel with a compatible device driver and WLAN NIC (Wireless extensions v15 or newer). Most modern cards and drivers are compatible, like mines which work with the hostap driver, version 0.0.3 and above. The driver has to support the scanning interface, wireless event support ist nice to have.

waproamd was developed and tested on Debian GNU/Linux "testing" from October 2003, it should work on most other Linux distributions since it uses GNU autoconf for source code configuration.

The machines used for development are a Medion 9580-F laptop with a TEAC and a ZONET PCMCIA WLAN NIC. Both cards feature a PRISM2 chipset. hostap 0.0.4 was used as driver.

waproamd needs libdaemon.


As this package is made with the GNU autotools you should run ./configure inside the distribution directory for configuring the source tree. After that you should run make for compilation and make install (as root) for installation of waproamd.

The installation scripts create an init script in ${sysconfdir}/init.d/waproamd, however no /etc/rc?.d/ links are created for it.


Thomas Hood, Norbert Preining, Herbert Graeber, Fabrice Bellet, Sean Reifschneider for patches

Oliver Kurth for packaging waproamd for Debian


The newest release is always available from http://0pointer.de/lennart/projects/waproamd/

The current release is 0.6

Get waproamd's development sources from the Subversion repository.

You may find a mostly up to date Debian package of waproamd on the Debian package repository.

If you want to be notified whenever I release a new version of this software use the subscription feature of Freshmeat.

New! There is a joint ifplugd and waproamd mailing list available.

Lennart Poettering <mzjncebnzq (at) 0pointer (dot) de>, February 2004
$Id: README.html.in 71 2004-02-09 23:22:19Z lennart $