Welcome to the home of Ben

Navigation
 
 
 
 
 
 
 
Information
 
 
 
 

Hacked rt2570/rt2500usb usb driver


IMPORTANT NOTE: I have noticed people linking to this page that are trying to use the Nintendo usb wireless adaptor to connect their DS for WFC/Nintendo Wi-Fi Connection games. This driver is not for that and will not help you. This driver is intended only for downloading demos to a DS through the DS's DS Download Play feature. For normal wireless use and configuring the adaptor as an Access Point (if this is possible) you will have more luck using the rt2x00 Open Source Project drivers.


This page contains a hacked version of the rt2x00 Open Source Project linux driver for the rt2570 USB Wi-fi adaptor. This chipset appears to be referred to as rt2570 and rt2500usb depending who you talk to. I haved used rt2570 as that is what the rt2x00 project uses although the ralink website uses RT2500USB.

This hack allows the adaptor to be used with the my version of WMB for Linux to download demos to your Nintendo DS. If you find problems please do not ask for support on the rt2x00.serialmonkey project as this is a hack and is not supported by them. For help it is best to post to the gbadev forums as I keep an eye on them.

THIS DRIVER MAY BREAK NORMAL WI-FI OPERATION.

The hacked driver sets the hardware to use short preamble and allows control frames to be passed up when in monitor mode (this is useful when grabbing wi-fi traffic).

Releases

The hacked driver releases, with the most recent listed first.

Notes and things

Building

The releases comprises a tarball containing the source of the driver. Extracting the tarbal will create a directory with a name similar to the tarball. To build the kernel module change into the Module directory within the extracted directory. Then type make and everything should build happily. If you get lots of errors you probably have not got the kernel headers/source installed or are running an old kernel.

Installing

If the build was successful you should have a kernel module nin_rt2570.ko. I have not hacked the makefile so you will have to install the module by hand. To do this, as root, copy it over to your module directory (in my case this is /lib/modules/2.6.22-2-k2/misc) and run depmod -a. Now when you plug your Wi-Fi adaptor in your new hacked driver should load.

If all went well you should now have a network interface (/sbin/ifconfig -a) called ninusb0.

IMPORTANT: if you have the rt2x00 Open Source Project module (rt2570.ko or rt2x00usb.ko or similar) installed on your system you will have to move them out of your module directory so that your USB device is only picked up by the hacked driver.

Who is controlling my stick?

As downloaded the driver supports most Ralink RT2570 USB wifi sticks. Should you want to restrict the driver to only support a single type of stick, for example the Nintendo DS USB Wi-Fi adaptor, change the file rt2570sw.h before building the driver module. Find the section of code as marked by BEN HACK: and comment out all but the device you want to be supported. Just to be clear, this step is not necessary unless you want to restrict the devices supported by the driver. The following example shows how to do this for the Nintendo stick.

/*
* BEN HACK:
* Change this to add/remove devices that this driver controls.
*/
#define RTUSB_DEVICES { \
/*{ USB_DEVICE(0x0411, 0x0066)},*/ /* Melco */ \
/*{ USB_DEVICE(0x0411, 0x0067)},*/ /* Melco */ \
/*{ USB_DEVICE(0x050d, 0x7050)},*/ /* Belkin */ \
/*{ USB_DEVICE(0x050d, 0x705a)},*/ /* Belkin */ \
/*{ USB_DEVICE(0x06f8, 0xe000)},*/ /* GUILLEMOT */ \
/*{ USB_DEVICE(0x0707, 0xee13)},*/ /* SMC */ \
/*{ USB_DEVICE(0x0b05, 0x1706)},*/ /* ASUS */ \
/*{ USB_DEVICE(0x0b05, 0x1707)},*/ /* ASUS */ \
/*{ USB_DEVICE(0x0db0, 0x6861)},*/ /* MSI */ \
/*{ USB_DEVICE(0x0db0, 0x6865)},*/ /* MSI */ \
/*{ USB_DEVICE(0x0db0, 0x6869)},*/ /* MSI */ \
/*{ USB_DEVICE(0x1044, 0x8001)},*/ /* Gigabyte */ \
/*{ USB_DEVICE(0x1044, 0x8007)},*/ /* Gigabyte */ \
/*{ USB_DEVICE(0x114b, 0x0110)},*/ /* Spairon */ \
/*{ USB_DEVICE(0x13b1, 0x000d)},*/ /* Cisco Systems */ \
/*{ USB_DEVICE(0x13b1, 0x0011)},*/ /* Cisco Systems */ \
/*{ USB_DEVICE(0x13b1, 0x001a)},*/ /* Cisco Systems */ \
/*{ USB_DEVICE(0x148f, 0x1706)},*/ /* Ralink */ \
/*{ USB_DEVICE(0x148f, 0x2570)},*/ /* Ralink */ \
/*{ USB_DEVICE(0x148f, 0x2573)},*/ /* CNET CWD-854 */ \
/*{ USB_DEVICE(0x148f, 0x9020)},*/ /* Ralink */ \
/*{ USB_DEVICE(0x14b2, 0x3c02)},*/ /* Conceptronic */ \
/*{ USB_DEVICE(0x14f8, 0x2570)},*/ /* Eminent */ \
/*{ USB_DEVICE(0x2001, 0x3c00)},*/ /* D-LINK */ \
{ USB_DEVICE(0x0411, 0x008b)}, /* Nintendo */ \
{0,} \
}

This code associates the driver with the various USB vendor and product ids of adaptors that contain the rt2570 chipset (lsusb will help you find the vendor/product id pair for you device).

Working with WMB for linux

To configure your interface for use with the WMB host type the following commands as root.

ifconfig ninusb0 up
iwpriv ninusb0 rfmontx 1
iwconfig ninusb0 mode monitor channel 13 rate 2M