Table of Contents

DEPRECATED

IMPORTANT NOTE: This page is deprecated, updated documentation can be found here

Installing

This page only deals with the ieee80211 version of the RT73 driver. For the mac80211 rt73usb version see the mac80211 page. To understand the differences, see mac80211 versus ieee80211 stacks write-up.

IMPORTANT
If you have a new kernel that supports mac80211 and includes the new rt73usb driver then you MUST blacklist it otherwise the ieee80211 version of the module below will not work. See blacklisting mac80211 driver version below.

Open up a shell and type:

wget http://homepages.tu-darmstadt.de/~p_larbig/wlan/rt73-k2wrlz-3.0.3.tar.bz2
tar -xjf rt73-k2wrlz-3.0.3.tar.bz2
cd rt73-k2wrlz-3.0.3/Module
make

then, as root, type

make install
modprobe rt73

A mirror for the above driver can be found here and a home page mirror can be found here.

Using driver with aircrack-ng

as root:

iwconfig rausb0 mode monitor
airodump-ng rausb0 ...

if you want to use aireplay-ng:

iwpriv rausb0 rfmontx 1
aireplay-ng rausb0 ...

The newer versions of the driver should properly setup the attributes, so simply:

 ifconfig rausb0 up
 airmon-ng start rausb0
 ... use the aircrack-ng suite tools you want

Basic injection with rt73 and BackTrack v2 for beginners

See this thread.

When to use this driver?

See this message.

If you have a Ralink chip in an USB device and that chip is a RT2570 or RT73 (RT73 is also as RT2571 and RT2573), you need the “rt2570” or “rt73” driver. “rt2500” driver is only for PCI/PCMCIA devices.

Using legacy drivers (or ASPj mods) interface name is ra0 for PCI/PCMCIA and rausb0 for USB devices, if you have wlan0 and wmaster0 interfaces you are using new rt2x00-mac80211 driver (rt2x00 has various modules, for USB devices they are “rt2x00lib”, “rt2x00usb” and “rt73usb”, unload them and load “rt2570” or “rt73”).

Troubleshooting Tips

Moving modules which are not required

See the next troubleshooting tip as an alternative to moving the modules.

Sometimes the original distribution modules can interfere with the new one you are creating. The following script will move all related modules out of the module tree. This eliminates the need to blacklist modules. Please be aware that it may move more then want out of the way if your have other ralink devices. As such, you may need to edit the script for your particular circumstances. Additionally, different distributions and even releases within a distribution put the modules in different path locations. So you will have to edit the script to reflect the locations on your particular release and distribution.

 #!/bin/bash
 
 DIRECTORY="/root/rt73module"
 
 if [ ! -d $DIRECTORY ]
 then
     echo "$DIRECTORY directory created"
     mkdir $DIRECTORY
 else
     echo "$DIRECTORY directory exists"
 fi
 
 if [ -d /lib/modules/$(uname -r)/kernel/drivers/net/wireless/rt2x00 ]
 then
     echo "Moving modules from /lib/modules/$(uname -r)/kernel/drivers/net/wireless/rt2x00 directory"
     mv /lib/modules/$(uname -r)/kernel/drivers/net/wireless/rt2x00/rt2400pci.ko $DIRECTORY
     mv /lib/modules/$(uname -r)/kernel/drivers/net/wireless/rt2x00/rt2500pci.ko $DIRECTORY
     mv /lib/modules/$(uname -r)/kernel/drivers/net/wireless/rt2x00/rt2500usb.ko $DIRECTORY
     mv /lib/modules/$(uname -r)/kernel/drivers/net/wireless/rt2x00/rt2x00lib.ko $DIRECTORY
     mv /lib/modules/$(uname -r)/kernel/drivers/net/wireless/rt2x00/rt2x00pci.ko $DIRECTORY
     mv /lib/modules/$(uname -r)/kernel/drivers/net/wireless/rt2x00/rt2x00usb.ko $DIRECTORY
     mv /lib/modules/$(uname -r)/kernel/drivers/net/wireless/rt2x00/rt61pci.ko $DIRECTORY
     mv /lib/modules/$(uname -r)/kernel/drivers/net/wireless/rt2x00/rt73usb.ko $DIRECTORY
     depmod -ae
     echo "Please reboot your system."
 else
     if [ -d /lib/modules/$(uname -r)/kernel/drivers/net/wireless ]
     then
         echo "Moving modules from /lib/modules/$(uname -r)/kernel/drivers/net/wireless directory"
         mv /lib/modules/$(uname -r)/kernel/drivers/net/wireless/rt2400pci.ko $DIRECTORY
         mv /lib/modules/$(uname -r)/kernel/drivers/net/wireless/rt2500pci.ko $DIRECTORY
         mv /lib/modules/$(uname -r)/kernel/drivers/net/wireless/rt2500usb.ko $DIRECTORY
         mv /lib/modules/$(uname -r)/kernel/drivers/net/wireless/rt2x00lib.ko $DIRECTORY
         mv /lib/modules/$(uname -r)/kernel/drivers/net/wireless/rt2x00pci.ko $DIRECTORY
         mv /lib/modules/$(uname -r)/kernel/drivers/net/wireless/rt2x00usb.ko $DIRECTORY
         mv /lib/modules/$(uname -r)/kernel/drivers/net/wireless/rt61pci.ko $DIRECTORY
         mv /lib/modules/$(uname -r)/kernel/drivers/net/wireless/rt73usb.ko $DIRECTORY
         depmod -ae
         echo "Please reboot your system."
     else
         echo "No valid kernel directories were found.  Please investigate."
     fi
 fi

