So, there has been a new kernel release from Genesi - 2.6.31.12-ER1-efikamx.
On Gentoo, you download the 51mb 2.6.31-ER1-efikamx lzmaball, and then the patch.
extract both - since on a Gentoo machine, it is fairly standard to have the kernel in /usr/src/linux - thats where I extracted the files. Then I moved the patches into the linux-2.6.31.12-ER1-efikamx directory (renamed from 2.6.31-ER1-efikamx) and then created a symlink.
Make the kernel as per norm (by default when you apply the patches, it copies the Genesi config file to .config) editing the config whichever way you prefer to add/remove options, and build it.
Don't forget to mount /dev/sda1 before you make modules_install!
Now we download the driver from Ralink for the RT3070 - 2009_1110_RT3070_Linux_STA_v2.1.2.0.tar.bz2 (sorry, no direct link as they do request you accept the license) - extract it wherever.
Go into the 2009_1110_RT3070_Linux_STA_v2.1.2.0 directory, and then edit os/linux/config.mk
Change HAS_WPA_SUPPLICANT=n to HAS_WPA_SUPPLICANT=y
change HAS_NATIVE_WPA_SUPPLICANT=n to HAS_NATIVE_WPA_SUPPLICANT=y
make
Wait a bit - then delete /tftpboot (Ralink's makefile copies the driver to there)
Then copy the module somewhere in /lib/modules/2.6.31.12-ER1-efikamx (I like to use /extras or /networking) then blacklist all the in-kernel wifi stuff in
/etc/modprobe.d/blacklist.conf
blacklist rt3070sta
blacklist rt2870sta
blacklist rt2800usb
blacklist rt2x00usb
blacklist rt2x00lib
blacklist mac80211
blacklist cfg80211
and then in /etc/modules.autoload.d
add "rt3070sta" (as I'm writing this, yes I see that I'm blacklisting it and then explicitly autoloading it - will fix later)
Don't forget to run depmod -a
Reboot!
Now you need to edit your RT3070STA.dat file - this will reside in /etc/Wireless/RT3070STA/
Mine looks like this:
#The word of "Default" must not be removed
Default
CountryRegion=5
CountryRegionABand=7
CountryCode=
ChannelGeography=1
SSID=<YOURSSIDHERE>
NetworkType=Infra
WirelessMode=9
Channel=6
BeaconPeriod=100
TxPower=100
BGProtection=0
TxPreamble=0
RTSThreshold=2347
FragThreshold=2346
TxBurst=1
PktAggregate=0
WmmCapable=1
AckPolicy=0;0;0;0
AuthMode=WPAPSK
EncrypType=TKIP
WPAPSK=<YOURPASSWORDHERE>
DefaultKeyID=1
Key1Type=0
Key1Str=
Key2Type=0
Key2Str=
Key3Type=0
Key3Str=
Key4Type=0
Key4Str=
PSMode=CAM
AutoRoaming=0
RoamThreshold=70
APSDCapable=0
APSDAC=0;0;0;0
HT_RDG=1
HT_EXTCHA=0
HT_OpMode=1
HT_MpduDensity=4
HT_BW=1
HT_BADecline=0
HT_AutoBA=1
HT_BADecline=0
HT_AMSDU=0
HT_BAWinSize=64
HT_GI=1
HT_MCS=33
HT_MIMOPSMode=3
HT_DisallowTKIP=1
EthConvertMode=
EthCloneMac=
IEEE80211H=0
TGnWifiTest=0
WirelessEvent=0
MeshId=MESH
MeshAutoLink=1
MeshAuthMode=OPEN
MeshEncrypType=NONE
MeshWPAKEY=
MeshDefaultkey=1
MeshWEPKEY=
CarrierDetect=0
AntDiversity=0
BeaconLostTime=4
FtSupport=1
Wapiifname=ra0
WapiPsk=
WapiPskType=
WapiUserCertPath=
WapiAsCertPath=
When playing with wpa_supplicant, you want to have it run non-daemonized while trying to debug it - by default, on the Efika MX you will run it with the following command:
wpa_supplicant -Dwext -Ira0 -c/etc/wpa_supplicant/wpa_supplicant.conf
(Note: the location of wpa_supplicant.conf may be different if you aren't on Gentoo)
If you are on Gentoo and using the stable "arm" keyword, then you may want to go into /etc/conf.d/net and set
modules_ra0=( "!iwconfig" )
So that it will use wpa_supplicant rather than trying to set everything up manually with iwconfig.