Translation(s): none

Ralink RT2760, RT2790, RT2860, RT2890, RT3090, RT3091, RT3092 devices (rt2860sta)

This page describes how to enable support for WiFi devices based on Ralink 802.11n PCI chipsets on Debian systems.

{i} Wheezy users, see rt2800pci for device support.

rt2860sta is a module for the Ralink RT2700P[D]/RT2700E[D]/RT2800P[D]/RT2800E[D] and RT3000E[D] PCI 802.11 draft-n wireless LAN chipsets. Supported devices are listed at the end of this page.

This experimental vendor driver is included as a staging driver in the mainline Linux kernel since 2.6.29. It is present in Debian kernel images since 2.6.29 (i386, amd64). Firmware was removed from the driver in Debian kernel images at This is available in the firmware-ralink package since version 0.17.2

The rt3090sta staging driver (added to mainline in Linux 2.6.32) - supporting Ralink RT3090/1/2 devices - was merged in rt2860sta at Linux In Debian 2.6.32 kernel images, the rt3090sta staging driver was replaced with a backported rt2860sta driver at linux-2.6 2.6.32-18.5

<!> The rt2860sta staging driver depends on the x86 or x86-64 architecture (Debian i386 and AMD64 ports respectively).

<!> This driver is buggy. See Known Issues for discovered problems and workarounds.

{i} Ralink 802.11n USB devices are supported by the rt2870sta driver.



  1. Add a "non-free" component to /etc/apt/sources.list, for example:

    # Debian Squeeze/6.0
    deb squeeze main contrib non-free
  2. Update the list of available packages and install the firmware-ralink and wireless-tools packages:

    aptitude update
    aptitude install firmware-ralink wireless-tools
  3. If not already performed, connect the device to your system.
  4. The rt2860sta kernel module is automatically loaded for supported devices. Verify your device has an available interface:

  5. Configure your wireless interface as appropriate. See also known issues.


The Ralink staging drivers were disabled at linux-2.6 2.6.35-1~experimental.3 and removed at Linux 3.0. See rt2800pci for device support.

Known Issues

The rt2860sta driver may currently (as at 2008-11-29) be pretty buggy, but it works well when handled with care.


Don't forget to specify all ciphers if you're trying to associate with a WPA AP. In my case, the following wpa_supplicant configuration works:

ctrl_interface=/var/run/wpa_supplicant GROUP=netdev
    #psk="Your passphrase in can go here in plaintext, which should work too."
    psk=01234567..89abcdef ## << can be generated using wpa_passphrase

Without the group and proto parameter, it didn't seem to work.



If you have trouble getting your device to connect using wpa_supplicant, it may be due to the device trying to associate with the wrong AP/SSID, regardless of what you specified. This happened for me (?NielsB√∂hm) while trying to connect to my OpenWRT which publishes 3 SSIDs with different authentication and password settings. After ifup'ing the interface (unsucessfully), checking iwconfig wlan0 revealed that it did try to associate with the wrong SSID. It may or may not try to associate with wrong APs as well, but I did not verify that.

In order to solve this problem, follow these steps:

  1. If the interface is down, bring it up using ifconfig wlan0 up. You don't need to specify any options, since it only needs to be marked "up" for the scanning to work.

  2. Scan for access points in range using iwlist wlan0 scan. If the AP you want to associate with doesn't show up, it may be hidden, so you have to find out the following information using a different method, like looking it up in your AP's settings. Otherwise try scanning multiple times until it shows up.

  3. Take note of the following data: Authentication protocol (like WPA or WPA2), Group Cipher, Pairwise Cipher and Authentication Suite.
  4. Set up the entry for your card in /etc/network/interfaces with the following wpa-* options. This is the recommended method in Debian.

    Although if you're using roaming, you need to set up a wpa_supplicant.conf(5) file and tell the section in your interfaces file to use that. In the latter case, put the following options in your wpa_supplicant.conf file instead (read /usr/share/doc/wpasupplicant/README.wpa_supplicant.conf.gz first for the layout) while removing the leading "wpa-" from the option names and replacing the remaining dashes by underscores.

    iface wlan0 inet dhcp
            wpa-driver    wext
            wpa-ap-scan   2
            wpa-scan-ssid 1
            wpa-ssid      <put here the SSID you want to associate with>
            wpa-psk       <put here the pre-shared key of your wireless network (if applicable)>
            wpa-key-mgmt  <put here WPA-PSK for a WPA or WPA2 network with pre-shared key, WPA-EAP for EAP authentication, NONE for unencrypted network or WEP encryption or IEEE8021X for IEEE 802.1X with EAP authentication>
            wpa-group     <put here the Group Cipher of your network>
            wpa-pairwise  <put here the Pairwise Cipher of your network>
            wpa-proto     <put here WPA if you have a WPA network or RSN if your have a WPA2 network>
    The most important thing here is setting ap-scan to 2 and scan-ssid to 1, which makes wpa_supplicant associate exactly with the data you provided and not broadcast for an arbitrary SSID. Unfortunately that requires you to explicitly specify key-mgmt, group, pairwise and proto.
  5. Try to bring the interface up, using ifdown wlan0 ; ifup wlan0 for instance.


Works well with only a driver compilation with an Asus Eee PC 901 (BIOS 1703). Several modes were tested (don't know the differences between them, they are offered by my internet provider):

WEP with open system and WPA (AES + TKIP) didn't work. After suspend on RAM or on disk, NetworkManager is working and scanning networks but can't reach one. Still have to investigate on this...


Unlike most wireless cards you can't use the normal iwconfig(8) commands to connnect, you have to use iwpriv(8) instead. I set it up with a WEP access point as below. You can probably get a good idea how to do other configurations by looking at the output of iwpriv wlan0 show. Those values are all set with iwpriv wlan0 set VARIABLE=Value.

  1. iwpriv wlan0 set EncrypType=WEP

  2. iwpriv wlan0 set SSID=YOURESSIDHERE
  3. iwpriv wlan0 set Key1=YOURKEYHERE
  4. iwpriv wlan0 set DefaultKeyID=1

After those commands then iwconfig wlan0 will now show the details, which it does not after running just iwconfig wlan0 essid foo.

Other Notes


The rt2860sta driver seems to work perfectly with wicd if you're trying to associate with a WPA AP.

Normally NetworkManager would be the recommended way to configure wireless. However, given the issues listed above, it looks like wicd is currently our best alternative.

Supported Devices

The page HowToIdentifyADevice/PCI explains how to identify a PCI device.

The following list is based on the alias fields of modinfo rt2860sta in Debian 2.6.32 (2.6.32-41) kernel images.

See Also

CategoryHardware | CategoryWireless