Ralink RT2870 based USB Wireless N adapters (Ubuntu)

You’re welcome :slight_smile:

/tftpboot files, I’m guessing are for (PXE) remote booting/installations, but are pretty useless on their own… and I would have thought totally useless on a USB adapter (that doesn’t contain a PXE boot ROM) anyway. ???

Question for you: if you check out the thread I’ve been working on here:

I’m not sure that rt2870sta is the right driver for my AM10. No one has EVER gotten this Cisco/Linksys device to work on linux, so we are breaking new ground here. But I was wondering how you can tell which driver I’ll need.

If you would like any terminal outputs, just let me know. Thank you so much.

OMS!

So I can see which firmware you are using, and if your device id’s are included in rt2800usb…

Can you send the output from:

ls -l /lib/firmware/rt2870.bin

and

modinfo rt2800usb | grep 0031

Sure:

-rw-r--r-- 1 root root 4096 2010-11-18 16:20 /lib/firmware/rt2870.bin

for the first and

The second comes up blank. I think I deinstalled rt2800usb in trying to get rt2870sta to work. Here is the same command for rt2870sta

modinfo rt2870sta | grep 0031
alias:          usb:v13B1p0031d*dc*dsc*dp*ic*isc*ip*

I hope this helps.

OMS

OK, first thing to try… get firmware 1.53 from here:
https://launchpad.net/ubuntu/oneiric/+source/linux-firmware/1.53/+files/linux-firmware_1.53.tar.gz

and see if that works with rt2870sta

meanwhile, is anything returned for:

modinfo rt2800usb

at all ?

The reason I ask is that your card is listed as working in Debian using rt2800usb, the latest firmware, and a kernel that has the device ID’s included in rt2800usb

http://wiki.debian.org/rt2800usb

Just to be sure I’ve got the correct ID’s can you also post the output from:

lsusb

(I know it’s on the Ubuntu forum dut I want to be sure)

The device ID’s ARE included in the kernel I’m running (3.1.0-0301rc4-generic), and whilst you are answering the above, I’ll try booting into other kernels to find which one they first appeared in.

BTW, we may need to replace the rt2870.bin firmware from the Debian firmware package, which is slightly newer than even Ubuntu’s 1.53, but we’ll try that later.

Sorry for the mega n00b question but how do I update the firmware once I’ve downloaded it? It seems like I don’t want to go into synaptic and just deinstall the previous stuff. But I can do that.

Here is lsusb:

Bus 002 Device 003: ID 045e:007d Microsoft Corp. Notebook Optical Mouse
Bus 002 Device 002: ID 045e:00db Microsoft Corp. Natural Ergonomic Keyboard 4000 V1.0
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 006: ID 13b1:0031 Linksys AM10 v1 802.11n [Ralink RT2870]
Bus 001 Device 005: ID 1307:1169 Transcend Information, Inc. TS2GJF210 JetFlash 210 2GB
Bus 001 Device 004: ID 1307:0169 Transcend Information, Inc. 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Everything starting in Transcend Information or Linksys is the same card. If I unplug, all three disappear. Yes, the product and vendor addresses you gave me seem correct. If that Debian package is correct, wouldn’t that mean that rt3070 is the correct driver?

I haven’t heard of ANYBODY on the web getting AM10 to work in linux. As far as I know, I am #1 (in many ways, not all of them flattering).

Ah, something DID come up for modinfo rt28000usb!


