This little guide should help with configuring a USB WiFi adapter in Linux - this was in Ubuntu 12.04 but should work for later releases and other Debian based Unix versions. I recently configured my Raspberry Pi to use a wiki dongle but this guide didn't work for some reason. This guide still works though and is much preferable since it is entirely done on the command line. The Raspberry Pi guide (which I’ll add at a later date) makes use of some GUI elements so not great for a headless server use case.
I use the Edimax EW7811-UN which is very cheap and complies with normal the 802.11b/g/n IEEE standards. The device has a Realtek RTL8188CUS based chipset which has support for Windows, Mac & Linux. It also works great in the Raspberry Pi.
When the device is inserted to a USB port on the machine, the rtl8192cu module should be loaded automatically.
Load wifi module driver
First, check if the driver is automatically loaded on your machine with
If the result shows that the "8192cu" driver module is loaded, you have nothing left to do to load the module. If the result is nil, continue.
If it shows some other "...8192..." driver, uninstall it with rmmod -r .
Find the latest linux driver download address from Edimax:
Go to the Edimax website
-> Downloads
-> Communications Network ICs
-> Wireless LAN ICs
-> WLAN NIC
-> IEEE 802.11b/g/n Single Chip
-> Software
-> "Software: Drivers and Utilities"
-> "Step 1. Select one or more models": check the box by RTL8192CU) and use in the correct line below:
Insert the Edimax device into a USB port and check to see if the module has been loaded correctly automatically:
Configure wifi connection
Install dependencies and kill network management utilities for configuration:
Perform the SSID & password config
If you get your IP address automatically assigned by your router (most users) by DHCP just use the following (Note that you may have configured your router to assign a static IP to your server but from your server’s perspective this is still an auto assignation from your router so do this):
You should now be able to ping your router by IP:
Now add the default gateway using the IP address of your router:
You should be able to ping the net at large now (Google’s IP = 8.8.8.8):
Add DNS. This one is Google’s free DNS service which is pretty fast and reliable so a great choice - however there are privacy implications which we'll not get into here). You could also use your ISP DNS servers which you should have been given when you joined them or which will be the ones defined in your ISP provided modem/router.
You should be done now, test by pinging Google:
Make persistent through a reboot
This will not last through a reboot, to make this persistent we need to make a little script:
You should now add to crontab or rc.local to run at startup. Crontab is a task scheduling tool in linux, whereas rc.local is a script which runs at boot so you can add things to it to make them run at startup.
The easiest way I found to add to crontab is through Webmin (see this post for Webmin installation guide).
To manually add to crontab you can do this:
Or to add to rc.local:
Useful sources
http://www.cianmcgovern.com/getting-the-edimax-ew-7811un-working-on-linux/
http://askubuntu.com/questions/8568/can-ubuntu-server-connect-to-a-wpa2-encrypted-wireless-network/73025#73025
I use the Edimax EW7811-UN which is very cheap and complies with normal the 802.11b/g/n IEEE standards. The device has a Realtek RTL8188CUS based chipset which has support for Windows, Mac & Linux. It also works great in the Raspberry Pi.
When the device is inserted to a USB port on the machine, the rtl8192cu module should be loaded automatically.
Load wifi module driver
First, check if the driver is automatically loaded on your machine with
lsmod | grep 8192.
If the result shows that the "8192cu" driver module is loaded, you have nothing left to do to load the module. If the result is nil, continue.
If it shows some other "...8192..." driver, uninstall it with rmmod -r .
Find the latest linux driver download address from Edimax:
Go to the Edimax website
-> Downloads
-> Communications Network ICs
-> Wireless LAN ICs
-> WLAN NIC
-> IEEE 802.11b/g/n Single Chip
-> Software
-> "Software: Drivers and Utilities"
-> "Step 1. Select one or more models": check the box by RTL8192CU) and use in the correct line below:
mkdir -p /home/USERNAME/wifidriver cd -p /home/USERNAME/wifidriver wget ftp://WebUser:wK9xBuD5@58.211.24.153/cn/wlan/RTL8192xC_USB_linux_v3.4.4_4749.20121105.zip unzip RTL8192xC_USB_linux_v3.4.4_4749.20121105.zip bash install.sh
Insert the Edimax device into a USB port and check to see if the module has been loaded correctly automatically:
lsmod | grep 8192cuIf nothing is returned, the module can be loaded manually:
modprobe 8192cu
Configure wifi connection
Install dependencies and kill network management utilities for configuration:
apt-get -y install wpa_supplicant psmisc sudo stop network-manager sudo killall wpa_supplicant sudo killall nm-applet
Perform the SSID & password config
wpa_passphrase "YOUR_ESSID" | sudo tee /etc/wpa_supplicant.conf-> then type your password
wpa_supplicant –d wext -B -c /etc/wpa_supplicant.conf -i wlan0
If you get your IP address automatically assigned by your router (most users) by DHCP just use the following (Note that you may have configured your router to assign a static IP to your server but from your server’s perspective this is still an auto assignation from your router so do this):
dhclient wlan0If you want to configure a static IP then use:
ifconfig wlan0 192.168.1.12
You should now be able to ping your router by IP:
ping 192.168.0.2
Now add the default gateway using the IP address of your router:
route add default gw 192.168.0.2
You should be able to ping the net at large now (Google’s IP = 8.8.8.8):
ping 8.8.8.8
Add DNS. This one is Google’s free DNS service which is pretty fast and reliable so a great choice - however there are privacy implications which we'll not get into here). You could also use your ISP DNS servers which you should have been given when you joined them or which will be the ones defined in your ISP provided modem/router.
echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf
You should be done now, test by pinging Google:
ping google.com
Make persistent through a reboot
This will not last through a reboot, to make this persistent we need to make a little script:
mkdir –p /usr/bin/wifi_connect nano /usr/bin/wifi_connect/scripts/wifi_connect.shAdd this:
#!/bin/bash wpa_supplicant -d wext -B -c /etc/wpa_supplicant.conf -i wlan0 dhclient wlan0 route add default gw 192.168.0.2 echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf chmod 755 /usr/bin/wifi_connect/wifi_connect.sh
You should now add to crontab or rc.local to run at startup. Crontab is a task scheduling tool in linux, whereas rc.local is a script which runs at boot so you can add things to it to make them run at startup.
The easiest way I found to add to crontab is through Webmin (see this post for Webmin installation guide).
To manually add to crontab you can do this:
sudo echo '@reboot /usr/bin /wifi_connect/wifi_connect.sh xbindkeys' >> /etc/crontab
Or to add to rc.local:
cp /etc/init.d/rc.local /etc/init.d/rc.local.old nano /etc/init.d/rc.localAdd this above ‘exit 0’:
sh /usr/bin/wifi_connect/wifi_connect.sh
Useful sources
http://www.cianmcgovern.com/getting-the-edimax-ew-7811un-working-on-linux/
http://askubuntu.com/questions/8568/can-ubuntu-server-connect-to-a-wpa2-encrypted-wireless-network/73025#73025
No comments:
Post a Comment