The wireless driver that comes with the Genesi EfikaMX by default is from the staging directory of the kernel sources, and as such, it isn't getting much work. Mainline uses the rt2x00 driver, which tends to work pretty well in testing. Personally I've been using the compat-wireless drivers for a while now, and though occasionally there are issues, for the most part, it works fine. Here is a little mini-guide to building and using it on your system.
First you will need a copy of the kernel sources. There are 2 ways of getting it, either via a tarball from github, or by doing a git checkout. Since we're just going to get rid of it afterwards, we're going to use the tarball method.
Visit
https://github.com/genesi/linux-legacy and click on the button that says ZIP. This will give us a zip file with the kernel sources in it.
Once this finishes downloading, extract it somewhere on your system. (I chose to put it in ~/sandbox (my playground))
Code:
cd ~/sandbox/
unzip /home/steev/Downloads/genesi-linux-legacy-8681692.zip
Please note that the 8681692 will change based on whatever the committish is when you download the zip file.
Next I make a symlink for the directory since most things expect the kernel sources to be located at /usr/src/linux. We also need a build and source directory in /lib/modules/2.6.31.14.26-efikamx so do that now as well.
Code:
sudo ln -s /home/steev/sandbox/genesi-linux-legacy-8681692 /usr/src/linux
sudo ln -s /home/steev/sandbox/genesi-linux-legacy-8681692 /lib/modules/2.6.31.14.26-efikamx/build
sudo ln -s /home/steev/sandbox/genesi-linux-legacy-8681692 /lib/modules/2.6.31.14.26-efikamx/source
We now need to download a copy of compat-wireless. Since I prefer to use a dated tarball, I stay away from the bleeding edge link (also, the bleeding edge tarball requires you to visit the homepage to download it)
Code:
We need to set up the kernel to prepare it for modules to be built.
Code:
cd genesi-linux-legacy-8681692
make mx51_efikamx_defconfig
Edit the Makefile and change the EXTRAVERSION from 14.27 to 14.26
And then run
Code:
make modules_prepare
Now we go into the compat-wireless sources to build it.
Code:
cd ..
cd compat-wireless-2011-11-03
scripts/driver-select rt2x00
make
sudo make install
Note:we don't want to copy the files manually because there are a lot of them, as well as some other portions that the make install will copy over, for udev support)
In order to get the kernel to not load multiple drivers, we will blacklist that pesky rt2870sta driver so that we get the new rt2x00 driver instead.
edit the file /etc/modprobe.d/blacklist.conf and at the very bottom of the file, add in
Code:
blacklist rt2870sta
Save the file, and exit your editor.
Now simply reboot your system, and you're using the compat-wireless drivers, which includes the mac80211 based driver instead of the rt2870sta driver that comes from Ralink.
Things to note: There is no symversions, so there will be some complaints, but we don't enable module versioning in our kernel so this doesn't cause any issue. You can actually build the kernel, on the system this takes roughly 177 minutes, due to the amount of modules that are built to support random hardware out there, so the trade off to me is worth it.