How to Configure Wireless on Any Linux Desktop
If you are a mobile Linux user one of the first things you need to do is to connect that mobile device to a wireless access point. By default, the standard Wi-Fi tools for the Linux desktops are straight-forward and reliable. That of course presumes you are using the standard desktops (GNOME or KDE). But what happens when you opt for a different desktop such as E17 or Fluxbox? Or what if the “default” standards aren’t flexible enough or feature-rich enough for your needs. In those instances you need to take a look at a different toolset for connecting you to a wireless access point.
What are your options? You could go for a GUI or command the command line. I would like to offer options for both GUI and command line with the help of Wifi Radar and ifconfig .
Assumptions
I will assume that you do have wireless hardware that does work in Linux. If you have found yourself with a wireless card that does not seem to work you might consider installing the latest Ubuntu and enabling the proprietary driver for your device. Most often this will have your wireless working much quicker than trying to go the ndiswrapper route.
I will also assume you have both SSID and the authentication key for your wireless connection, otherwise you probably wouldn’t be attempting to make this connection in the first place, right?
Wifi Radar
For many, Wifi Radar is a Python/PyGTK2 application that offers quite a bit more features and flexibility than the average tool (it will even speak the status of your connection – when connecting or disconnecting – so you know, without looking, if you are connected.) Wifi Radar is easy to install as well as use.
Since Wifi Radar is found in most all default distribution repositories, the installation is as simple as installing any Linux application. Just open up your Add/Remove Software tool and install. Once Wifi Radar is installed you can find it in Applications > Internet. When you start up Wifi Radar it will auto scan for any wireless networks and will display the available access points for you (see Figure 1). To connect to a network just select the network and click Connect and you will be prompted for a password (if the access point is set up to require one).
You can also dig deep within the preferences of WiFi Radar. If you do this, do it with caution. Much of the configurations are commands that are set up to work with the wireless networking system and many of these commands are fairly complex. What options you can safely tinker with are in the General tab. In this tab (see Figure 2) you can set Wifi Radar to auto-detect your wireless device (which is not set by default) and you can also set the Speak option. By default the Speak option uses the say command which is buggy at best. Instead, reconfigure this to use the espeak command. Once you do this the Speak option will work.
You will notice that WiFi Radar does not have a system tray icon. Don’t worry – when you close the application you will not be disconnected from your network.
Now let’s take a look at setting up a wireless connection from the command line.
Command Line
Believe it or not, this isn’t as challenging as it might seem. I will demonstrate how this is done on a Ubuntu machine. For other distributions you might have to alter the location of scripts or the name.
What you will need, in order to be able to establish this connection, are the following:
- ifconfig: Enable your wireless device.
- iwlist: List the available wireless access points.
- iwconfig: Configure your wireless connection.
- dhclient: Get your IP Address via dhcp.
- wpa_supplicant: For use with WPA authentication.
Make sure you have all of the above tools on your computer before you continue. To test for this tools you can, from within your terminal window, issue the commands:
- which ifconfig
- which iwlist
- which iwconfig
- which dhclient
- which wpa_supplicant
You should see the path where each tool is installed. If you receive an error that a command is not installed you will need to install it. This should not be the case, since these are standard tools that are required for wireless networking.
Let’s take a look at how this is done when you are connecting to a non-WPA authentication-based wireless network.
Now that you have confirmed they are installed start off with the command:
Where wlan0 is the name of your wireless device (this is most often the default). The above command will bring your wireless device up so it is ready to use. The next phase is to scan for any wireless access points with the command:
From the output of the scan you should see a line (or lines) like:
Where NETWORK_NAME is the name of an available wireless network.
Now that you have your network name (and you know it’s available) you can connect to that network with the command:
iwconfig wlan0 essid NETWORK_NAME key WIRELESS_KEY
Where NETWORK_NAME is the name of the network you want to connect to and WIRELESS_KEY is the security key for that network. NOTE: The iwconfig command defaults to HEX values for wireless keys. If you need to use ascii you have to prepend the “s” prefix to your key like so:
iwconfig wlan0 essid NETWORK_NAME key s:WIRELESS_KEY
With your connection made, you now have to get an IP address for your machine using the dhclient command like:
Simplify the Process
Naturally you do not want to have to issue all of those command in order to bring up a wireless network. You can make this a lot easier by creating a script to handle the task. A possible script might look like this:
#! /bin/bash
ifconfig wlan0
iwconfig wlan0 essid NETWORK_NAME key WIRELESS_KEY
dhclient wlan0
Where NETWORK_NAME and WIRELESS_KEY are unique to the network you are connecting to. Save that file with the name wireless_up and give it executable permissions with the command chmod u+x wireless_up and you are ready to use that file to bring up your wireless. You can even move that file to /usr/local/bin so the command is global. All you would have to do to bring up your wireless connection is issue the command wireless_up and you’re ready to go.
For WPA-based networks you will need to take a different approach. Do the following:
1. Issue the command wpa_passphrase SSID PASSWORD (Where SSID is your network ID and PASSWORD is your wireless password). This will generate a psk string that you will use in the configuration file.
2. Edit the /etc/wpa_supplicant.conf file to reflect:
Where SSID is the actual ID of your wireless network and PSK is the string generated by the wpa_passphrase command.
3. Run the wpa_supplicant daemon with the command:
wpa_supplicant -B -i INTERFACE -DWext -c /etc/wpa_supplicant.conf
Where INTERFACE is the name of your wireless interface.
4. Now make sure you are associated with your network with the command iwconfig INTERFACE (Where INTERFACE is the name of your wireless interface).
5. Get an IP address with the command: dhclient INTERFACE (Where INTERFACE is the name of your wireless interface).
You should now be on the wireless network.
You can automate this by creating an entry in /etc/network/interfaces like this:
iface INTERFACE inet dhcp
  pre-up wpa_supplicant -Bw -Dwext -i INTERFACE -c /etc/wpa_supplicant.conf
  post-down killall -q wpa_supplicant
