How To Troubleshoot Wireless Network Connection in Ubuntu

Sponsored Link
In setting up their wireless connection for the first time, Im discovering many individuals having problems connecting through Network Manager or other GUI wireless connection tools. In fact my Network Manager is intermittently buggy, connecting sometimes and not others. This guide benefits all users in case the GUI tools are not working, and is useful for testing a wireless connection during initial installation of wireless drivers since it provides for good debugging output.

Unencrypted/ WEP / WPA connections will be covered in this guide

Pre-requisites

1. Properly installed network driver --- This guide can be used to troubleshoot driver installation to see if it is properly functioning

2. The ESSID of your router must be broadcasted and not hidden

3. Knowlege of your wireless cards driver (please see Prerequisite #4 to determine driver). Those using the r8187/r818x driver please see the end of the guide

4. Knowledge of your wireless card's Interface Name -- The user must know the proper interface of the wireless connection (wlan0, eth1, rausb1, etc). To discover this information, at command line type

lshw -C network

There may be multiple interfaces listed, however look under the section appropriate to your wireless device for the line labeled logical name. Here is an example

*-network
description: Wireless interface
product: BCM4306 802.11b/g Wireless LAN Controller
vendor: Broadcom Corporation
physical id: 0
bus info: pci@06:00.0
logical name: wlan0
version: 03
serial: 00:12:17:35:17:10
width: 32 bits
clock: 33MHz
capabilities: bus_master cap_list ethernet physical wireless
configuration: broadcast=yes driver=ndiswrapper+lsbcmnds driverversion=1.48rc1+Cisco-Linksys ,LLC.,02/1 ip=192.168.1.101 latency=64 multicast=yes wireless=IEEE 802.11g
resources: iomemory:3c000000-3c001fff irq:11

In the example above the interface name is wlan0. I will refer to the interface name throughout the rest of this guide as [interface].

For people first setting up their connection, please note that the above also lists the driver used for the network card. In the example above, the driver used is ndiswrapper. If your network device comes back UNCLAIMED or there is no driver listed, then you have not correctly installed the driver for your device. You must review the procedures for installation of your wireless driver.

For those wanting to use static IP addresses, please see section at bottom of guide regarding configuration for static IP addresses

Unencrypted Connection

All commands typed at the command line:

sudo ifconfig [interface] down
sudo dhclient -r [interface]
sudo ifconfig [interface] up
sudo iwconfig [interface] essid "ESSID_IN_QUOTES"
sudo iwconfig [interface] mode Managed
sudo dhclient [interface]

WEP Connection

You must have either your 64bit or 128 bit HEX Key or the ASCII Equivalent of your HEX Key.

sudo ifconfig [interface] down
sudo dhclient -r [interface]
sudo ifconfig [interface] up
sudo iwconfig [interface] essid "ESSID_IN_QUOTES"
sudo iwconfig [interface] key HEX_KEY <<<-------- If using ASCII Equivalent, this is s:ASCII_KEY (please make note of the prefix s:) ****Additional Comand that may be needed -- sudo iwconfig [interface] key open <<<----See note below sudo iwconfig [interface] mode Managed sudo dhclient [interface] ***The security mode may be open or restricted, and its meaning depends on the card used. With most cards, in open mode no authentication is used and the card may also accept non-encrypted sessions, whereas in restricted mode only encrypted sessions are accepted and the card will use authentication if available. WEP Key and special characters

If your WEP key has some special characters in it. You might receive the error message

$ sudo iwconfig eth0 key s:KG"hSRaS{G!#[
sudo iwconfig eth0 key s:KG"hSRaS{Gsudo iwconfig eth0 key s:KG"hSRaS{G[

.....

$sudo dhclient eth0
Sending on Socket/fallback
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 4
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 10
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 14
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 3
No DHCPOFFERS received.
No working leases in persistent database -- sleeping.

You need to escape the special characters with a \ and it works

$sudo iwconfig eth0 key s:KG\"hSRaS\{G\!\#\[

WPA Connection -- WPA-PSK or WPA2-PSK

For uses of Ra-based chipsets: rt61, rt73, rt2500 please skip directly to the WPA Section entitled WPA with Ra based chipsets

Requirements: In most cases the wpa_supplicant package is required in order to connect via WPA. If you have a working ethernet or unencrypted/WEP wireless connection, this package may be installed via:

sudo aptitude install wpasupplicant

If only wireless is available, I would recommend that an unencrypted connection first by established and tested first before directly proceeding to make a WPA connection. WPA adds another layer of complexity.

Creation of /etc/wpa_supplicant.conf file

At command line:

gksu gedit /etc/wpa_supplicant.confInside the file add the following for WPA(1):

ap_scan=1
ctrl_interface=/var/run/wpa_supplicant

network={
ssid="ESSID_IN_QUOTES"
scan_ssid=0
proto=WPA
key_mgmt=WPA-PSK
psk="ASCII PSK Password in Quotes"
pairwise=TKIP
group=TKIP
}

For WPA(2)

ctrl_interface=/var/run/wpa_supplicant

network={
ssid="ESSID_IN_QUOTES"
psk="ASCII PSK Password in Quotes"
key_mgmt=WPA-PSK
proto=RSN
pairwise=CCMP
}

***Word of caution --- In some cases I have found WPA(2) to have different settings than the above. Some Broadcom cards use the pairwise/group TKIP cipher for WPA2 rather than CCMP. I would suggest all initially use WPA(1) and then later convert to WPA2 since some variations to the above may be needed

Connect via command line

sudo ifconfig [interface] down
sudo dhclient -r [interface]
sudo wpa_supplicant -w -D[****see footer below***] -i[interface] -c/etc/wpa_supplicant.conf -dd
sudo ifconfig [interface] up
sudo iwconfig [interface] mode Managed
sudo dhclient [interface]

***footer
The value listed here is dependent on the driver you have installed. Typing man wpa_supplicant at command line will give you the full gamut of choices however a quick reference
ndiswrapper=wext (use wext and not ndiswrapper despite what documentation might suggest)
ath_pci = madwifi
ipw2100/2200=ipw

WPA with Ra Based Chipsets

Ra cards do not require the wpa_supplicant package to use WPA. Here is how to connect from the command line with these cards

WPA(1)

sudo ifconfig [interface] down
sudo dhclient -r [interface]
sudo ifconfig [interface] up
sudo iwconfig [inteface] essid "ESSID_IN_QUOTES"
sudo iwpriv [interface] set AuthMode=WPAPSK
sudo iwpriv [interface] set EncrypType=TKIP
sudo iwpriv [interface] set WPAPSK="YOUR_WPA_PSK_KEY"
sudo dhclient [interface]

A successful connection in all cases will results in this

user@computer:~$ sudo dhclient wlan0
There is already a pid file /var/run/dhclient.pid with pid 134993416
Internet Systems Consortium DHCP Client V3.0.4
Copyright 2004-2006 Internet Systems Consortium.
All rights reserved.
For info, please visit http://www.isc.org/sw/dhcp/

Listening on LPF/wlan0/00:12:17:35:17:10
Sending on LPF/wlan0/00:12:17:35:17:10
Sending on Socket/fallback
DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 4
DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 7
DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 7
DHCPOFFER from 192.168.1.1
DHCPREQUEST on wlan0 to 255.255.255.255 port 67
DHCPACK from 192.168.1.1
bound to 192.168.1.101 --- renewal in 299133 seconds.

The computer in this example has received an IP address of 192.168.1.101

Users of RTL 8180, RTL8185, RTL 8187 using the built in native r8187 / r818x drivers

By default the r8187 and r818x drivers are blacklisted due to a know bug. These drivers are usuable however with a twist to the above methods

If you want to try using these drivers, please load the kernel modules:

sudo modprobe r818x
sudo modprobe r8187

These drivers require a bogus or extra letter be suffixed to the essid name in order for these drivers to work

For example if your are trying to connect to a router with essid=Router, at he command line you would type essid=Routerx. Notice the extra x or bogus character. I have provided an example using the unencrypted connection procedure below, however this extra character needs to be used if attempting to connect to all network types (unencrypted/ WEP / WPA)

sudo ifconfig [interface] down
sudo dhclient -r [interface]
sudo ifconfig [interface] up
sudo iwconfig [interface] essid "Routerx"
sudo iwconfig [interface] mode Managed
sudo dhclient [interface]

If these drivers work for you, and you would like these drivers to load automatically at startup for you, avoiding to have to type sudo modprobe everytime, please edit your blacklist file

gksu gedit /etc/modprobe.d/blacklist

And comment out (or prefix the following lines with a # sign). You want the following lines to appear as below:

#blacklist r8187
#blacklist r818x

Static IP Addresses

Im going to give an example of how to configure your interface using a static IP address using an unencrypted wireless connection. The two lines highlighted below however can be used with WEP and WPA connections. Values in italics must be customized to meet your particular situation

sudo ifconfig [interface] down
sudo dhclient -r [interface]
sudo ifconfig [interface] 192.168.1.100 netmask 255.255.255.0 up
sudo route add default gw 192.168.1.1
sudo iwconfig [interface] essid "ESSID_IN_QUOTES"
sudo iwconfig [interface] mode Managed
sudo dhclient [interface]

If when using static IP addresses you are getting a problem with name resolution, you will have to specifiy specific dns (domain name servers) in order to translate URLs to IP addresses. Unfortunately there is not an easy way to configure this from the command line. This requires that you edit the /etc/resolv.conf file and manually enter the domain name server(s) you want to use. In many cases users can specifiy their router, their internet service providers dns servers, or use opendns (or use all three). Please note that changes made to the /etc/resolv.conf file will not be retained between reboots. To make the nameservers permanent, the /etc/dhcp3/dhclient.conf file needs to be edited

sudo gedit /etc/resolv.confand add the nameservers you want to use, one to a line, in the following format.

nameserver [nameserver]

You can add as many as you want but most isps normally provide two (primary and secondary).

Useful Wireless connection Commands

ifconfig -- lists IP address (similar to ipconfig in Windows)

iwlist scan -- shows wireless networks that are available in the area along with basic encryption information

lshw -C network -- Shows interface and driver associated with each networking device

lspci -nn -- Shows hardware connected to the pci bus

lsusb -- Shows USB connected hardware

lshw -C usb -- Additional info on USB related hardware (good for USB dongles)

cat /etc/modprobe.d/blacklist -- List modules that will not be loaded by the Operating System at boot time

lsmod -- lists currently loaded kernel modules. (Example usage -- lsmod | grep ndiswrapper)

route -n -- Lists kernel IP routing table --- Good for troubleshooting problems with the gateway (netstat -rn = equivalent command)

sudo route add default gw 192.168.1.1 -- Example of how to set the default gateway to 192.168.1.1

sudo route del default gw 192.168.1.1 -- Example of how to delete the default gateway setting

sudo modprobe ***** -- Loads the kernel module **** . (Example usage -- sudo modprobe ndiswrapper, sudo modprobe r818x, sudo modprobe ath_pci)

sudo modprobe -r **** -- Unloades the kernel module ****. (Example usage -- sudo modprobe -r ndiswrapper)

sudo ifup/ifdown -- Brings up/down the interface and clears the routing table for the specified interface

sudo ifconfig up/down -- Brings up/down the interface for the specified interface

sudo dhclient -- Request IP address from DNS server for specified interface

sudo dhclient -r -- Release IP address associated with specified interface

sudo iptables -L -- Lists firewall rules

dmesg | more -- Lists boot log --- good for troubleshooting problems with modules/drivers not being loaded

uname -r -- Displays kernel version

/etc/iftab (Feisty and pre-releases (Edgy, etc)) -- /etc/udev/rules.d/70-persistent-net.rules (Gutsy) -- File which assigns logical names (eth0, wlan0, etc) to MAC addresses

cat /etc/resolv.conf -- Lists DNS servers associated with network connections (Network Manager)

/etc/dhcp3/dhclient.conf -- File which sets or modifies dns (domain name servers) settings

Credit goes kevdog

Sponsored Link

You may also like...

46 Responses

  1. Ashwin Shah says:

    If the machine does not connect wirelessly, you need to perform a network service restart and make sure that you are logged in via root

  2. 1nS3cur3-I7 says:

    Ashwin Shah …

    You may try doing that one time to configure from GUI, but always logging in as root is a security and a stability risk. It tends to slowly screw up xserver, and allows all kinds of other fun nasty things to happen. As a security consultant, I had to say that this is horrible advice without clarification.

  3. Kelso says:

    Thank you! This saved me so much time… also avoided looking like an idiot after reformatting the wifes computer to ubuntu 🙂

  4. William says:

    Thank you sooo much… this saved me!

  5. Chris Calle says:

    *FIX* For setting a STATIC IP:

    DO NOT include the ‘sudo dhclient [interface]’ command located at the end because it will automatically issue you an IP… Not the one you are trying to set. Hope this helps

  6. Chris Calle says:

    Assuming you drivers and hardware are working…

    –This should make life easier.
    –Type this:

    $sudo nano /usr/bin/staticweb.sh

    –ENTER LINES w/ appropriate info:

    sudo ifconfig [interface] down
    sudo dhclient -r [interface]
    sudo ifconfig [interface] [static IP] netmask 255.255.255.0 up
    sudo route add default gw 192.168.1.1
    sudo iwconfig [interface] essid “ESSID_IN_QUOTES”
    sudo iwconfig [interface] mode Managed
    sleep 10
    ping -c 3 google.com
    ifconfig [interface]

    –SAVE FILE and EXIT EDITOR
    –Make sure the file is in /usr/bin/

    $sudo chmod a+x /usr/bin/staticweb.sh

    $cd ~

    –LOCATE AND EDIT ALIAS FILE:

    $ls -a

    –EITHER ‘.bashrc’ or ‘.bash_aliases’ IS THE FOLDER

    $sudo nano .bashrc

    –LOOK FOR ALIASES: example: alias NAME=’command’

    –ADD YOUR ALIAS: alias staticweb=’staticweb.sh’

    –SAVE AND EXIT EDITOR

    $. .bashrc

    DONE!

    With all that you should be able to just type ‘staticweb’ (without the quotes) into the command line and it will trigger the static-ip shell script you just wrote and do all the work in one single command.

    The end of the script will ping google.com and display the status of your network just to make sure you are connected to the web and that you IP address is what it should be.

    If your network connection is local only, just change the ping command from ‘google.com’ to your gateway (192.168.1.1 in most cases)

  7. ihaq2 says:

    ok, i installed last version of ubuntu yesterday and wireless worked ok. today it doesn;t work at all – the system doesn’t find any connections and there are at least 10 around. when i type lshw -C network it returns PCI (sysfs) What should I do to wifi again?

  8. Jack says:

    I remove STA wireless driver, and i can connect internet. 🙂

  9. yogendra sharma says:

    hi ..i want to know how to create a pppoe wifi dail-up connection in ubutnu… my wifi network is running on redius server ..i can connect to server but can find or have a connection where enter my hotspot username and password…… so plz give me a valid solution for this problem….

  10. Paul says:

    This may seem like a stupid question, but where do you type the command? In other words, how do you reach the command screen? Just starting Ubuntu after Windows gave me the blue screen, so am not familiar with Linux. Thanks.

  11. DukeW says:

    Paul, no such thing as a dumb question. Assuming you’re using the latest shiny new interface, just mouse over the logo in the upper left, which brings up a search bar. Type in ‘terminal’ and you will get the window you seek. And don’t feel bad — I’ve been around Linux for more years than I care to admit, and I had to look that one up, too.

  12. Paul Masri says:

    Thanks for this. A little (but important) correction to the WPA connection via command line: the instruction

    sudo wpa_supplicant -w -D[****see footer below***] -i[interface] -c/etc/wpa_supplicant.conf -dd

    needs a capital -W not -w. i.e. it should be

    sudo wpa_supplicant -W -D[****see footer below***] -i[interface] -c/etc/wpa_supplicant.conf -dd

  13. Marc says:

    Unencrypted wireless now working
    I have been working on this for weeks, no help from Ubuntu wireless forum
    How do I get it to recognize other available networks?
    Thanks much

  14. Cheryl says:

    I decided to write after finding your site, because I am having difficulty establishing a connection with one of my laptops. which is partitioned. The side that runs Ubuntu 10.04 does not connect with the wireless router. The other side, running Windows XP, connects fine. Two laptops and two hard wired computers are working with good speeds. One of the hard wired computers is running Linux (10.04 Ubuntu) and works great.

    It was after switching my Internet Service Provider, that I noticed with this one laptop, the connection was not working. It still works on the Windows side and with Qwest, but I want to stop my second ISP.

    Nothing has changed on any of the settings on any computer, including the laptops. We ran an ethernet cable directly to the wireless router from the laptop with an immediate connection running the Linux side of that laptop. That tells me that the wireless router is functioning; well…the other laptops function also showing me that the router is not the issue.

    I started to look at your directions to identify some of the necessary things you mentioned: the interface and the driver. I realized I wanted to make sure I was on the right track. This stuff tends to be a bit over my head. That said, I think I could figure it out with a little guidance. Will following these instruction help fix my problem. If not, can you help me figure out what might be the problem. I am going to read your directions until then. This is a great site by the way. 🙂

  15. rigo says:

    a great post only is not troubleshooting but should be called “how to set up wireless network”

  16. Tu Van says:

    Also, you can get the terminal from holding Ctrl-Alt-T.

Leave a Reply

Your email address will not be published. Required fields are marked *