rt2800usb 2770 / 2872 won't tx to an AP (but scan/inj ok?)

Live forum: http://rt2x00.serialmonkey.com/viewtopic.php?t=6185


20-10-2011 13:33:33

I am having trouble getting an Alfa AWUS051NH 2770 / 2872 working on Linux. The problem is that the card won't transmit when connected to an AP. Strangely, the card will scan and associate, and can even work in monitor mode and inject packets. Putting another card next to this problem card in monitor mode, I do not see any packets being transmitted from the station when connected to an AP, or if I do, there are only a few while making the connection. For example, running dhcpcd to get an IP shows TX packets in ifconfig, but airodump-ng on the monitor card shows nothing being transmitted.

I also have an AWUS036NH (rt3070 via rt2800usb) that works fine on the same machine, as well as ath5k and ath9k_htc devices that work fine on the same machine.

Using kernel 3.0.7-gentoo on Gentoo, obviously.

The card has been tested with 2.4GHz networks on Windows with another computer and seems to work fine, and the fact that it injects and otherwise gives me no errors leads me to believe there is some software, config or code issue.

Unit Plugged In
[code2j3oezgf][ 6848.569405] usb 1-5.5: new high speed USB device number 6 using ehci_hcd
[ 6848.662128] usb 1-5.5: default language 0x0409
[ 6848.668500] usb 1-5.5: udev 6, busnum 1, minor = 5
[ 6848.668506] usb 1-5.5: New USB device found, idVendor=148f, idProduct=2770
[ 6848.668512] usb 1-5.5: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 6848.668517] usb 1-5.5: Product: 802.11 n WLAN
[ 6848.668521] usb 1-5.5: Manufacturer: Ralink
[ 6848.668525] usb 1-5.5: SerialNumber: 1.0
[ 6848.668684] usb 1-5.5: usb_probe_device
[ 6848.668691] usb 1-5.5: configuration #1 chosen from 1 choice
[ 6848.669247] usb 1-5.5: adding 1-5.5:1.0 (config #1, interface 0)
[ 6848.670580] usbserial_generic 1-5.5:1.0: usb_probe_interface
[ 6848.670587] usbserial_generic 1-5.5:1.0: usb_probe_interface - got id
[ 6848.670624] rt2800usb 1-5.5:1.0: usb_probe_interface
[ 6848.670630] rt2800usb 1-5.5:1.0: usb_probe_interface - got id
[ 6848.699746] phy7 -> rt2x00_set_chip: Info - Chipset detected - rt: 2872, rf: 0004, rev: 0202.
[ 6848.699955] ieee80211 phy7: Selected rate control algorithm 'minstrel_ht'
[ 6848.701826] Registered led device: rt2800usb-phy7::radio
[ 6848.701909] Registered led device: rt2800usb-phy7::assoc
[ 6848.701967] Registered led device: rt2800usb-phy7::quality
[ 6848.702313] drivers/usb/core/inode.c: creating file '006'[/code2j3oezgf]

Example with wpa_supplicant connecting to AP (all other cards in the machine - ath5k (various), ath9k_htc (9271), rt2800usb (3070) work fine, connect, and get an IP
(as stated above, I will see no packets being transmitted from this station if watching this channel)
[code2j3oezgf]wirelessrig ~ # iwconfig wlan4
wlan4 IEEE 802.11abgn ESSID:off/any
Mode:Managed Frequency:2.462 GHz Access Point: Not-Associated
Tx-Power=20 dBm
Retry long limit:7 RTS thr:off Fragment thr:off
Encryption key:off
Power Management:off

wirelessrig ~ # /etc/init.d/net.wlan4 start
* Bringing up interface wlan4
* Starting wpa_supplicant on wlan4 ... [ ok ]
* Starting wpa_cli on wlan4 ... [ ok ]
* Backgrounding ... ...
* WARNING: net.wlan4 has started, but is inactive
wirelessrig ~ # killall dhcpcd
wirelessrig ~ # iwconfig wlan4
wlan4 IEEE 802.11abgn ESSID:"TestAP"
Mode:Managed Frequency:2.412 GHz Access Point: 08:86:3B:3C:00:00
Bit Rate=26 Mb/s Tx-Power=20 dBm
Retry long limit:7 RTS thr:off Fragment thr:off
Encryption key:off
Power Management:off
Link Quality=59/70 Signal level=-51 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:0

wirelessrig ~ # dhcpcd wlan4
dhcpcd[7914]: version 5.2.12 starting
dhcpcd[7914]: wlan4: broadcasting for a lease
dhcpcd[7914]: timed out
dhcpcd[7914]: allowing 8 seconds for IPv4LL timeout
dhcpcd[7914]: wlan4: probing for an IPv4LL address
dhcpcd[7914]: wlan4: checking for
dhcpcd[7914]: wlan4: using IPv4LL address
dhcpcd[7914]: forked to background, child pid 7948[/code2j3oezgf]

Any ideas? Any other information I can provide?

EDIT Just for clarification, this issue happens when connecting to WEP or Open APs; it doesn't happen only with WPA. I have tried various APs in various modes; all other cards associate and work, this card associates but ceases to transfer after that.


06-11-2011 22:06:06


For what it's worth, here's some extended test information
Windows OK (only 2.4GHz tested)
Ubuntu 10.10 LiveCD OK (2.4GHz and 5GHz, using rt2800usb, NOT using rt2870sta)

Tried firmware version 12 (from said Ubuntu CD), version 22 (from Ralink website) and version 29 (from Gentoo firmware package). As stated before, another Ralink device (rt3070) works fine on this same system. I've tried both devices plugged in, only affected device plugged in...same result. Maybe it's a recent kernel or a Gentoo-specific problem?

I'll update the kernel and post a reply with results.

EDIT New kernel 3.1.0 works. Turns out there were patches that someone else applied to my kernel, specifically some mac80211 radiotap injection patch that doesn't seem to play well with anything. Card works beautifully with the new kernel without these patches. I did find a patch that does play well with this card (and my Atheros cards) to allow the fragment attack, so I'm quite happy now.