March 31, 2014

To save some work, I started with RaspberryPi-Buildroot which already has everything needed to build for the Raspberry Pi. This has been my starting point for several projects. Definitely a job well done.

For a USB wireless adapter, I'm using this tiny little thing: Edimax EW-7811Un 150 Mbps Wireless 11n (paid link).

So far, I have not had any power issues running completely off USB power without a hub and the connection seems rather stable. Be careful with other wireless adapters that require more power than the Raspberry itself can supply. Remember, the Raspberry uses power as a USB device and then reuses that power to be a USB host. By definition, it can't supply all the power necessary to be a solid USB host.

Assuming you already have basic networking working on the Raspberry, there are a couple more things you need to enable. Enable wireless tools and wpa_supplicant in buildroot.

Also, you need to enable the necessary wireless support and drivers in the kernel. Beyond the basics, you need CONFIG_RTL8192CU=m for the wireless adapter mentioned.

Here's my basic kernel wireless network configuration.

Configure the wireless adapter driver.

Once you have it configured, dmesg should look like this:

$ dmesg ... [ 3.062508] usb 1-1.2: new high-speed USB device number 4 using dwc_otg [ 3.174684] usb 1-1.2: New USB device found, idVendor=7392, idProduct=7811 [ 3.184709] usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [ 3.195244] usb 1-1.2: Product: 802.11n WLAN Adapter [ 3.203343] usb 1-1.2: Manufacturer: Realtek ... [ 8.510592] usbcore: registered new interface driver rtl8192cu ...

$ lsmod Module Size Used by ... 8192cu 452008 0

Now, for the necessary configuration to setup the wireless interface.

/etc/network/interfaces

... auto wlan0 iface wlan0 inet dhcp wireless-essid wrt2 pre-up wpa_supplicant -B w -D wext -i wlan0 -c /etc/wpa_supplicant.conf -dd post-down killall -q wpa_supplicant ...

Once you know your ssid and password, generate the psk used in the following file by running:

$ wpa_passphrase < ssid > [ passphrase ]

/etc/wpa_supplicant.conf

ctrl_interface=/var/run/wpa_supplicant ap_scan=1 network={ ssid="<ssid>" scan_ssid=1 proto=WPA RSN key_mgmt=WPA-PSK pairwise=CCMP TKIP group=CCMP TKIP psk=<result of wpa_passphrase> }

Now, you can simply ifup to bring up the interface as necessary.

$ ifup wlan0

A quick iwconfig reveals some of the properties.

$ iwconfig lo no wireless extensions. wlan0 IEEE 802.11bg ESSID:"<ssid>" Nickname:"<WIFI@REALTEK>" Mode:Managed Frequency:2.417 GHz Access Point: 00:XX:XX:XX:XX:XX Bit Rate:54 Mb/s Sensitivity:0/0 Retry:off RTS thr:off Fragment thr:off Power Management:off Link Quality=100/100 Signal level=100/100 Noise level=0/100 Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0 Tx excessive retries:0 Invalid misc:0 Missed beacon:0 eth0 no wireless extensions.

This particular wireless adapter has a blue LED (hidden) that you can see flashing when it is in operation.

Here is the Raspberry Pi in full wireless action mounted on a plate discussed in a previous post. Note that I'm using a transparent looking USB extension cable for the wireless adapter for easier access.