Getting RT3370 USB Wifi adapter to work in Linux

They look like this one on the picture, nice and small. Available form Ebay. USB id is 0x148F,0×3370. It is not really supported by any of the drivers included with the latest kernel (2.6.34) and the official Ralink drivers available from their site do not support it either. This specific device id is not even in the source, and I did not manage to get it fully working after adding the id either.
Thankfully there are Windows drivers for this chipset and there is also ndiswrapper which allows Windows network drivers to be used in other operating systems, like Linux.
Sadly the windows drivers are distributed as one single Installshield .exe installer. I have no Windows machines in my home and none of the tools I had available (cabextract, etc) could not deal with this file. Finally managed to get the drivers (2780.sys and 2780.inf for WinXP) out of the installer with a help of a friend, who had a Windows machine.
First attempt to load this driver with ndiswrapper ended with the following error message in syslog:
ndiswrapper (import:242): unknown symbol: ntoskrnl.exe:'MmGetSystemRoutineAddress'
Then, I thankfully found this piece of information from Dirk Schwendemann, which I will reproduce here:
the ralink driver 1.4.0.0 (09/25/2008) for a rt2870 usb stick complains about a missing symbol MmGetSystemRoutineAddress.
I’ve just added an empty stub:
wstdcall void* WIN_FUNC(MmGetSystemRoutineAddress,1)
(struct unicode_string *name)
{
struct ansi_string ansi;
if (RtlUnicodeStringToAnsiString(&ansi, name, TRUE) == STATUS_SUCCESS) {
WARNING("MmGetSystemRoutineAddress: %s", ansi.buf);
RtlFreeAnsiString(&ansi);
}return 0;
}
So I got the latest ndiswrapper (1.56), doublechecked the source, did not find this stub, added it to ntoskrnl.c somewhere after the other Mm* stubs, recompiled ndiswrapper, installed it and lo and behold .. my USB stick is now working.
Thanks Dirk ;)
There is now also a working staging driver for this device. Have a look at http://ubuntuforums.org/showthread.php?t=1748136
Winnie
2011/06/16 at 11:42