Hey all, I’ve been trying to track down why my wifi dongle doesn’t work reliably on boot and think I’ve narrowed it down to the drivers in the official Debian 3.8 kernel being old and buggy.
First, the hardware I’m using:
- Rev C BeagleBone Black, running the official Debian image from here: http://beagleboard.org/latest-images
(side question, is the 5-14-2014 image on that page really the most recent official Debian build?) - Wifi dongle is an Edimax 7811Un, which is a RTL8192CU chipset. Very popular and works perfectly with a Raspberry Pi.
- Yes I’m aware of the HDMI ground and power plane issue with wifi dongles, I have the wifi dongle attached to a small USB hub that moves it away from the BBB.
My problem is that the wifi connection never reliably starts on boot. I always have to log in and run ifdown wlan0 & ifup wlan0 to get it to connect. My /etc/network/interfaces is configured in the standard way to access my AP (exactly how I’ve configured Raspberry Pi’s which work fine), and for completeness the block of config looks like:
WiFi Example
auto wlan0
allow-hotplug wlan0
iface wlan0 inet dhcp
wpa-ssid “my AP name”
wpa-psk “my password”
I ran some experiments to reboot the BBB (just using the reboot command) multiple times and count how often the wifi connection would come up successfully on boot. The results were not good, here’s what I saw:
- With “auto wlan0” and “allow-hotplug wlan0” in /etc/network/interfaces 6 out of 13 attempts succeeded: success rate of 46%.
- With only “auto wlan0” in /etc/network/interfces 8 out of 13 attempts succeeded: success rate of 62%.
- With the dongle connected directly to the USB port (i.e. not through the hub) only 4 out of 13 attempts succeeded: success rate of 31%.
I did all I could to find any information from dmesg and syslog for the failed attempts, but there’s no info there. When the connection works on boot I see messages about the RTL8192CU module and then the wlan connection coming up. When the connection does not work I see the same messages about the RTL8192CU module but none of the wlan connection messages. There are no errors or failures at all in the log. It really feels like a timing or internal issue with the RTL module. If there is some other log I should be looking at please let me know and I will check it out.
For comparison I ran the same test with the same wifi adapter on a Raspberry Pi running the latest Raspbian OS image. It worked fine and brought the wifi connection up all 13 times, success rate of 100%.
At this point I was really confused why the BBB could not reliably bring up a wifi connection at boot. Looking a little closer the big obvious difference between the BBB and Pi is the kernel version. On the Pi it’s using kernel 3.15.3 whereas the BBB is running the 3.8 kernel. Looking at the RTL8192CU source on kernel.org I can’t find the 3.8 kernel source, but at least comparing the 3.10 kernel to mainline there are quite a few fixes in the more recent kernels but not in the older ones.
To really confirm it was the 3.8 kernel I used Robert Nelson’s upgrade script to take my BBB to the 3.15.10-bone7 kernel (script from here https://rcn-ee.net/deb/wheezy-armhf/v3.15.10-bone7/). After upgrading the kernel I ran the same reboot test and surprise, surprise the BBB brought up the wifi connection 13 out of 13 times, success rate of 100%.
So long story short it seems like at least for Realtek adapters the official Debian image’s 3.8 kernel has some serious issues. I’m curious is this a known issue or something being worked on right now?
I noticed on the BBB kernel github there was just recently a commit yesterday to add perhaps a backport of later RTL8192CU drivers to the 3.8 kernel (looking at https://github.com/beagleboard/linux/tree/3.8/drivers/net/wireless/rtl8192cu ). Is this true that later RTL wifi drivers are being ported back to the 3.8 kernel?
Finally, is there any suggestion for what folks who use the RTL8192CU or other RTL wifi adapters should do to use them right now on the BBB? Is the 3.15.10-bone7 kernel stable enough for normal use? (like using GPIO, loading and unloading device tree overlays, etc)
For better or worse the Realtek wifi adapters are quite common (folks like Adafruit only sell Realtek wifi adapters because they are known to work with the Pi) and many folks coming to the BBB from the Pi are likely trying to use them. I have a feeling many of the issues people have getting wifi to work with the BBB are related to problems with the 3.8 kernel driver.