I mentioned my annoyance that wi-fi with WPA encryption did not work on the Asus 901 Eee PC with Linux which I am reviewing. I later found that even a WEP connection, while it worked a bit, tended to drop out after few minutes. Worse still, the Asus repositories are messed up so getting updates is tricky.
I’ve managed to fix it. For the record, here’s what I did; though I can’t promise it will work for you; try it at your own risk. I should think there will be an easier way to install an updated driver soon.
One of the irritations about the repository problem is that attempted updates fill up your /dev/sda1. I wanted as much space as possible (without removing the recovery partition) so I reset the system with F9 on boot. Then I went into /etc/apt/sources.list and removed the default repositories, replacing them with these two:
deb http://xnv4.xandros.com/xs2.0/upkg-srv2 etch main contrib non-free
deb http://download.tuxfamily.org/eeepcrepos/ p701 main
(This is probably not a good arrangement long-term; but having the Asus repositories enabled right now makes it hard to install anything).
Then I did:
apt-get install build-essential
I also installed ksmserver and kicker to get access to the full desktop; but this wasn’t needed to get wi-fi working.
Next, I downloaded the latest driver source for the 901’s Ralink wi-fi card:
http://www.ralinktech.com.tw/data/drivers/2008_0708_RT2860_Linux_STA_v220.127.116.11.tar.bz2 (Update: don’t use this code – see Update 3 below).
Extracted it; then edited /os/linux/config.mk and changed:
HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=y – but see update 2 and update 3 below for the problems this caused.
I also removed –DDBG from WFLAGS
WFLAGS += –DCONFIG_STA_SUPPORT
In order to compile you need the kernel source. I adapted the instructions here. In essence, download the source from http://dlsvr01.asus.com/pub/ASUS/EeePC/701/Linux_Kernel_071127.rar, extract, install the deb, unpack the source in /usr/src, delete the .bz2 to save space, build the kernel with:
(don’t actually install it), then create the following symbolic link:
ln -s /usr/src/linux-source-18.104.22.168-eeepc /lib/modules/22.214.171.124-eeepc/build
Now I was able to compile and install the ralink driver by switching to the RT2860 directory and typing:
Wi-fi now worked with WPA; at least, it did on my second attempt after disabling native WPA supplicant support. I’ve also found it perfectly stable so far – much better.
I’m happy now, but… what is Asus thinking?
I doubt the Eee brand would have ever taken off, except that the first 7xx releases made excellent use of Linux and open source applications to win people over; you did not even need to know that it was Linux.
Now we get this; the support for the 901 is dire; updates don’t work, the wi-fi doesn’t work properly, and the only fix I’ve found is a hack. Wi-fi is critical for a gadget like this, which is not much use without an Internet connection.
Together with short supply of the Linux version, this does suggest that Asus is keen to favour the Windows XP variant.
Update: I’ve made the binary (rt2860sta.ko) available for download here. Download includes RT2860STA.dat which goes in /etc/Wireless/RT2860STA. I guess we need an install script; I’ll have a go when I get a moment.
Update 2: Unfortunately I’m not quite there yet. If I compile with HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=y then WEP works but WPA does not. If I compile with HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=n then WPA works but (I now discover) WEP does not. Weird. I’m going to seek advice. If anyone wants the binary that works great with WEP but not WPA, let me know.
Update 3: Thanks to Ralink tech support I now have a fully working driver. I’ve updated the download above. The new code defines EEEPC_SPECIAL_SETTING and has some edits in common/mlme.c. It now works OK with HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=y. Interesting point: the code is dated 15th July; which suggests that the problem was both known and fixed 2 and half weeks ago; it’s a shame nobody shared this with the community.
Update 4: I suggest you delete the old copy of rt2860sta.ko in /lib/modules/126.96.36.199-eeepc/rt2860 (if it exists).
PS: I’ve posted instructions for the binary install, with download links, here.