Recently, I bought a D-Link DWA-140 after digging online that it works under Linux (if only by using the drivers of the chipset maker at times). Big surprise when I plugged it in: it doesn't work. Now it does, but only
with the drivers from Ralink. But the path was a weird journey.
All of this is on Ubuntu 12.04
$ uname -a
Linux marnie 3.2.0-10-generic #17-Ubuntu SMP Thu Jan 19 18:50:46 UTC 2012 i686 i686 i386 GNU/Linux
1) The device is not in usb.ids. Well, it is, but with another vendor id. Official usb.ids has this:
07d1 D-Link System
3c15 DWA-140 RangeBooster N Adapter(rev.B3) [Ralink RT2870]
But lsusb gives me
$ lsusb | grep "D-Link"
Bus 001 Device 004: ID 2001:3c15 D-Link Corp.
Right device id, wrong vendor id. After I figured out that this might be why rt2800usb doesn't attach to the device, I tried to fix it. First, edit usb.ids
2001 D-Link System
3c15 DWA-140 RangeBooster N Adapter(rev.B3) [Ralink RT2870] # <-- I pasted this!
2) Now I do
# modprobe rt2800usb
# echo "2001 3c15" > /sys/bus/usb/drivers/rt2800usb/new_id
But this doesn't work. I get
$ dmesg | grep rt2
[12347.900961] usbcore: registered new interface driver rt2800usb
[12348.244119] phy0 -> rt2800_init_eeprom: Error - Invalid RT chipset detected.
[12348.244134] phy0 -> rt2x00lib_probe_dev: Error - Failed to allocate device.
3) Next, I tried the driver from Ralink (2011_0719_RT3070_RT3370_RT5370_RT5372_Linux_STA_V188.8.131.52_DPO). With that, the device is recognized and usable. I get
ra0 Ralink STA ESSID:"11n-AP" Nickname:"RT2870STA"
Mode:Auto Frequency=2.412 GHz Access Point: Not-Associated
Bit Rate:1 Mb/s
RTS thr:off Fragment thr:off
Link Quality=10/100 Signal level:0 dBm Noise level:0 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:0
I suppose that this means that the device actually uses the rt2870 chip (Is there a way to make sure?)
Now the question: is there a chance to get this beast to work with rt2800usb? What do you need to debug what's going wrong here? Logs? etc.
Thanks in advance!