Penguin

Notes on Setting Up Wireless Networks in Linux

This page details how you can setup a wireless connection under linux, and hopefully some tips and tricks that you can use to simplify the task.

There are several methods you can use to configure a wireless interface in a linux computer, often these are distribution specific. This page takes the approach of showing you how to manually setup a link at the command line before delving in to distribution specific details. While this page is written with 802.11b in mind it should be generic enough to help with other wireless technologies such as 802.11g as well.

The structure of this page is a number of steps that should be executed in order, at the end of each step is a Troubleshooting section that should help you to fix any problems that you encountered. Do not proceed to the next step unless you are sure you have completed all the preceding steps correctly!

There is also useful webpages at:

  • HP which has quite a lot of links and background information.
  • http://linuxwireless.org/ which is the new official wiki of wireless drivers for Linux

Verify Environment

First we need to check that there is a wireless card in your computer to. To get a list of all wireless interfaces in the machine use the iwconfig command. In Debian, this command is part of the package called wireless-tools. In the example shown below we can see that this particular computer has a single wireless interface called eth2. The rest of the output provides details of the current configuration of the wireless interface. Ignore that for now, we'll deal with it later - the important thing here is that you have a wireless interface installed and ready to go.

Other common names for a wireless interface include "wlan0" or "ath0" (the latter for wireless cards using the Atheron/madwifi driver). If the output of iwconfig shows something other than 'eth2', make the appropriate substitution in the rest of the following commands.

xenon:~# iwconfig
lo        no wireless extensions.

eth0      no wireless extensions.

eth1      no wireless extensions.

eth2      IEEE 802.11-DS  ESSID:"test"  Nickname:"test"
          Mode:Ad-Hoc  Frequency:2.462GHz  Cell: 00:02:2D:39:A9:31
          Bit Rate=11Mb/s   Tx-Power=15 dBm   Sensitivity:1/0
          Retry limit:4   RTS thr:off   Fragment thr:off
          Power Management:off
          Link Quality:36/0  Signal level:-61 dBm  Noise level:-97 dBm
          Rx invalid nwid:0  Rx invalid crypt:3  Rx invalid frag:6514
          Tx excessive retries:6  Invalid misc:0   Missed beacon:0

Troubleshooting

If iwconfig does not show any wireless interfaces in your computer you have a problem! Steps to fix it:

  • Check that you do actually have a wireless card installed
  • Check that you have the appropriate modules (driver) for your card compiled and successfully loaded, see WirelessChipsets for more information on this
  • Check that PCMCIA is correctly configured if you are using a miniPCI card
  • If still stuck, try google, or try emailing the WlugMailingList.
  • As with most system settings commands, you must su(1) to the root user for the command to have permissions to query hardware devices.

Check Network Availability

You can check if your card can see any access points at all by issuing the command iwlist eth2 ap (or whatever interface your wireless is on if not 'eth2').

# iwlist eth2 ap
eth2    Peers/Access-Points in range:
  00:11:2F:61:49:2B : Quality=0/94  Signal level=-95dBm   Noise leve=-95dBm

This shows the MAC address of any remote wireless access points (or peers if in AdHoc mode?).

Apparently the "iwlist ... ap" command is obsolete, and the better command is "iwlist eth2 scanning", which gives its output in the different format.

On some network cards you need to issue the above scanning command to get the card to associate. e.g. Current driver for Broadcom 4306

Troubleshooting

If your wireless card can't find anything to connect to, you won't get very far.

  • Check that you are not too far away from the equipment
  • Check that there is no interference (running microwave ovens, cordless phones operating on the same frequency, ...)

Determine Wireless Settings

At this step we need to determine the parameters of our wireless. The biggest question here is the mode of the link. If you are connecting to an Access-Point then you will ned to configure your interface in Managed mode, otherwise for connecting two or more computers directly to each other you will need to use Ad-Hoc mode. The following steps will provide an example of each mode. The other three pieces of information that you need are Channel, ESSID and Network.

Channel specifices the Physical frequency that your wireless card transmits and receives on. Often the channel will be determined automatically between wireless equipment.

ESSID can be thought of as a Network Name and is used to allow multiple logically seperate wireless networks to operate on the same channel --- you can't connect to an AccessPoint unless you are both using the same ESSID!

Network is the IP settings that you will use to communicate with the other end of the link.

All four of these parameters (Mode, Channel, ESSID and Network) need to be agreed on between the two ends of the link for it to function correctly. The values that the remainder of this example will use for these parameters are shown below.

Managed Mode

  • Mode: Managed
  • Channel: 6
  • ESSID: wlug-test
  • Network: 10.10.10.0/24, this computer will be 10.10.10.1, Access Point will be 10.10.10.128

Ad-Hoc Mode

  • Mode: Ad-Hoc
  • Channel: 6
  • ESSID: wlug-test
  • Network: 10.10.10.0/24, this computer will be 10.10.10.1, Remote Computer will be 10.10.10.254

Setup Wireless

This step configures the wireless settings shown in the previous section.

Managed Mode

iwconfig eth2 mode Managed
iwconfig eth2 essid "wlug-test"

