rt2800usb driver problem

Hi everyone,

I have bought a usb wifi dongle with the rt2800 chipset. Unfortunately I can’t figure out how to make it work.

I have done a opkg install kernel-module-rt2800usb and a opkg install linux-firmware --force-overwrite and then reboot.

But when I do ifup wlan0 I’ve got :

Could not read interface wlan0 flags: No such device
Failed to initialize driver interface
ifconfig: SIOCGIFFLAGS: No such device

Here is what i get with dmesg :

[ 0.683179] Waiting for root device /dev/mmcblk0p2…
[ 0.716146] usb 1-1: New USB device found, idVendor=148f, idProduct=2770
[ 0.716170] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 0.716189] usb 1-1: Product: 802.11 n WLAN
[ 0.716203] usb 1-1: Manufacturer: Ralink
[ 0.716216] usb 1-1: SerialNumber: 1.0
[ 0.738147] mmc0: host does not support reading read-only switch. assuming write-enable.

Could you explain me how to make it work? I have searched and found some tutorials but nothing is actually working.

Thank you in advance.

PS : I’m on angstrom linux

Bonjour Soranne,

I have just done the same thing on Beagleboard_XM using OpenEmbeedded-core, Angstrom 2012.05 and Linux Kernel 3.2.18. Hopefully that’s similar to yourself.
It’s not clear if you are using an image downloaded from a website or if you have built it yourself, so again there might be some differences.

The default build that I initially made did not have the various kernel modules built into the kernel, so these needed to be loaded by hand. You can check by typing “lsmod” which lists the modules that have already been loaded.
Check to see if the ones below are in the list. If not then I load them with the following:

insmod /lib/modules/3.2.18/kernel/net/rfkill/rfkill.ko
insmod /lib/modules/3.2.18/kernel/net/wireless/lib80211.ko
insmod /lib/modules/3.2.18/kernel/net/wireless/cfg80211.ko
insmod /lib/modules/3.2.18/kernel/net/mac80211/mac80211.ko
insmod /lib/modules/3.2.18/kernel/net/lib/crc-ccitt.ko
insmod /lib/modules/3.2.18/kernel/drivers/net/wireless/rt2x00/rt2x00lib.ko
insmod /lib/modules/3.2.18/kernel/drivers/net/wireless/rt2x00/rt2x00usb.ko
insmod /lib/modules/3.2.18/kernel/drivers/net/wireless/rt2x00/rt2800lib.ko
insmod /lib/modules/3.2.18/kernel/drivers/net/wireless/rt2x00/rt2800usb.ko

If you recheck with lsmod, you should now see these in the list.

I’ve also downloaded the RT2870_V22 firmware from the Ralink website and copied it into /lib/firmware.

For setting up the network security, you need to edit the wpa_supplicant.conf file in /etc and this will be specific to your network (So setup the SSID and any encryption key). Look for the “network” section in the file, it has lots of helpful comments.

Finally you might have to edit the /etc/network/interfaces file if you need to change from dhcp to static or similar.

Now when I type ifup wlan0 it discovers the network and starts working.

I found Jerrill’s blog most useful here, it takes you step by step through the problems that he encountered (which encouraged me because it isn’t a simple “do this and it works”).
http://groups.google.com/group/beagleboard/browse_thread/thread/38bc72ddf999426d)?pli=1
It’s worth reading through (more than once).

One note, I then tried to build the kernel modules (*.ko) so that they were built into the linux kernel, but when you do that rfkill appears to have a widely reported issue. (Search rfkill on this forum). So I currently run with KO’s and load them with a script at startup.

I hope some of this helps.

Zigs

First thanks a lot for your answer! :slight_smile:

These line worked :
insmod /lib/modules/3.2.5+/kernel/net/rfkill/rfkill.ko
insmod /lib/modules/3.2.5+/kernel/net/wireless/lib80211.ko
insmod /lib/modules/3.2.5+/kernel/net/wireless/cfg80211.ko
insmod /lib/modules/3.2.5+/kernel/net/mac80211/mac80211.ko

But i have problems with the others :

root@beaglebone:/lib/modules# insmod /lib/modules/3.2.5+/kernel/net/lib/crc-ccitt.ko
insmod: can’t read ‘/lib/modules/3.2.5+/kernel/net/lib/crc-ccitt.ko’: No such file or directory

root@beaglebone:/lib/modules# insmod /lib/modules/3.2.14/kernel/drivers/net/wireless/rt2x00/rt2x00usb.ko
insmod: error inserting ‘/lib/modules/3.2.14/kernel/drivers/net/wireless/rt2x00/rt2x00usb.ko’: -1 Invalid module format

Maybe I should download some some packages but which ones?

Thanks a lot! :slight_smile:

Hi Soranne

So I’m guessing that you are not building your own version and are downloading a prebuilt image. Could you confirm ?

