# Linksys WUSB600n v2 & 2.6.33 [update] [ebuild]

## asturm

The device in question is a WLAN USB stick from Linksys, containing a Ralink rt2870 chip. Support for these, although experimental, has existed for some time in the kernel, and on Dec 28nd finally the device string of this particular Linksys stick was committed to the ongoing 2.6.33 development.

```
--- a/drivers/net/wireless/rt2x00/rt2800usb.c

+++ b/drivers/net/wireless/rt2x00/rt2800usb.c

@@ -922,6 +922,7 @@ static struct usb_device_id rt2800usb_device_table[] = {

        { USB_DEVICE(0x1737, 0x0070), USB_DEVICE_DATA(&rt2800usb_ops) },

        { USB_DEVICE(0x1737, 0x0071), USB_DEVICE_DATA(&rt2800usb_ops) },

        { USB_DEVICE(0x1737, 0x0077), USB_DEVICE_DATA(&rt2800usb_ops) },

+       { USB_DEVICE(0x1737, 0x0079), USB_DEVICE_DATA(&rt2800usb_ops) },

        /* Logitec */

        { USB_DEVICE(0x0789, 0x0162), USB_DEVICE_DATA(&rt2800usb_ops) },

        { USB_DEVICE(0x0789, 0x0163), USB_DEVICE_DATA(&rt2800usb_ops) },
```

I tried it while it was hot, and got disappointed - it wouldn't work. Now, after some weeks, I tried again with 2.6.33_rc6 only to find that it would still not like that stick, dmesg showing that error:

```
[  122.073230] phy1 -> rt2800_init_eeprom: Error - Invalid RT chipset detected.

[  122.073240] phy1 -> rt2x00lib_probe_dev: Error - Failed to allocate device.
```

In the meantime I also bumped the driver to the latest commit that I could find inside the rt2x00 git repository, without effect.

I also tried the rt2870sta (staging) driver from 2.6.33, and while it didn't even contain the needed device string for the WUSB600n v2 until I added it manually, at least it got me a shining blue LED on the stick. But there were some other issues as well printed in dmesg, and anyway I'd prefer the in-kernel driver system before fiddling around with the staging driver since support seems to be at least intended as shown by the device string.

The rather tight-lipped Gentoo Wiki didn't make it clear whether you still have to add an external firmware to make the driver work or not, but then it isn't yet on par with the latest developments, so how should it.

I'm tempted to write to the kernel mailing list, but just to make sure it isn't simply all my fault... is someone else struggling to make that piece of hardware work on their system or is there in fact a convenient solution I have yet managed to overlook?

Update: Found a buzgilla entry here and modified the ebuild for RT3572, so that other Gentoo users can test it on their system. Even though I couldn't get it running properly yet.

----------

## asturm

*bump*

No one else here with such a stick?  :Wink: 

----------

## d029940

Hello,

I am not a Gentoo user. I use Ubuntu instead. Nevertheless I had a similar problem.

I followed the advice of the the link: http://www.linux-club.de/viewtopic.php?f=19&t=107288&start=0  - and I succeded.

Since it is in German, I try to translate:

"Linksys WUSB600N ver2

Beitragvon mkossmann am 31. Dez 2009, 11:36"

Version 2 is using chip RT3572 ( no more RT2870) and identifies itself as USB ID 1737:0079.

Do the following:

