I have an ASUS eeePC 1000, running Ubuntu 10.10. Wireless worked flawlessly at home, which is where I use it 99% of the time. On our most recent trip, however, it wasn’t working. It couldn’t connect to a WPA-secured network. Here are the relevant error messages:
NetworkManager[770]: <warn> Activation (wlan0/wireless): association took too long.
NetworkManager[770]: <warn> (wlan0): link timed out.
NetworkManager[770]: <warn> Activation (wlan0) failed for access point (linksys)
NetworkManager[770]: <warn> Activation (wlan0) failed.
NetworkManager[770]: <info> (wlan0): deactivating device (reason: 0).
After a little googling on my phone, I found out that others had this problem with the rt2860sta wireless driver. Fortunately, there is a solution, which involved downloading the source code for the latest driver, modifying it a bit and rebuilding the driver. Here are the instructions:
Step 1: Download the driver
Download the latest rt2860sta driver.
Step 2: Rename and extract the downloaded file
Mine was named download.php, but it’s really a tar file:
Liquid error: undefined method `join’ for #<String:0xb6f8eb3c>
Step 3: Apply patch
Step 4: Backup old driver
Liquid error: undefined method `join’ for #<String:0xb6f8e63c>
Step 5: Install and activate new driver
Liquid error: undefined method `join’ for #<String:0xb6f8e358>
Step 6: Fix problems with hibernation
A separate problem is that wireless has been flaky when the computer wakes from hibernation, but it’s also fixable.
Add the following lines to /etc/modprobe.d/blacklist.conf:
blacklist rt2800pci
blacklist rt2800lib
blacklist rt2x00usb
blacklist rt2x00pci
blacklist rt2x00lib
Create a new file called /etc/pm/config.d/unload_wireless with the following line:
SUSPEND_MODULES="rt2860sta"
Reboot and you should have WPA-compatible, hibernatable wireless.