Docs Linux wlan FAQ 3

3. Compiling and installing

Details to 802.11 and getting Linux WLAN working on your system

3.1 What software do I require?

You need at least Linux kernel version 2.0.36 or later and pcmcia-cs version 3.0.9 or later. The latest Linux kernel can be obtained from and the latest pcmcia-cs version from .

3.2 What modes and protocols are supported by the latest drivers and which aren’t?

Linux WLAN is meant to be at least a partial implemention of IEEE Standard 802.11 D10.0.

There are two modes of interest to most users: WLAN mode and Ethernet conversion mode.

The WLAN mode defines the topology and some of the protocol characteristics of a WLAN node. There are three basic modes for any 802.11 WLAN station. Unfortunately, not everyone uses the same name for the same mode, the following table gives some of the mode names in common usage:

802.11 Official Common Usage Vendor
————————– ————————— ————————
Independent BSS (IBSS) Ad-Hoc Peer to Peer
BSS or ESS Station Infrastructure Structurenet
BSS Access Infrastructure Point AP n/a

An IBSS is a collection of stations that are able to communicate with each other directly. There is no central collection point for packets. IBSS networks can be created at any time and by any station. Once one station creates an IBSS, other stations may join that IBSS. The IBSS will exist as long as one of the stations that created or joined the IBSS is still running. If one of the IBSS peer stations is a router and the other peers have the router as their default gateway, then wireless packets have the means to enter and leave a wired network (and hence reach the internet).

An ESS Station is considered by some to be a ‘client’ on an Infrastructure network. An infrastructure network is created by a centrally coordinating station that has additional functionality. That central station is called an Access Point or AP. Once the AP has created the network, ‘client’ stations may join that network, authenticate with the access point and associate with the ESS network that the AP represents. According to the standard, all traffic within an infrastructure network passes through the AP. When one ‘client’ station wishes to send a packet to another ‘client’ station, the packet first goes to the AP and the AP forwards it to its destination. APs also commonly provide an ‘Integration’ function, that is, the AP provides the means for wireless packets to be forwarded to a wired network. Since all traffic in the infrastructure network passes through the AP, APs are commonly implemented as bridges.

BSS Access Point mode is available in some driver sets (and is the target functionality for Linux WLAN). According to 802.11 an AP is a wireless station with all the same functionality of an ESS station, but it also includes additional functions.

Ethernet conversion modes are NOT specified as part of 802.11 but are necessary in bridges and in station drivers that make the host OS think the WLAN card is an ethernet card (just about every driver, including linux-wlan, does this). The ethernet conversion specifies how ethernet frames will be converted to 802.11 frames and vice-versa. The most common modes are:


(simplest) The allowed length of 802.11 data frames is 2340 (data field is 2312). Therefore a maximum length ethernet frame can be tucked into the data field of an 802.11 frame, and that’s precisely what this mode does.

In its simplest terms, RFC1042 moves the protocol number in a DIXII ethernet frame into an LLC+SNAP header.

An addendum to a bridging standard. Allows for a receiving station to be able to tell if a frame with an LLC header was originally a DIXII frame.

From a user’s perspective, the details of each mode don’t matter that much. You just need to make sure that all of your stations and APs use a matching mode. Unfortunately, some vendors use their own naming conventions for the various modes. Check the README. for additional information in newer releases.

The latest stable linux-wlan driver is version 0.3.4, and supports both the Ad-Hoc and access point mode (infrastructure).

3.3 Why won’t the linux-wlan drivers compile on my RedHat system?

Most probably you will encounter the following error on RedHat systems:

pcmcia/config.h: No such file or directory.

If you do, you’ll need to get the source pcmcia-cs (if you haven’t already). Once you have the source, you need to run the configure script for it. Directions on this are in the root directory of the pcmcia package. It will ask a question from where to get the configuration. It can deduce the settings from the running kernel/pcmcia modules.

Once you have run the configure the config.h file that the WLAN drivers are looking for will be there and the compilation should work without errors.

3.4 Why does the PCMCIA card manager identify my card as ‘anonymous memory card’?

This problem is described in the Linux PCMCIA-HOWTO as ‘IO port and memory port scan failure’ (sections 3.3.4 and 3.3.5). The symptoms are more specific:

