When madwifi.org was launched (sometime in the Fall of 2005) we switched to a new codebase submitted by Atheros. This new code offers advanced features, including, but not limited to, a new HAL, support for virtual APs and WDS.
This driver is not fully open source, it requires a hardware abstraction layer closed source binary.
All PCI and Cardbus Devices with Chipset from Atheros
Enhanced Chipset Support
The HAL that comes along with the new code now supports almost all of chipsets that are currently available. There should be a new HAL soon which supports all of them except for USB chipsets.
VAPs and wlanconfig
The most interesting new feature is probably the introduction of Virtual AP (VAP) mode, which allows the operation of multiple concurrent (virtual) access points, and concurrent running in both AP and station mode. VAPs sit on top of a base device (usually called wifi0). This base device will be the first device you see when the drivers load, and is not linked to the wireless extensions. Beware that ifrename might change the device name from wifi0 to something else if you installed and configured it to rename interfaces with your device's MAC address. The initial kernel messages from ath_pci will still report wifi0, though.
To manipulate VAPs, Madwifi comes with a tool called wlanconfig which is used to create and destroy VAPS with various different modes. As of SVN r1407, a sta VAP (Managed mode interface) is created by default.
A typical wlanconfig command might look like the following (which creates the device ath0 as a normal 'station mode' VAP):
wlanconfig ath0 create wlandev wifi0 wlanmode sta
If the 0 from ath0 were to be ommited, wlanconfig would start creating devices using the first available index. If you obtain an error (wlanconfig: ioctl: Invalid argument) when specifying an index, not specifying an index may work (!). To create an access point, use:
wlanconfig ath0 create wlandev wifi0 wlanmode ap
- To create an access point, _and_ a station, use:
wlanconfig ath0 create wlandev wifi0 wlanmode ap wlanconfig ath1 create wlandev wifi0 wlanmode sta nosbeacon
To create APs which share a single MAC address, use the -bssid flag when creating the VAPs:
wlanconfig ath0 create wlandev wifi0 wlanmode ap -bssid wlanconfig ath1 create wlandev wifi0 wlanmode ap -bssid
- Finally, to destroy a VAP, issue the command:
wlanconfig ath0 destroy
- Note that the whole interface name is needed. Also note that this feature will work with any supported chipset.
WDS, XR, Compression etc.
Madwifi comes with a whole host of private commands (accessible through iwpriv) which allow getting and setting driver features/details. The following descriptions are as a guide only:
4AddressHeaders – 4-address header support.
Roaming – Roaming.
- WPA/WPA 2 countermeasures
WMM – Wi-Fi Multimedia.
Super AG – Super A/G Features.
TPC – Transmit Power Control.
DFS – Dynamic Frequency Selection.
Background Scanning – Background Scanning