So the first observation is that it looks like you are running linux kernel 3.2.5+. In that case the second failing command may be failing because you are pointing at /lib/modules/3.2.14 (which probably doesn’t exist).

It would be worth having a look around in your directories to see if you have the relevant files, perhaps try using find to locate the files. For example, if you

cd /lib/modules
find . -name crc-ccitt.ko

This will search for the relevant file in directories below the one you are in. (Might take 30 seconds or so).

Try the same with the other files that you need to insmod and adapt the commands appropriately. In any case I recommend looking aroung /lib/modules/3.2.5+ to see what is there.

You can “opkg install crc-ccitt” if it’s missing.

I build my own distribution using Openembedded-core/Bitbake and I add the recipe task-base-wifi at the top level which gives me the bits I need.
The key packages that get installed by this are:

wireless-tools
wpa_supplicant

It’s possible that either of these also install crc-ccitt as well. You probably need to install these too.

Good luck, hope this moves you on a bit.
Zigs

Apologies, “wpa_supplicant” should read “wpa-supplicant”.

Thanks again for your answer :slight_smile:

Yes I have a prebuilt image on my sd-card.

The thing is I have two directories in /lib/modules/ : 3.2.14 and 3.2.5+ , some modules are in one the others in the other directory.

root@beaglebone:~# opkg install crc-ccitt
Unknown package ‘crc-ccitt’.
Collected errors:
* opkg_install_cmd: Cannot install package crc-ccitt.

I installed wpa-supplicant and wireless-tools.

root@beaglebone:~# cd /lib/modules
root@beaglebone:/lib/modules# find . -name crc-ccitt.ko
root@beaglebone:/lib/modules#

I’m trying to google things to figure something out for the moment.
But BIG thanks to you for helping me :slight_smile:

No problem, I just went through this pain about two weeks ago and got lots of help to get me working.
In Linux it appears that there is an infinite amount of things to learn. But it also means that you shouldn’t take everything I suggest as 100% accurate, just my impression of how it works.

So, it’s possible that modules intended for different versions of linux kernel are installed in your file system, it would be good to know which version of linux you are running. Type “uname -a” to find out.

I don’t know if modules for one version will work with another (I suspect in some cases they might, but it’s best only to use the right ones if you have a choice). That is to say, if you are running 3.2.5, then avoid modules built for 3.2.14 if you can.

I’m not sure why “opkg install crc-ccitt” doesn’t work for you. it might be worth trying “opkg update” first and then trying again.

I’m working on beagleboard, and I don’t know if there is an important difference between it and beaglebone, but if I look at Jerrill’s notes (Dec 28th 8:55pm) his module list does not include crc-ccitt, so perhaps you don’t need it with beaglebone.

http://groups.google.com/group/beagleboard/browse_thread/thread/38bc72ddf999426d)?pli=1

Bon Chance, and post the answer when you get it working, you might just help someone else.

Zigs

opkg install kernel-module-crc-ccit

When in doubt:

opkg list | grep crc

Thank you for your answers Ziggy and Koen Kooi.

I did an opkg update and then :

root@beaglebone:~# opkg install crc-ccitt
Unknown package ‘crc-ccitt’.
Collected errors:
* pkg_get_installed_files: Failed to open //var/lib/opkg/info/perl-module-pluggable.pm.list: No such file or directory.
* opkg_install_cmd: Cannot install package crc-ccitt.
root@beaglebone:~# opkg install kernel-module-crc-ccitt
Unknown package ‘kernel-module-crc-ccitt’.
Collected errors:
* pkg_get_installed_files: Failed to open //var/lib/opkg/info/perl-module-pluggable.pm.list: No such file or directory.
* opkg_install_cmd: Cannot install package kernel-module-crc-ccitt.
root@beaglebone:~# opkg list | grep crc
root@beaglebone:~#

So I guess I will have to compile crc-ccitt myself?

root@beaglebone:~# uname -a
Linux beaglebone 3.2.5+ #1 Mon Feb 13 19:22:44 CET 2012 armv7l GNU/Linux

The other problem is that

opkg install kernel-module-rt2x00lib
Package kernel-module-rt2x00lib (3.2-r10d+gitre8004dad869568692ca2a45c04e8464ce48cc4d7) installed in root is up to date.

this installs modules for 3.2.14 whereas I’m using 3.2.5+…

Hi Soranne,

Getting towards the limit of my knowledge I’m afraid.

The fact that opkg cannot find the list of installed files "pkg_get_installed_files: Failed to open //var/lib/opkg/info/perl-module-pluggable.pm.list: No such file or directory." is worrying. Suggests to me that opkg may be broken in some way.

If you are able to rebuild the whole thing then adding the following parts to the recipe might help:

wireless-tools
wpa_supplicant

Sorry I can’t help further.

Zigs