modinfo rt2800usb
filename:       /lib/modules/2.6.38-11-generic/kernel/drivers/net/wireless/rt2x00/rt2800usb.ko
license:        GPL
firmware:       rt2870.bin
description:    Ralink RT2800 USB Wireless LAN driver.
version:        2.3.0
author:         http://rt2x00.serialmonkey.com
srcversion:     52008801035C9FD38B91EC7
alias:          usb:v0586p341Ad*dc*dsc*dp*ic*isc*ip*
alias:          usb:v177Fp0313d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v177Fp0153d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v083ApF511d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v083ApD522d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v083ApC522d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v083ApA512d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v18E8p6259d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v2019pAB24d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v1D4Dp0011d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v1D4Dp0010d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v1D4Dp0002d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v05A6p0101d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v1B75p3072d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v1B75p3071d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v100Dp9032d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v1737p0079d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v1737p0078d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v1737p0077d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v1740p0615d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v1740p0605d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v1044p800Cd*dc*dsc*dp*ic*isc*ip*
alias:          usb:v15A9p0010d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v203Dp14A1d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v07D1p3C17d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v07D1p3C15d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v07D1p3C13d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v07D1p3C0Bd*dc*dsc*dp*ic*isc*ip*
alias:          usb:v18C5p0008d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v07AAp0042d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v07AAp0041d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v14B2p3C11d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v14B2p3C08d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v0411p015Dd*dc*dsc*dp*ic*isc*ip*
alias:          usb:v0411p0150d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v0411p0148d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v0411p012Ed*dc*dsc*dp*ic*isc*ip*
alias:          usb:v050Dp825Ad*dc*dsc*dp*ic*isc*ip*
alias:          usb:v13D3p3322d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v13D3p3284d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v13D3p3262d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v1761p0B05d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v0B05p1790d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v0B05p1761d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v0B05p1760d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v0E0Bp9041d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v0E0Bp9031d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v0DF6p0050d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v148Fp8070d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v148Fp3370d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v0586p3416d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v5A57p5257d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v5A57p0283d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v5A57p0282d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v5A57p0280d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v0CDEp0025d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v0CDEp0022d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v157Ep300Ed*dc*dsc*dp*ic*isc*ip*
alias:          usb:v177Fp0302d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v15A9p0006d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v083ApB522d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v083ApA703d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v083ApA702d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v083ApA701d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v083ApA618d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v083Ap8522d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v083Ap7522d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v083Ap7512d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v083Ap7511d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v083Ap6618d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v0DF6p0048d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v0DF6p0047d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v0DF6p0042d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v0DF6p0040d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v0DF6p003Fd*dc*dsc*dp*ic*isc*ip*
alias:          usb:v0DF6p003Ed*dc*dsc*dp*ic*isc*ip*
alias:          usb:v0DF6p003Dd*dc*dsc*dp*ic*isc*ip*
alias:          usb:v0DF6p003Bd*dc*dsc*dp*ic*isc*ip*
alias:          usb:v0DF6p0039d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v0DF6p002Dd*dc*dsc*dp*ic*isc*ip*
alias:          usb:v0DF6p002Cd*dc*dsc*dp*ic*isc*ip*
alias:          usb:v0DF6p002Bd*dc*dsc*dp*ic*isc*ip*
alias:          usb:v0DF6p0017d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v129Bp1828d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v04E8p2018d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v148Fp3072d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v148Fp3071d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v148Fp3070d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v148Fp2870d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v148Fp2770d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v148Fp2070d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v1A32p0304d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v2019pED06d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v2019pAB25d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v0471p200Fd*dc*dsc*dp*ic*isc*ip*
alias:          usb:v1D4Dp000Ed*dc*dsc*dp*ic*isc*ip*
alias:          usb:v1D4Dp000Cd*dc*dsc*dp*ic*isc*ip*
alias:          usb:v20B8p8888d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v0DB0p899Ad*dc*dsc*dp*ic*isc*ip*
alias:          usb:v0DB0p871Cd*dc*dsc*dp*ic*isc*ip*
alias:          usb:v0DB0p871Bd*dc*dsc*dp*ic*isc*ip*
alias:          usb:v0DB0p871Ad*dc*dsc*dp*ic*isc*ip*
alias:          usb:v0DB0p870Ad*dc*dsc*dp*ic*isc*ip*
alias:          usb:v0DB0p822Cd*dc*dsc*dp*ic*isc*ip*
alias:          usb:v0DB0p822Bd*dc*dsc*dp*ic*isc*ip*
alias:          usb:v0DB0p822Ad*dc*dsc*dp*ic*isc*ip*
alias:          usb:v0DB0p821Ad*dc*dsc*dp*ic*isc*ip*
alias:          usb:v0DB0p6899d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v0DB0p3871d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v0DB0p3870d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v0DB0p3822d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v0DB0p3821d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v0DB0p3820d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v100Dp9031d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v0789p0166d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v0789p0164d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v0789p0163d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v0789p0162d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v1737p0071d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v1737p0070d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v04BBp0948d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v04BBp0947d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v04BBp0945d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v0E66p0018d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v0E66p0017d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v0E66p0013d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v0E66p000Bd*dc*dsc*dp*ic*isc*ip*
alias:          usb:v0E66p0009d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v0E66p0003d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v0E66p0001d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v1044p800Dd*dc*dsc*dp*ic*isc*ip*
alias:          usb:v1044p800Bd*dc*dsc*dp*ic*isc*ip*
alias:          usb:v1740p9709d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v1740p9708d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v1740p9707d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v1740p9706d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v1740p9705d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v1740p9703d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v1740p9702d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v1740p9701d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v203Dp14A9d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v203Dp1480d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v7392p7718d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v7392p7717d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v7392p7711d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v07FAp7712d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v07D1p3C16d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v07D1p3C11d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v07D1p3C0Fd*dc*dsc*dp*ic*isc*ip*
alias:          usb:v07D1p3C0Ed*dc*dsc*dp*ic*isc*ip*
alias:          usb:v07D1p3C0Dd*dc*dsc*dp*ic*isc*ip*
alias:          usb:v07D1p3C0Ad*dc*dsc*dp*ic*isc*ip*
alias:          usb:v07D1p3C09d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v18C5p0012d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v07AAp003Fd*dc*dsc*dp*ic*isc*ip*
alias:          usb:v07AAp003Cd*dc*dsc*dp*ic*isc*ip*
alias:          usb:v07AAp002Fd*dc*dsc*dp*ic*isc*ip*
alias:          usb:v14B2p3C28d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v14B2p3C27d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v14B2p3C25d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v14B2p3C23d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v14B2p3C12d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v14B2p3C09d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v14B2p3C07d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v14B2p3C06d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v0411p00E8d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v050Dp815Cd*dc*dsc*dp*ic*isc*ip*
alias:          usb:v050Dp805Cd*dc*dsc*dp*ic*isc*ip*
alias:          usb:v050Dp8053d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v13D3p3321d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v13D3p3307d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v13D3p3305d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v13D3p3273d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v13D3p3247d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v0B05p1784d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v0B05p1742d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v0B05p1732d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v0B05p1731d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v1690p0740d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v15C5p0008d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v8516p3072d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v8516p3071d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v8516p3070d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v8516p2870d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v8516p2770d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v8516p2070d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v1EDAp2310d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v1482p3C09d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v07B8p3072d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v07B8p3071d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v07B8p3070d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v07B8p2770d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v07B8p2870d*dc*dsc*dp*ic*isc*ip*
depends:        rt2x00lib,rt2800lib,rt2x00usb
vermagic:       2.6.38-11-generic SMP mod_unload modversions 
parm:           nohwcrypt:Disable hardware encryption. (bool)