Blacklisting mac80211 driver version

If you have the file rt73usb.ko in the /lib/modules directory tree then you have two options to blacklist it. Failure to do this will mean that the ieee80211 rt73 module described on this page will fail to work properly. Here are the options:

/lib/modules/k#/kernel/drivers/net/wireless/rt2x00/rt73usb.ko to a safe place. The “k#” and/or other parts of the path will be different for your distribution/system. Use “locate 73usb.ko” or “find /lib/modules -name *73usb*” to find the full path. After moving it, do “depmod -ae”.

In both cases, reboot your system afterwards.

Scripts to switch between ieee80211 and mac80211

Yet another option is to use scripts to switch back and forth between the ieee80211 and mac80211 drivers. To do this, create two files in /usr/sbin called “rt73-mac” and “rt73-ieee”. Enter this into “rt73-mac”:

#!/bin/sh
rmmod rt73
modprobe rt73usb

and into rt73-ieee:

 #!/bin/sh
 rmmod rt73usb
 modprobe rt73

After this, you can easily load the rt73 driver (ieee80211) using the command “rt73-ieee”. To revert back to rt73usb (mac80211), use “rt73-mac”.

Try a lower data rate

Try lowering your card rate to 1MB:

iwconfig rausb0 rate 1M

airmon-ng shows RT2500 instead of RT73

Move everything ralink related out of my modules prior to install the new driver with something similar to the following. Change the $KERNELVER to your kernel (uname -r provides the current kernel). Change $DIRECTORY to an existing directory where you want to save the module. Also your path may be slightly different from the one below. Use find or located to determine the exact path to the modules.

      mv /lib/modules/$KERNELVER/kernel/drivers/net/wireless/rt2x00/rt2400pci.ko $DIRECTORY
      mv /lib/modules/$KERNELVER/kernel/drivers/net/wireless/rt2x00/rt2500pci.ko $DIRECTORY
      mv /lib/modules/$KERNELVER/kernel/drivers/net/wireless/rt2x00/rt2500usb.ko $DIRECTORY
      mv /lib/modules/$KERNELVER/kernel/drivers/net/wireless/rt2x00/rt2x00lib.ko $DIRECTORY
      mv /lib/modules/$KERNELVER/kernel/drivers/net/wireless/rt2x00/rt2x00pci.ko $DIRECTORY
      mv /lib/modules/$KERNELVER/kernel/drivers/net/wireless/rt2x00/rt2x00usb.ko $DIRECTORY
      mv /lib/modules/$KERNELVER/kernel/drivers/net/wireless/rt2x00/rt61pci.ko $DIRECTORY
      mv /lib/modules/$KERNELVER/kernel/drivers/net/wireless/rt2x00/rt73usb.ko $DIRECTORY
      depmod -ae

Perhaps locate these same modules and move them out. Just be aware that you will only have support for rt73 by doing this. But this is really the objective. Be sure to run “depmod -ae”.

aireplay-ng freezes after injecting 700 to 1000 packets

If aireplay-ng freezes after injecting 700 to 1000 packets, try using the “-x” option which limits the packet injection rate. Try various values from “-x 100” to “-x 250”.

"Network is down" error message

If you get messages similar to this:

 wconfig rausb0 mode monitor -> Error for wireless request "Set Mode" (8B06): SET failed on device rausb0. Network ist down.
 
 airodump-ng rausb0 -> ERROR: ioctl (SI0CSIFFLAGS) Failed Invalid Argument.
 
 airmon-ng start rausb0 -> raus0    RaLink USB    rt73SI0CSIFFLAGS Argument not allowed (Monitor mode enabled)
 Interface doesnt accept ioctl...
 rfmontx (8BEC) Network is down.

If you get a “Network down” message then you must first issue:

 ifconfig rausb0 up

Then put the card into monitor mode with:

 airmon-ng start rausb0 <optionally specify the channel here>

Instead of airmon-ng, you can set the card manually with:

 iwpriv rausb0 forceprism 1
 iwpriv rausb0 rfmontx 1
 iwconfig rausb0 mode monitor channel <x>

Ubuntu specific

If you are using Ubuntu (Gutsy, Feisty or Edgy) please follow this guide: Ralink rt73 (Some modules must be blacklisted) Even when following the guide above, be sure to use the latest driver version available.

"iwe_stream_add_event" compile error message

NOTE: This applies only to driver version 3.0.1 and earlier. Version 3.0.2 should work out of the box with 2.6.27 kernels.

If you get a series of compile messages similar to “error: passing argument 1 of 'iwe_stream_add_event' from incompatible pointer type” then do the following:

Open up a shell and type:

wget http://homepages.tu-darmstadt.de/~p_larbig/wlan/rt73-k2wrlz-3.0.1.tar.bz2
tar -xjf rt73-k2wrlz-3.0.1.tar.bz2
cd rt73-k2wrlz-3.0.1/Module
wget http://patches.aircrack-ng.org/rt73_2.6.27.patch
patch -Np2 -i rt73_2.6.27.patch
make

then, as root, type

make install
modprobe rt73

"error: implicit declaration of function ‘kill_proc’" compile error message

See this thread for a patch. Version 3.0.2 of the driver shouldn't have this bug anymore.

2.6.27 kernel support

Version 3.0.2 does support 2.6.27 out of the box without any modifications needed.

If you want to use an earlier version with 2.6.27, here are the patching instructions:

2.6.31 kernel and above gives rt73.ko failed to build

Compiling on 26.31 and above kernels gives an error message “rt73.ko failed to build!”. This thread provides a workaround. Hopefully a corrected version of the driver will be released shortly.