USB Wifi dongle on Beaglebone Black & Ubuntu 14.04 (RTL8192cu driver)

After an extremely long hack session I finally got RTL8192cu to run on Beaglebone Black A5C/A6 running Ubuntu 14.04. It was painful. But here is a log of my experience with it.

Step 1. Installing Ubuntu 14.04 (flashing eMMC)

This is the process. Download the image to your sd card and then burn it to the eMMC. Warning: You will need to connect to the internet first using eth over USB or the ethernet port.

Step 2. Update & Upgrade

$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install build-essential git vim linux-headers-generic linux-headers-`uname -r`

Step 3. Build the realtek 8192cu kernel module

Clone the repo here.

$ git clone https://github.com/cmicali/rtl8192cu_beaglebone.git
$ cd rtl8192cu_beaglebone
$ make CROSS_COMPILE=""

Step 4. Put the module into the appropriate directory

This will build the module. Now you simply take it and put it in /lib/modules

$ sudo mv 8192cu.ko /lib/modules/`uname -r`
$ sudo depmod -a
$ sudo sudo vim /etc/modules

Add 8192cu to the list and the file is probably empty. Save the file.

# /etc/modules: kernel modules to load at boot time.
# 
# This file contains the names of kernel modules that should be loaded 
# at boot time, one per line. Lines beginning with "#" are ignored. 
# Parameters can be specified after the module name. 

8192cu

Now, it's time to blacklist the existing rtl8192cu module. It may not exist on 14.04 but there's no reason why you should take that chance

$ cd /etc/modprobe.d
$ sudo echo "rtl8192cu" > /etc/wifi_blacklist.conf
$ sudo echo "rtl8192c" >> /etc/wifi_blacklist.conf
$ sudo echo "rtlwifi" >> /etc/wifi_blacklist.conf

Now that's done. You are good to go. Simply reboot. Once you log in again. You can check that the module is loaded by doing

$ lsmod

Step 5. Configure the interface

iwconfig

will show you that wlan0 is now a registered interface. But it's not configured
$ vim /etc/network/interfaces Add this to the interfaces file

auto wlan0
iface wlan0 inet dhcp
    wpa-ssid "essid"
    wpa-psk  "password"

That's it. Now simply bring up the interface using ifup

$ sudo ifup wlan0
$ iwconfig

Boom now you'll see it trying to connect. and the second command shows you the status of Wireless interface.