OMS

OK easiest way…

sudo cp -rv /lib/firmware /lib/firmware-old

then

sudo cp -rv /usr/share/doc/linux-firmware /usr/share/doc/linux-firmware-old

OK that’s the current firmware backed up (just in case)

now download this (even newer 1.54) .deb:
https://launchpad.net/~thomas-creutz/+archive/linux-firmware/+build/2556299/+files/linux-firmware_1.54~ppa1_all.deb

and just double-click it to install… when Ubuntu Software Centre opens, just click the Upgrade button.

Sorry, got a bit busy there for a while… I’ll go check the earlier kernels now :slight_smile:

:slight_smile:

Thanks, I’ve now updated the firmware. Nothing magical happened with regards to the rt2870 driver magically working when plugged in. But I’ll try updating then using rt2800usb tomorrow.

Thanks for the instructions. (I always forget how easy debian packages are - software center’s totally got my back - I’m always imagining I’ll be pounding something out in the black terminal screen).

OMS

Ok, I’m going to try rt2800USB - I doubt I’ll have much success.

Also, if I want rt2800usb to have an eye out for 13b1:0031 (FYI I now have all the vendor and product IDs memorized, how scary is that), how do I do that?

When I added 13b1:0031 to rt2870sta I had to take the original - what is that, a binary, is it source code? - anyway, and then I added that to the things it watches out for. I have no idea how to do that for rt2800usb. Forgive the n00b question, but I couldn’t find source code for it. It must come off the Ralink site or something - I was googling for half an hour and clearly if it’s obvious I missed it.