Inserting the card generates a high beep followed by a low beep.
The card is identified as `anonymous memory cards’.
The system log reports that various memory ranges have been excluded.

In order to fix this problem you should try to vary the excluded/included IRQ and i/o ranges. Also make sure you included the WLAN config file: this can be easily done by adding source ./yourpath/wlan.config to the end of your PCMCIA config file.

3.5 Why do I get ‘wlantcl: card detect ioctl failed’ (ISA-to-PCMCIA)?

It’s an indication of IRQ/IO/memory conflicts: obviously you need to make sure that the IRQ and IOBASE you want to use are not in use by somebody else. One of the symptoms might be that you don’t see any interrupts on the card, so commands like wlanctl may never finish. Check /etc/pcmcia/config.opts to make sure sure you aren’t incurring any IRQ or IO conflicts. If you have the Linux /proc-filesystem installed on your system you could use /proc/interupts and /proc/ioportsto check for possible conflicts. If there are no conflicting IRQs or overlapping IO-ports according to the /proc-filesystem, then you might have excluded to many IO ports and/or IRQs. Eventually, you might to exclude particular interrupts like for instance the conflicting IRQ. Also make sure the IRQ of interest is allocated for ISA use in your BIOS setup.
3.6 Why is the wrong PCMCIA module loaded by the card manager?

Check wether you included the WLAN config file (wlan.config): this can be easily done by adding ‘source ./yourpath/wlan.config’ to the end of your PCMCIA config file (/etc/pcmcia/config).

3.7 Why does my computer freeze after am930_cs: io=0x100 irq=3?

This is a typical PCMCIA configuration issue which indicates there are IRQ/IO/memory conflicts. You can solve this problem by editing the /etc/pcmcia/config.opts file: vary the excluded/included irq and i/o ranges. You should also check your BIOS settings for IRQs that are reserved for PCI or PnP devices….the ones you are trying to use for PCMCIA (i.e. wireless) should be reserved for ISA use.
3.8 The WLAN script fails because (after my card is detected) the second argument to wlan is empty: ‘wlan start ‘.

In case you see a line like am930_cs: io=0x100 irq=3 in your logs which is not followed by a Firmware message like for instanceFirmware Banner: PCnetMobile:v2.10 033098 API004, the driver and card aren’t initializing properly and cardmgr can’t pick up the device name before calling the script. The most common reasons for initialization failure are IRQ/IO/memory conflicts. Check /etc/pcmcia/config.optsto make sure sure you aren’t incurring any IRQ or IO conflicts. If you have the Linux /proc-filesystem installed on your system you could use /proc/interupts and /proc/ioports to check for possible conflicts. If there are no conflicting IRQs or overlapping IO-ports according to the /proc-filesystem, then you might have excluded to many IO ports and/or IRQs. Eventually, you might to exclude particular interrupts like for instance the conflicting IRQ. Also make sure the IRQ of interest is allocated for ISA use in your BIOS setup.

3.9 Why do I get these ‘tx attempt, not joined, frame dropped’ messages?

The error means that a BSSJOIN or a BSSCREATE was not done by your station. This usually means that you haven’t got your DESIRED_SSID and/or SSID set right so your scan is not finding the BSS of interest.
3.10 I think my card is initialized correctly but why aren’t the leds (if any) working properly?

You shouldn’t pay any attention to the LEDs on the cards. The Linux WLAN driver supports various cards made by different vendors: different vendors tend to use the LEDs for different purposes and we didn’t actually want to worry with trying to match the behavior of each vendor individually.

3.11 Why can’t I ping other stations on a BSS that I have sucessfully joined?

There are some reasons for this that are not unique to wireless networks, so make sure you’ve eliminated these. One way to do this is to substitute a wired ethernet card for the wireless card, using all the same routes, servers, and protocols. Make sure TCP/IP is installed at both ends, with correct routes, gateways (if necessary), and so on. If you still have the same problem, then there may be something wrong with the network configuration at one or both ends of the ping. Find a good networking reference and fix this first. If the wired connection works, then there may be something wrong with the frame conversion within the driver. Windows machines and some access points may require RFC1042 conversion — use the settingP80211_CONVERSION=rfc1042 in wlan.opts.

3.12 Why am I able to make a connection, but then lose it occasionally for no apparent reason?

Some access points (including the Nokia) may drop the association of wireless stations that show no activity for some specified period — maybe as short as a few minutes. The manufacturer-supplied drivers for these devices probably will “autojoin” whenever they need to — you may see mention of this in their documentation for their Windows drivers. To prevent your Linux system from dropping off the network, set up a cron job to ping the access point about once a minute.

3.13 Is there any reason why DHCP could not be used across a WLAN?

No, if the DHCP host is on the wireless segment, DHCP should work fine. If the DHCP host is not in the wireless segment, you can use a ‘DHCP relay agent’, available from , which passes DHCP requests from one network segment to another.

3.14 Why does my WLAN have such ‘high’ latency compaired with a wired LAN?

Ping times (latency) will always be higher in wireless due to the nature of the fully acknowledged MAC protocol and the uncertainty of the medium. Additionally, you have the potential for MAC level retries and an RTS/CTS exchange. All of these things are in place to handle the uncertainties of the wireless medium. Additionally, if you are accessing a node on the wired network, there are bridging/routing delays to consider as well.

Wireless will _never_ be as fast as wired networks. That’s like trying to ask why oceangoing boats/ships can’t go as fast as cars/trucks on an interstate highway. The interstate highway system is an expensive, fully maintained, infrastructure that limits where you can go. But if you’re going somewhere that the highway goes, it can get you there quickly and reliably. The ocean, on the other hand, is an inexpensive, unmaintained and risky travel medium. But, it _is_ highly flexible with the ability to take you to a vast number of destinations.

The value proposition in wireless isn’t “replace wired networks”. It is “Enhance the wired infrastructure to support mobility” and “Only replace the wired infrastructure where it is prohibitively expensive to maintain”.

Next Previous Contents