You'll notice that we didn't set the channel - this is intentional. In Managed mode the channel is automatically set by the access point and should not be specified on the client. If you did everything correctly you should now be able to get output similar to below, the important settings are ESSID, Mode and Frequency.

xenon:~# iwconfig eth2
eth2      IEEE 802.11-DS  ESSID:"wlug-test"  Nickname:"test"
          Mode:Managed  Frequency:2.437GHz  Access Point: 00:02:2D:39:A9:31
          Bit Rate=11Mb/s   Tx-Power=15 dBm   Sensitivity:1/0
          Retry limit:4   RTS thr:off   Fragment thr:off
          Power Management:off
          Link Quality:36/0  Signal level:-61 dBm  Noise level:-97 dBm
          Rx invalid nwid:0  Rx invalid crypt:3  Rx invalid frag:6514
          Tx excessive retries:6  Invalid misc:0   Missed beacon:0

Ad-Hoc Mode

iwconfig eth2 mode Ad-Hoc
iwconfig eth2 essid "wlug-test"
iwconfig eth2 channel 6

If you did everything correctly you should now be able to get output similar to below, the important settings are ESSID, Mode and Frequency.

xenon:~# iwconfig eth2
eth2      IEEE 802.11-DS  ESSID:"wlug-test"  Nickname:"test"
          Mode:Ad-Hoc  Frequency:2.437GHz  Cell: 00:02:2D:39:A9:31
          Bit Rate=11Mb/s   Tx-Power=15 dBm   Sensitivity:1/0
          Retry limit:4   RTS thr:off   Fragment thr:off
          Power Management:off
          Link Quality:36/0  Signal level:-61 dBm  Noise level:-97 dBm
          Rx invalid nwid:0  Rx invalid crypt:3  Rx invalid frag:6514
          Tx excessive retries:6  Invalid misc:0   Missed beacon:0

Verify Configuration

If your output matches the examples above for the 3 important parameters then you are ready to move on to the next step.

Troubleshooting

If you don't get output similar to above you could try the following

  • Bring the interface up (some cards don't update their config until the interface is brought up) eg. ifconfig eth2 up, then try iwconfig again
  • Check dmesg, syslog, etc for any error messages printed
  • Check that the ESSID and/or any security settings match up between the clients and AccessPoint.
  • If still stuck, google, or try the WlugMailingList.

Setting the rate

Some cards don't automatically set the rate and may set it at a lower rate. You can fix this by typing for example (for an 802.11g card)

iwconfig eth2 rate 54M

Setup IP

This is a pretty generic step and isn't actually related to Wireless in any way, it's the same as bringing up any interface at all! You can either manually assign network settings, or use DHCP (if the AccessPoint is also a DHCP server).

Managed Mode, Ad-Hoc Mode

ifconfig eth2 10.10.10.1 netmask 255.255.255.0 broadcast 10.10.10.255 up

Verify Configuration - Managed Mode

xenon:~# ping 10.10.10.128
PING 10.10.10.128 (10.10.10.128): 56 data bytes
64 bytes from 10.10.10.128: icmp_seq=0 ttl=64 time=3.9 ms
64 bytes from 10.10.10.128: icmp_seq=1 ttl=64 time=3.6 ms
64 bytes from 10.10.10.128: icmp_seq=2 ttl=64 time=3.6 ms

--- 10.10.10.128 ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max = 3.6/3.7/3.9 ms

Verify Configuration - Ad-Hoc Mode

xenon:~# ping 10.10.10.254
PING 10.10.10.254 (10.10.10.254): 56 data bytes
64 bytes from 10.10.10.254: icmp_seq=0 ttl=64 time=3.9 ms
64 bytes from 10.10.10.254: icmp_seq=1 ttl=64 time=3.6 ms
64 bytes from 10.10.10.254: icmp_seq=2 ttl=64 time=3.6 ms

--- 10.10.10.254 ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max = 3.6/3.7/3.9 ms

Troubleshooting

  • Check settings at remote end - do they match configured settings here
  • Check for any error messages in dmesg, syslog, etc
  • If still stuck, google, or try the wlug mailing list.

Done

At this point you are done and successfully have a wireless interface up and running in linux!

Also see WirelessNetworkSecurityNotes for tips on making sure your network is secure from any random person wandering past with a wireless laptop...

Distro-specific Notes

Debian Sarge ( + Ubuntu?)

In /etc/network/interfaces, include the following stanzas:

# for devices managed by hotplug. This assumes you have
# NET_AGENT_POLICY=hotplug
# in /etc/default/hotplug, which is the default.
mapping hotplug
  script echo

# replace eth2 with whatever interface your wireless card gets called
# and obviously replace 'MY_SSID' appropriately for your wireless network
iface eth2 inet dhcp
    pre-up iwconfig eth2 essid ''MY_SSID''
# if you are using WEP and need to specify an appropriate 13 char key,
# comment out the above line and uncomment the following line:
#    pre-up iwconfig eth2 essid ''MY_SSID' key s:abcdefghijklm

Any of the commands mentioned in this page can be added to the above file in Debian/Ubuntu with the word up before it to automatically do this after the card is initialised or pre-up if before the card is initialised.


CategoryWireless, CategoryNotes