I’m not very keen on hardware to be honest. Recently as my netstorage harddrive accidentally broke down, I decided to replace it for a brand-new minibarebone. I ended up buying lots of stuff, even a new monitor 😛 Together with the whole pack I also acquired an USB wireless device. It was an Edimax card, most likely a piece of hardware from just another Taiwanese vendor…

Initially I couldn’t get it working. It was a great surprise for me finding out there were drivers for Linux available at Edimax website. The drivers are published under the GPL license. Actually the only way to install the wireless card driver on Linux was by downloading the source code and compile it. Unfortunately it seems the vendor does not catch up with the pace of kernel development and the drivers were kind of outdated, in other words, didn’t compile successfully (you may want to check the UPDATE section at the end of this post before continuing).

The card was an Edimax 7711, featuring a Ralink rt3070sta chipset, a chipset widely available in other card models (actually according to Wikipedia Ralink claims to hold 12% of the World Wide WLAN chipset market). The rt2870sta module, available since 2.4 linux kernels, is also compatible with rt3070sta. Doing a lsmod, I could easily check what driver was being loaded.

After googling a bit I found out the problem why the card was not working was that rt2870sta driver has conflicts with the rt28000usb module (also being loaded at the same time). The solution was to **blacklist rt2800usb **preventing it to be loaded at boot time.

First, do a lsmod so you can check both rt2800usb and rt2870sta drivers are loaded.

lsmod | grep ^RT28
rt2870sta
rt2800usb

Before that is also convenient to check your USB wireless card is being detected. My card is a 7711 model, so I grep by 7711.

lsusb -v | grep -A 10 7711

The command above should return something. You can simlpy do a lsusb -v, and flick through the results searching for WLAN string, for instance.

The 7711 uses the rt2870sta driver. There are other models of cards using this module too.Type modinfo rt2870sta to get a list of all hardware models compatible with this driver. For instance, grepping by 7711 in my case, should return something.

modinfo rt2870sta | grep 7711

returns,

alias:          usb:v7392p7711d*dc*dsc*dp*ic*isc*ip*

At this point we’re certain of two things:

  • USB card is connected.
  • Card model, Edimax 7711 in my case, is supported by the rt2870sta driver.

We also know that both rt2870sta and rt2800usb drivers are being loaded, but they are not capable of working together, so it’s necessary to disable rt2800usb.

Edit */etc/modprobe.d/blacklist.conf *and add:

# Wireless usb card
blacklist rt2800usb

As with many hardware configuration and settings I’m certain I won’t come up with this very same problem again in the future, eventually all the stuff related with this misconfiguration problem will be sorted out in a new distro or kernel release, but just hope this knowledge can be useful for others. As for me, I have learned a couple of Linux commands I was not aware of. The intuitive lsusb (list usb), modinfo and the blacklist concept (this has to be new as I don’t recall using it when enabling sound in Linux was a real challenge :)).

UPDATE: Actually the drivers at Edimax website are outdated. Ralink has an updated version of the 3070 chipset drivers compatible with Linux kernels above 2.6.29v [Linux drivers avalable at Ralink website].