1. Get the driver from  Ralink (http://www.ralink.com.tw/support.php?s=2). Download driver package RT3572USB (Currently  2009_1222_RT3572_LinuxSTA_V2[1].3.0.0.tar.bz2)

2. Unpack archive "tar xjf 2009_1222_RT3572_LinuxSTA_V2[1].3.0.0.tar.bz2" and change directory into 2009_1214_RT3572_LinuxSTA_V2.3.0.0 

3. In file os/linux/config.mk 

- set "Support Wpa_Supplicant": HAS_WPA_SUPPLICANT=y

- set "Support Native WpaSupplicant for Network Manager":  HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=y

4. Add in file common/rtusb_dev_id.c the USB ID of the adapter:

...

            {USB_DEVICE(0x1690,0x0744)}, /* 3572 */

            {USB_DEVICE(0x5A57,0x0284)}, /* Zinwell 3572 */

            {USB_DEVICE(0x167B,0x4001)}, /* 3572 */

    +       {USB_DEVICE(0x1737,0x0079)}, /* WUSB600Nv2 */    <--- add this line

    #endif // RT35xx //

            { }/* Terminating entry */

5. Do the following:

- make

- make install (as admin)

--> driver module rt3572sta.ko is now  available

6. insert USB adapter and check with "lsusb"

7. modprobe rt3572sta (as admin) and check with iwconfig if interface ra0 is available. Maybe you need to restart your network. In Ubuntu you would do:

- sudo /etc/init.d/networking restart

- sudo restart network-manager

If you are at that point, the adapter in principle works.

There may be some changes needed in /etc/Wireless/RT2860STA/RT2860STA.dat (documentation can be found in the README file)

Also, sometimes it may help, if you blacklist some or all of the following modules in /etc/modprobe.d/blacklist.conf

- blacklist rt2x00usb

- blacklist rt2x00lib

- blacklist rt2800usb

- blacklist rt2870sta

To load the driver permanently you can add tr3572sta at the end of /etc/modules. (There may be more elegant ways like writing udev rules)

Hope you get you WLAN-USB stick running. Mine is working in n-mode at both bands (2.5 and 5 GHz).

----------

## asturm

Thanks a lot for your help, somehow I wasn't able to find that link myself.  :Smile: 

I'll also understand the German instructions very well, but your short summary is most appreciated.  :Wink: 

EDIT: rt3572sta just made kernel 2.6.32.2 oops away during connect. It wouldn't build against latest 2.6.33. As an Ubuntu user, I suppose you are on 9.10 with kernel 2.6.31?

EDIT #2: Ok, just oopsed again on 2.6.31.12 while trying to connect to the AP with WPA2. Might be kernel option related.  :Sad: 

----------

## d029940

Yes, you are right. I am using Ubuntu 9.10, kernel 2.6.31-19-generic.

This kernel worked out of the box. Only needed to compile the driver module.

In Ubuntu the configuration file is at /etc/Wireless/RT2870STA/RT2870STA.DAT

I only changed the following settings:

#The next 4 settings are for people living in Germany

CountryRegion=1

CountryRegionABand=1

CountryCode=DE

ChannelGeography=1

# let SSID blank, so that all wireless networks show up in the Gnome network-manager-applet 

# if you always connect to the same wireless network, you can set SSID to that network

SSID=

NetworkType=Adhoc

Authmode=WPA2

EncrypType=AES

Hope that helps

----------

## himpierre

Works for me. Ralink Driver (with the adjusted USB ID) and Kernel 2.6.33.

----------

## asturm

Are you connecting to WPA2 networks?

staging or kernel drivers?

----------

## himpierre

WPA2/AES. Kernel Driver from Ralink Page.

----------

## gerardo

Maybe I'm just being really ridiculous right now, but I had the rt61pci driver working before in kernel 5.6.31 and in kernel 2.6.33 I had to disable CONFIG_CFG80211_DEFAULT_PS (= option "enable powersave by default") in kernelconfig.

----------

## nlsa8z6zoz7lyih3ap

Any progress in this and related matters?

Having  read everything that I can find, I managed to get my device recognized. Further, wicd-gtk

correctly scans and identifies wifi networks in my area, on both 2.4 and 5GHZ.  However my attempts to connect to my own network always result in a kernel oops,

even when I disable security on my network for testing purposes. I and running a gentoo 2.6.31 kernel on an amd64 system,

I would love to get this working.  It is somewhat mysterious that some people succeed and others fail, for reasons that are never clear.

Thanks in advance for any comments on the latest.

----------

## Alex Libman

FYI: an update from a Fedora forum:

The driver seems to be disliked by GCC v4.5...

----------

## anaxichex

&nbsp;(Successful) Experience Dump:

I've spent weeks going through every thing out there that had "WUSB600N V2" in there somewhere, some notes from the experience:

-I have a rock solid, stable connection. Best ever. Totally worth the metaphorical broken keyboards and the forehead bruises  :Very Happy:   :Very Happy: 

-From what I see, 5G is mandatory. I never got a stable signal over 2.4G, after trying everything with that first. 

Make this an excuse to go out and buy a nice shiny new dual band router.  :Smile: 

-Either the driver or the stick doesn't fully support 5G Wireless-N, and falls back to 802.11A for some things. You must enable *mixed* 802.11A/N support in your router, or it will endlessly attempt connections and fail miserably. Especially y'all with DD-WRT firmware, take heed.

Play-by play:

1. In summary: Kernel settings...phew...er...I kinda let God sort it out, e.g. what I have happened to work and I changed settings recklessly till it did. Try at step 2, and if that don't work, here's what I'm pretty sure made a difference (or seems solid in general):

-I have Kernel 2.6.36-gentoo-r3, with manually applied the ck-patchset. YMMV.

General setup  --->  

 [*] BSD Process Accounting 

   [ ]   BSD Process Accounting version 3 file format 

 [*]   Network namespace  

 [*] Disable heap randomization  

 Choose SLAB allocator (SLAB)  --->

    (important...Default in 2.6.36 is SLUB....it definitely breaks 3rd party stuff)

Processor type and features  ---> 

  [ ] Tickless System (Dynamic Ticks)  

[*] Networking support  ---> 

  <M>   RF switch subsystem support  ---> 

[*] Networking support  ---> -*-   Wireless  --->(here I'm just putting my settings verbatim)

    <M>   cfg80211 - wireless configuration API

    [ ]     nl80211 testmode command

    [ ]     enable developer warnings

    [ ]     cfg80211 regulatory debugging

    [ ]     enable powersave by default

    [*]     cfg80211 wireless extensions compatibility

    [*]   Wireless extensions sysfs files

   {M}   Common routines for IEEE802.11 drivers 

    [ ]   lib80211 debugging messages

    <M>   Generic IEEE 802.11 Networking Stack (mac80211)

    Default rate control algorithm (Minstrel)  ---> 

    [*]   Enable mac80211 mesh networking (pre-802.11s) support

    -*-   Enable LED triggers

    [*]   Select mac80211 debugging features  ---> 

          [*]   Do not inline TX/RX handlers

Device Drivers  ---> 

    <M> Connector - unified userspace <-> kernelspace linker  --->

    (If you use uvesafb for frame buffer, this makes it fail and drop to VGA, IIRC)

    (I'm not sure if above is important or not)

Device Drivers  --->  [*] Network device support  --->

  <M>   Universal TUN/TAP device driver support

  [*]   Wireless LAN  --->

     <M>   Ralink driver support  --->

          <M>   Ralink rt2800 (USB) support (EXPERIMENTAL)

                 (and then just * all the sub-options)

Device Drivers  --->  [*] USB support  ---> 

   [*]     USB device filesystem (DEPRECATED)

   [ ]     USB device class-devices (DEPRECATED) 

   <*>     USB Monitor

   <M>   USB LED driver support 

Device Drivers  ---> <*> Real Time Clock  --->

      [*]   /dev/rtcN (character devices)

Kernel hacking  --->

    [ ] Allow gcc to uninline functions marked 'inline'

2. Go to Ralink. http://www.ralinktech.com/support.php?s=2

3. get the "RT3572USB" driver and the "Firmware RT28XX/RT30XX USB series (RT2870/RT2770/RT3572/RT3070)"

4. Extract the RT2870.bin file to /lib/firmware.

5. Extract the drivers whereever.

6. Top of /Makefile should look like:

RT28xx_MODE = STA

TARGET = LINUX

CHIPSET = 3572

OSABL = NO

7. in /os/linux/config.mk, the top should look like:

# Support ATE function

HAS_ATE=n

# Support QA ATE function

HAS_QA_SUPPORT=n

# Support XLINK mode

HAS_XLINK=n

# Support Wpa_Supplicant

HAS_WPA_SUPPLICANT=y

# Support Native WpaSupplicant for Network Maganger

HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=y

#Support Net interface block while Tx-Sw queue full

HAS_BLOCK_NET_IF=n

#Support DFS function

HAS_DFS_SUPPORT=n

#Support Carrier-Sense function

HAS_CS_SUPPORT=n

# Support for Multiple Cards

HAS_MC_SUPPORT=n

#Support for IEEE802.11e DLS

HAS_QOS_DLS_SUPPORT=y

#Support for EXT_CHANNEL

HAS_EXT_BUILD_CHANNEL_LIST=n

#Support for Net-SNMP

HAS_SNMP_SUPPORT=n

#Support features of 802.11n Draft3

HAS_DOT11N_DRAFT3_SUPPORT=y

#Support features of Single SKU. 

HAS_SINGLE_SKU_SUPPORT=n

#Support features of 802.11n

HAS_DOT11_N_SUPPORT=y

HAS_KTHREAD_SUPPORT=y

#Support statistics count

HAS_STATS_COUNT=y

#Client support WDS function

HAS_CLIENT_WDS_SUPPORT=n

#Support for Bridge Fast Path & Bridge Fast Path function open to other module

HAS_BGFP_SUPPORT=n

HAS_BGFP_OPEN_SUPPORT=n

#Support MAC80211 LINUX-only function

HAS_CFG80211_SUPPORT=n

#Support RFKILL hardware block/unblock LINUX-only function

HAS_RFKILL_HW_SUPPORT=n

HAS_RESOURCE_PRE_ALLOC=n

8. edit  os/linux/rt_linux.h (pretty sure this is for kernel-2.6.35+)

-find the usb_alloc_buffer (...blah blah...) function call and and change it to usb_alloc_coherent (...)

-edit the line below it to say usb_free_coherent (...blah...)  

If you did this already, DOUBLE CHECK! there is some post out there on the some ubuntard or something forum that instructs you to put usb_alloc_coherent twice, which of course leads to memory leaks, kernel oops, etc.

9. Do the things d029940 wrote about above.... blacklist usb2800 and friends, and add the v2 line to rtusb_dev_id (easy to miss: make sure that this line is inside the  #ifdef RT35xx block, and not the #ifdef RT30xx block.)

10. follow the gentoo wiki to configure wpa_supplicant. My /etc/conf.d/net has the following:

modules=( "wpa_supplicant" )

wpa_supplicant_ra0="-Dwext"

11. It may stabilize 2.4G somewhat to go into /etc/Wireless/RT2870STA/RT2870STA.dat and delete everything. For 5G just leave it be.

12. If your ISP is IPv4 only, disable ipv6...go into /etc/modprobe.d/aliases.conf and put "alias net-pf-10 off".

----------

