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!
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
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
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
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.
This step configures the wireless settings shown in the previous section.
iwconfig eth2 mode Managed iwconfig eth2 essid "wlug-test"
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
iwconfig eth2 mode Ad-Hoc iwconfig eth2 essid "wlug-test" iwconfig eth2 channel 6
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
If your output matches the examples above for the 3 important parameters then you are ready to move on to the next step.
iwconfig eth2 rate 54M
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).
ifconfig eth2 10.10.10.1 netmask 255.255.255.0 broadcast 10.10.10.255 up
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
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
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...
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.