Also, I was also going to point out that you didn’t answer my question above about - how do you know which version of rt… to use? rt2870, rt2800usb, rt3572, rt3070 - I am not at all sure what the difference is. But I really appreciate the help.

I’ll report back if I have any success, but I doubt it. I’ll just edit this post so as not to create an even bigger thread.\

OMS

OK, it will be interesting to see what happens when you blacklist rt2870sta and modprobe rt2800usb… as rt2800usb on your kernel doesn’t have the correct ID’s built in.

After trying that, there are a couple of options…

a) try a different STA driver… your adapter seems to be an rt3072
Now though I can find NO info for your particular card online, a few people usin a SWEEX card based on the rt3072 seem to have had luck adding the device ID’s to the rt3070 drivers… so may be worth a shot.

b) move to a later kernel… problem with this is that the correct device ID’s aren’t in the 2.6.39 kernel either, which means moving to kernel >= 3.0 (I only know for sure they are in 3.1), vut this may introduce other problems, such as having to reload your graphics drivers… 3.1 works fine for me, but there are NO guarantees it will work (without issue) for you.

That said, you should still be able to boot the old kernel, if 3.1 gives you problems.

OR

You could just wait for Ubuntu 11.10, which will use kernel >=3.0 by default.

AFAIK, you can’t… rt2800usb is built into the kernel, so without downloading the kernel source, patching it, and recompiling it, there is no way to add the ID’s (at least that I’m aware of).

But you never know your luck… it may work anyway, as long as rt2800usb is loaded (and rt2870sta NOT loaded)

As I said Ubuntu 11.10 will use (at least) kernel 3.0 which may contain the correct ID’s by default… even if it doesn’t, upgrading the kernel to 3.1 (which definitely has the ID’s) should be less risky in 11.10… so it may just be best to wait.

But as ever, the choice of which way you want to go is up to you.

Well, I’m running rt2800usb - I tried it earlier, it officially wasn’t working. Unlike before with rt2870, network manager wasn’t even picking up that a wireless device had been plugged or unplugged (at least I assume it’s network-manager that creates the notifications when you gain and lose internet access. I’m going to try a udev rule to see if I can get that to work.

Yup, worth a shot :wink:

If that works, please let me know.

Do you think it would help to add a line here:

gksudo gedit /etc/udev/rules.d/70-persistent-net.rules
ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="13b1", ATTR{idProduct}=="0031", RUN+="/sbin/modprobe -qba rt2800usb"

Already my udev rules have:

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="68:7f:74:e3:f6:4b", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="ra*", NAME="ra0"

I’m not sure what, if anything this line that is there accomplishing. But maybe I could call a driver.

OMS

Give me a while… I want to try something in a VM

OK. And thank you!

I did add that line to udev. As far as I can tell, it didn’t help. Here’s my udev code:

# This file was automatically generated by the /lib/udev/write_net_rules
# program, run by the persistent-net-generator.rules rules file.
#
# You can modify it, as long as you keep each rule on a single
# line, and change only the value of the NAME= key.

# PCI device 0x10de:0x03ef (forcedeth)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="50:e5:49:6a:d2:1d", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

# USB device 0x13b1:0x0031 (usb) OLD EFFORT DAS 2011-09-20
#SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="68:7f:74:e3:f6:4b", ATTR{dev_id}=="0x0", ATTR{type}=="1", #KERNEL=="ra*", NAME="ra0"

# USB device 0x13b1:0x0031 (usb)
ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="13b1", ATTR{idProduct}=="0031", RUN+="/sbin/modprobe -qba rt2800usb"

Let me respond to your previous response a bit more:

OK, it will be interesting to see what happens when you blacklist rt2870sta and modprobe rt2800usb... as rt2800usb on your kernel doesn't have the correct ID's built in.

After trying that, there are a couple of options…

a) try a different STA driver… your adapter seems to be an rt3072
Now though I can find NO info for your particular card online, a few people usin a SWEEX card based on the rt3072 seem to have had luck adding the device ID’s to the rt3070 drivers… so may be worth a shot.