Where INTERFACE is the name of your wireless interface.¬â€
Final thoughts
There are plenty of ways to connect to a wireless network in Linux. So long as your hardware is working, you shouldn’t have a problem finding a tool that will help you get connected. Whether it’s a GUI or command line, Linux has you covered on the wireless front.
Configure WiFi Connections
This section explains how to establish a WiFi connection. It covers creating and modifying connections as well as directly connecting.
Establish a Wireless Connection
This section will show how to establish a wifi connection to the wireless network. Note that directly connecting will implicitly create a connection (that can be seen with “nmcli c”). The naming of such will follow “SSID N” pattern, where N is a number.
First, determine the name of the WiFi interface:
$ nmcli d DEVICE TYPE STATE CONNECTION . wlan0 wifi disconnected --
Make sure the WiFi radio is on (which is its default state):
Then, list the available WiFi networks:
$ nmcli d wifi list * SSID MODE CHAN RATE SIGNAL BARS SECURITY . my_wifi Infra 5 54 Mbit/s 89 ▂▄▆█ WPA2
As an example, to connect to the access point ‘my_wifi’, you would use the following command:
$ nmcli d wifi connect my_wifi password
is the password for the connection which needs to have 8-63 characters or 64 hexadecimal characters to specify a full 256-bit key.
Connect to a Hidden Network
A hidden network is a normal wireless network that simply does not broadcast it’s SSID unless solicited. This means that its name cannot be searched and must be known from some other source.
Issue the following command to create a connection associated with a hidden network :
$ nmcli c add type wifi con-name ifname wlan0 ssid $ nmcli c modify wifi-sec.key-mgmt wpa-psk wifi-sec.psk
Now you can establish a connection by typing:
is an arbitrary name given to the connection and is the password to the network. It needs to have between 8-63 characters or 64 hexadecimal characters in order to specify a full 256-bit key.
Further Information
You will find further information and more detailed examples on following pages: