A Variety of Tools and Projects Help Get Wireless Linux Off the Ground
As Wi-Fi become ubiquitous, Linux has jumped on the bandwagon. In this article, Roman Vichr explains how Linux has helped — and been helped by — a number of wireless tools and projects.
Linux, Linux, Linux — the versatile, stable, scalable, diverse, and competitive platform has gone wireless. It’s becoming the universal tool for almost everything, and it has found its place in wireless solutions, from desktops and servers with wireless access to access point systems. Learn more about how Linux is enhancing wireless networking.
A Linux Wireless Access Point: Build or Buy?
The fundamental question is this: Is a Linux system capable of integrating with other access points in a wireless network to provide connectivity between fixed nodes and roaming wireless clients?
The actual installation of a wireless LAN is not such a big deal; the key lies in what you buy, and whether it is supported under a Linux system. Check to make sure that you have the hardware for a specific operating system driver. Keep in mind that if you are looking for high performance (that is, gigabit data transfer rates), wireless is the wrong choice for you; even the latest standards offer transmission rates under 100 Mbps. Roaming presents a different challenge: maintaining a connection between various access points. To help with this, set up the Wired Equivalent Privacy (WEP) key to detect an access point that you can connect to. Keep things down to earth and remember that the main purpose of an access point is to be a bridge; that is, it should route packets from one network to another.
This article focuses on the various options and tools offered to manage these access points. Basically, you’re choosing whether to use tools with or without wireless extensions. (Wireless extensions is the name of a generic API that allows a driver to inform the user about space configuration and statistics specific to common wireless LANs.) For a step-by-step guide to installing access point software under Linux, read the article Building a wireless access point on Linux. For a good overview of the wireless network structure and bridging between LAN and WLAN, read the Linux Wireless Access Point HOWTO (see Resources for more information).
No Wireless Extensions
There are several technologies available that can help you set up Linux wireless networking without using wireless extensions, including Linux-IrDa and BlueZ, the Linux Bluetooth stack. Both are well described in Linux wireless networking. Another choice is called ROSE (Radionet Open Source Environment; see Resources for more information), a platform for building an 802.11 wireless access point. It is distributed both as an open source package and as a commercial version with documentation. ROSE’s advantage is that it can be compiled for any platform (for example, MIPS, x86, ARM, PowerPC). Supported WLAN cards are based on Intersil Prism Chipset 2/2.5/3. It also offers support for 5 GHz frequencies. Here are additional ROSE features:
• Access point development kit.
• 802.11 protocols and security, MAC address filtering, IPv4 routing, firewall, RADIUS, QoS, bridging, NAT, DHCP. Additional drivers like 802.11a/g/h are also supported.
• The ROSE builder is written in Python for good support and maintainability (Python language version 2.x with standard Python libraries — 2.1 and 2.2 have been tested, plus working C compiler, gzip).
Essentially, by using ROSE (with the Linux 2.4 kernel) and an 802.11 Intersil Prism-based WLAN card, you can build a Linux-based wireless access point.
Wireless Signal Strength
If you want to be an informed user, you should know how to estimate the strength of a wireless signal. The following is a simplified formula reflecting radio frequency signal loss for the 2.45 GHz frequency band used at 802.11b/g access points:
SignalLoss = 40 + 20•log (d) ;
Here, SignalLoss is expressed in dB and d is distance expressed in meters. This formula is simplified, as it does not take into account the loss of signal due to filtering by wall material; however, it gives you a quick idea about wireless signal coverage.
Choosing Wireless Extensions
The beauty of wireless extensions is that a single set of tools can support all the variations of wireless LANs, regardless of their type (as long as the hardware driver supports the wireless extensions). Another advantage is that these parameters can be changed on the fly without restarting the driver (or Linux).
The set of Linux tools that manipulate wireless extensions are generally referred to as the wireless tools. They use a textual interface and are rather simplified. The main ones used in Linux implementations are:
• iwconfig: Manipulates the basic wireless parameters
• iwlist: Initiates scanning and list frequencies, bit-rates, and encryption keys
• iwspy: Retrieves per-node link quality
• iwpriv: Allows for manipulation of wireless extensions specific to a Wi-Fi driver
• ifrename: Allows name interfaces based on various static criteria
Now, look at some utilities that provide a more user friendly front-end to additional management tools available for managing Wi-Fi. You’ll find links to all of these tools in the Resources section as well.
waproamd is a roaming daemon for wireless IEEE 802.11 NICs supporting Linux wireless extensions (v15 or newer), and was tested on Debian Linux. It is intended to configure WEP keys according to the networks found. The waproamd utility scans iteratively for wireless networks. When the NIC is associated with an available network, waproamd does not perform any more scans, but attaches the NIC card to the discovered access point. The scan can be tested using the command iwlist scan. waproamd supports host_roaming as defined by the Host AP driver. When using waproamd, do not forget to install a firewall; the utility itself does not protect against intrusion.
KWiFiManager is a tool for configuring and monitoring your wireless LAN PC card under a KDE environment on Linux; the tool itself is written for version 3.x of KDE. It uses the Linux kernel wireless extensions, so most wireless cards are supported from the pcmcia-cs package. This could be problematic, however, if you use drivers from the wlan-ng project for your card, because these drivers are not 100 percent compatible with the wireless extensions. You can give it a try anyway, or you can use the Host AP driver for the same card, which is wireless extension-compatible.
KWiFiManager comes distributed as an RPM package; however, there are a few prerequisites for installation. These prerequisites are the Qt toolkit (version 3.0.3+), KDE 3.x, and glibc2.2. After these packages are ready, the standard ./configure make make install compiles and installs the tool. The application offers several displays: Signal Quality, Connection Speed, Current Configuration, Access Point monitor, Statistics Viewer, and Configuration Editor (the last display is only accessible to the root user).
Glink, a link monitor and configurator for 802.11b cards using the Linux kernel with wireless extensions, is, roughly speaking, the GNOME equivalent for this.
Written in Perl, APHunter provides the output of an iwlist scan in a text file. The documentation for this utility can be called by the command perldoc -t ./aphunter. The utility offers several switches to control its output and indicators.
This utility requires a Linux kernel with wireless extensions. The utility requires a C library to compile and, consequently, is installed using (g)make. (Under BSD, you’ll need to add extra headers for installation: if_wavelan_ieee.h and if_aironet_ieee.h.) This utility shows the wireless link quality, link level, and noise. Its latest version can show level and noise in dbm under Linux.
The interoperability of various cards with Linux drivers is an important consideration when deploying wireless on a Linux platform. You should also ensure the interoperability of the various hardware pieces themselves; they should all understand each other’s signals within the same spectrum. Don’t forget that products that appear to be similar might not be. For example, 802.11 and 802.11-FH products are not interoperable with 802.11-DS products, and vice versa.
The use of various chipsets in different wireless products can be a challenge, given that some cards might be supported and others of the same brand might not be. Sometimes, even cards with the same model number can have different chipsets, which makes it difficult to determine if a card is supported under Linux. However, most of the available 802.11b cards use the Intersil PrismII chipset, which is well-supported under Linux.
The 802.11b specification is just an extension of 802.11-DS, which enhances speed, but the products are always interoperable at least at 2 Mbs (802.11-DS mode). The 802.11g standard is a non-straightforward extension of 802.11b; its purpose is to increase bandwidth on the same frequency.
When you try to make 802.11a products interoperate (at 5 GHz), be aware that they are interoperable themselves based on the exact same chipset, but they do not directly interoperate with 802.11b products unless you have a device that works with both 802.11b and 802.11a. For a good review of interoperability of Wi-Fi frequencies and standards, read The 802.11g standard — IEEE and The ABCs of 802.11.
When considering your Linux wireless device drivers, remember that the driver does not always implement all the features of the corresponding Windows driver. This limits the interoperability. Security features in particular tend to lag behind on Linux. The next section looks at some of the details on enhancements and management.
Networking Flexibility and Wireless Initiatives
To enable wireless network flexibility and ensure security, several initiatives have been launched such as the Wireless FreeNetwork Allocations and NodeDB.com (see Resources for more information). Essentially, these are sites where people can list their location and information about access points or fixed client connections so others can easily locate them based on a geographic directory service.
The spirit of Linux — its openness and user-as-owner and manager ethos — exerts its influence in several wireless initiatives, regardless of whether Linux is actually part of the solution. In some, like NodeDB.com, Linux is just one of the platforms. In the WIANA and NoCatAuth initiatives, it is the backbone of the initiatives due to the ability of user customization right at the operating system; that is, at the access point level.
The Wireless Assigned Numbers Authority, also known as the WIANA initiative (see Resources for more information), is attempting to create a structure for wireless address management. Traditional IP address registries depend on static hierarchical structures, which are not sufficient for wireless. WIANA has to address the ad-hoc character of wireless networks, where nodes can move from one hierarchy to another simply by virtue of their location. Under WIANA guidelines, users, not providers, govern the networks. Large-scale wireless networks are based on a physical medium that is different from the traditional Internet, which requires actual per-address authentication. The high connection fees in the traditional Internet prohibit wireless users from taking the same approach to obtaining IP addresses. Under WIANA, these addresses are provided free of charge. WIANA also seeks to centralize the handling of abuse and blocking. WIANA supports compatible wireless software and hardware under the mission statement provided by LocustWorld.com. The hardware and software is designed to be fully compatible under 802.11 Wi-Fi on any platform. The main idea is to provide open community wireless WANs, which are governed by the users themselves, to give users more flexibility.
You can put the initiative called NoCatAuth into a similar category. It was initially built to support 802.11b wireless networks in Sonoma County, California. This implementation approach centralizes the authentication code that makes shared Internet services to one point possible (similar to WIANA efforts). In order to use the NoCatAuth under an open source license, the Perl programming language, GNU make, and gpgv must be installed on your Linux system.
Linux’s Wireless Future
Linux has became a platform of choice for products and solutions such as BlueZ (running on Linux kernels 2.4 and 2.6) and Linux-IrDA, and it is now becoming the platform for cell phones as well. As cell phone hardware becomes more capable and sophisticated, it will provide a greater chance for smaller vendors to create usable features and provide greater control of the environment to users. The majority of Linux cell phone use is in Asia, where Linux is becoming the preferred 3G phone development platform. The reason is simple — Linux’s approach gives more flexibility and freedom not only to developers, but also to consumers.
• Check out the wireless Linux Storage Servers running SuSe Professional 9.0.
• The Linux Portal from IBM shows how IBM Software running on Linux can deliver what you need.
• Find out how IBM Linux servers are supporting Qualcomm’s wireless efforts.
• IBM’s BlueDrekar project has helped bridge Linux and Bluetooth.
• If you’re trying to build a Linux-based AP, you need to read the Wireless Access Point HOWTO.
• Once you’ve finished with the HOWTO, move on to Building a wireless access point on Linux (developerWorks, July 2003).
• For more general questions about Linux and Wi-Fi networks, read the Wireless LAN HOWTO . This page also features the Wireless LAN Hardware Survey.
• Learn more about the Wireless Assigned Numbers Authority, or WIANA, an initiative to ensure accessible and stable wireless address management.
• Check out the Community Wireless project, an organization to represent the wireless community network.
• LocustWorld helps install wireless networks worldwide.
• Learn more about NodeDB , the wireless node database project.
• NoCatNet is a project aimed at producing a community-supported Wi-Fi network in Sonoma County. NoCatAuth is the project’s authentication client.
• Freenetworks.org coordinates many free networks around the world to prevent interference and IP address overlap.
• Learn the basics of RF propagation (in PDF format).
• Learn more about the ROSE Net Access Point Development Kit (in PDF format).
• Check out the homepage for the Linux-IrDA project on Sourceforge.
• For more on IrDA and BlueZ, read Linux wireless networking (developerWorks, March 2004).
• KWiFiManager is a complete set of KDE tools using wireless extensions.
• waproamd is a Linux daemon that automatically roams between access points.
• APHunter is a Perl wrapper around the Linux wireless tools.
• Find out more about Gwireless, a wireless card configurator that uses wireless extensions. Glink is a part of this project.
• Find out about the Host AP driver, a Linux driver for wireless LAN cards.
• The 802.11g standard — IEEE (developerWorks, March 2003) shows how 802.11g has shaped up, and how it’s fareing in the race.
• The ABC’s of 802.11 (developerWorks, August 2002) explains the agreed upon standards of 802.11.
• Linux emerging as a cell phone platform ( Mobile Pipeline, May 2004) explains how cell phone managers are looking to Linux to fill the need for more sophisticated software that’s not attached to major vendors.