b) move to a later kernel… problem with this is that the correct device ID’s aren’t in the 2.6.39 kernel either, which means moving to kernel >= 3.0 (I only know for sure they are in 3.1), vut this may introduce other problems, such as having to reload your graphics drivers… 3.1 works fine for me, but there are NO guarantees it will work (without issue) for you.

That said, you should still be able to boot the old kernel, if 3.1 gives you problems.

OR

You could just wait for Ubuntu 11.10, which will use kernel >=3.0 by default.

When you talk about kernel 2.6.39 - are you talking about of ubuntu? And what is kernel 3.0 - is that the version of Ubuntu that’s coming out next month?

I’m going to try rt3572 and after that, rt3070, so we’ll see what happens. The old rotating driver trick. Do you think SWEEX is worth a shot? Never heard of it - if you have the link where you’re reading, that may be helpful.

OMS

OK, try this…

Unplug the device, then run:

sudo modrope -r rt2870sta
sudo modprobe rt2800usb
sudo -s
echo 13B1 0031 > /sys/bus/usb/drivers/rt2800usb/new_id
exit

then plug in your device, and see if it works.

If it does, we’ll add it permanently.

The reason I used a capital B in 13B1 is that’s the way it’s listed in rt2800usb from kernel 3.1 … though I’m fairly sure case doesn’t matter.


When you talk about kernel 2.6.39 - are you talking about of ubuntu? And what is kernel 3.0 - is that the version of Ubuntu that's coming out next month?

No… think of the kernel as the core of OS … at the moment, Ubuntu 11.04 is using kernel 2.6.38 by default, but it is easy to upgrade that to 2.6.39

The kernel devolopers have changed the kernel naming convention after 2.6.39 to 3.0. 3.1 etc.

The next version of Ubuntu (11.10) will use kernel 3.0 (or maybe 3.1)

rt2800usb is part of the kernel (not a separate module like the STA drivers)… so you can’t add the ID’s before compiling the driver, you’d have to compile the whole kernel … but there is a way :slight_smile:

The kernel IS Linux … Ubuntu is a Linux “Distribution”, which consists of the Linux kernel, the GNU tool chain, and a lot of applications, all put together as a “Distribution”.

If you want to know more about the kernels job… see here:

and


Do you think SWEEX is worth a shot?

I think (but i’d have to check) the people who had cards made by SWEEX that used the same chip as yours (rt3072) were using the
2011_0407_RT3070_RT3370_RT5370_RT5372_Linux_STA_V2.5.0.2_DPO
driver, and adding their ID’s to the 3070 section.

Lost the damn link though… but I’ll see if I can find it again.

Thank you Mark

The advice you gave jamesrl worked on my ubuntu pc with kernel 2.6.35-31-generic.

It also worked on another xubuntu pc with kernel 3.0.0-14.

You’re more than welcome … and welcome to the forum :slight_smile:

Thanks Mark,

I really appreciate the fix you provided which enabled me (once again) to compile a driver for my RT2870 based wireless USB adapter (DWA140) on kernels >= 2.6.35.
I’m running Mepis 11 which has the 2.6.36 kernel.
Of course I searched and searched the net, begged Ralinktech to provide a newer source package that would support kernels >= 2.6.35. No dice… :-[
In the end I decided to installed the then current Debian 2.6.32 kernel and compiled/checkinstalled a .deb for that kernel. All went well of course…
Pure chance led me here and there it was: renamed usb functions as of 2.6.35 + a fix that enabled successfully compiling for newer kernels.

I’m happy to report that my DWA140 is happily humming along in M11 with its default Mepis kernel 2.6.36…:slight_smile:

Once again, thanks,

Ko