Feb 28, 2014 - Pandaboard Wifi on Ubuntu 13.04
I’ve spent about a week wrestling with the wireless drivers on my pandaboard. Some part of the latest update to either the kernel or the firmware for the wl1271 picked up a bug in the latest update.
After much searching and playing around with kernels and firmware, I found that the most recent build of the 3.2.0 kernel and firmware from Precise had WiFi support that actually worked.
I downloaded the following kernel and firmware debs from ports.ubuntu.com:
- linux-firmware_1.79.11
- linux-headers-3.2.0-1444
- linux-headers-3.2.0-1444-omap4
- linux-image-3.2.0-1444-omap4
I then installed them by hand with dpkg -i *.deb
Since the 3.2.0 kernel is an older version than what normally ships with Ubuntu Raring, I had to do some convincing to get the Ubuntu tools to installer the earlier kernel. I moved the newer kernels out of /boot and then invoked flash-kernel to install the desired kernel into the boot partition:
cd /boot
sudo mkdir old
sudo mv -i vmlinux-3.5* old/
sudo flash-kernel 3.2.0-1444-omap4
Notes and deviations
Various notes and brain scribblings that may be useful:
- If you have other versions of the kernel installed, you’ll have to move those out of /boot as well.
- The flash-kernel tool sorts kernel versions lexically, so it may sort things in an order you aren’t expecting. If it complains that it’s ignoring the version you gave it because there’s a newer version of the kernel, move that version out of /boot and try again
- On my board, /dev/mmcblk0p1 is used as the boot partition. If you mount it, you can modify the bootloader parameters in preEnv.txt and the kernel parameters in uEnv.txt
- /dev/mmcblk0p1 is a vfat partition, so if you get into really serious trouble you can mount it on pretty much anything and load an older kernel or change the boot options
- The bootloader (u-boot) presents a simple shell on the serial port during the first 3 seconds of boot. If you enter the bootloader, you can select the backup environment and kernel by using
setenv bootenv uEnv.txt.bak. This should work with any text file in the boot partition. Then runbootto load and boot the kernel. - For anyone still armel, there are armel versions of the 3.2.0 kernel that should work as well. DO NOT use these if you intent to use the hard-float EABI.