Lets start with the product, TP-LINK L-WN727N is a USB Wireless N Adapter, and it has 150Mbps throughput on 802.11n Wireless Networks, it uses the RT5370 Chipset from Ralink (Link). The price from a local store here in Greece is 8 Euros, which makes this adapter very attractive low-cost solution. You can read more on product’s specification page here
This thing was tough… it took me almost 10 hours of posts reading, downloads, installs, builds to find a clean and easy solution to make it work, but first i must thank the VirtualBox for its support, without it the procedure of installing/cloning would have took me more than 24 hours.
I think that the problem mainly caused by the kernel hardware support of Debian Squeeze which is too old to support this chipset because the same adapter works out of the box on Debian Wheezy which is currently in testing stage with newer kernel (3.2.5), but i dont like the idea of working on test releases. Anyway, The result is tested with latest Debian Squeeze 6.0.4-i386 installation.
Step 1: Gather The files
First we need the drivers which fortunately are available through chipset maker’s Ralink website, i have downloaded from this url the latest drivers which currently are the version 2.5.0.3, The downloaded filename is 2011_0719_RT3070_RT3370_RT5370_RT5372_Linux_STA_V2.5.0.3_DPO.bz2 which is wrong and it needs to be renamed to 2011_0719_RT3070_RT3370_RT5370_RT5372_Linux_STA_V2.5.0.3_DPO.tar.bz2 because it really is a tar archive compressed with bzip2.
Step 2: Compile and install the driver
After you have obtained the drivers file, put it in your box and do the following in order to uncompress/compile/install the driver:
root@debian:~# tar jxvf 2011_0719_RT3070_RT3370_RT5370_RT5372_Linux_STA_V2.5.0.3_DPO.tar.bz2 root@debian:~# cd 2011_0719_RT3070_RT3370_RT5370_RT5372_Linux_STA_V2.5.0.3_DPO root@debian:~/2011_0719_RT3070_RT3370_RT5370_RT5372_Linux_STA_V2.5.0.3_DPO# make root@debian:~/2011_0719_RT3070_RT3370_RT5370_RT5372_Linux_STA_V2.5.0.3_DPO# make install
Next, Download and install latest non-free ralink firmwares:
root@debian:~# wget http://ftp.gr.debian.org/debian/pool/non-free/f/firmware-nonfree/firmware-ralink_0.35_all.deb root@debian:~# dpkg -i firmware-ralink_0.35_all.deb
Now if everything finished without errors you are ready to plug in your usb adapter, and verify that the system “see” it and has loaded the needed modules, in my situation the output was:
root@debian:~# dmesg <----- TEXT OMMITED -----> [ 51.276088] usb 1-2: new full speed USB device using ohci_hcd and address 3 [ 51.951155] usb 1-2: New USB device found, idVendor=148f, idProduct=5370 [ 51.951159] usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [ 51.951162] usb 1-2: Product: 802.11 n WLAN [ 51.951163] usb 1-2: Manufacturer: TPlink [ 51.951165] usb 1-2: SerialNumber: 1.0 [ 51.953625] usb 1-2: configuration #1 chosen from 1 choice [ 52.046122] rtusb init rt2870 ---> [ 52.046354] [ 52.046354] [ 52.046355] === pAd = e1ec6000, size = 517232 === [ 52.046356] [ 52.047306] <-- RTMPAllocTxRxRingMemory, Status=0 [ 52.047409] <-- RTMPAllocAdapterBlock, Status=0 [ 52.054416] usbcore: registered new interface driver rt2870
root@debian:~# lsusb | grep 5370 Bus 001 Device 003: ID 148f:5370 Ralink Technology, Corp. RT5370 Wireless Adapter
root@debian:~# lsmod | grep 5370 rt5370sta 575832 0 usbcore 99329 5 rt5370sta,usbhid,ohci_hcd,ehci_hcd
Step 3: Configure WPA/PSK and Automatic activation on startup.
The created network device name is ra0, Ralink's driver doesnt need the help of wpasupplicant in order to join WPA/PSK networks, it has its own way to do this. After you plugged in the USB Adapter, the module dynamically created a configuration file for the adapter and stored in as /etc/Wireless/RT2870STA/RT2870STA.dat, now open it with your favorite editor and change the values below to match your setup:
SSID=<your-ssid> AuthMode=WPAPSK EncrypType=TKIP WPAPSK=<your wpa password>
If you want to start the wireless connection on system's startup, just add the below lines to your /etc/network/interfaces file:
auto ra0 iface ra0 inet dhcp
If you dont, add only the below line in your /etc/network/interfaces file:
iface ra0 inet dhcp
Now, you can "pull up" your connection manually from command line with the command:
root@debian:~# ifup ra0
or just reboot your machine to test it.
Thats it, i hope this guide will help some people out there who bought the same device or similar with the same chipset and trying to figure out how to use it in current Debian's stable release at least until Wheezy goes stable and this guide will get obsolete
Thanks mate, perfect guide.
Thanks also from my side, it was of great use to me.
Before compiling the module I changed the configuration file according to the README to use wpa-supplicant, had troubles without that before.
I followed all of ur instructions but when i reboot the system, my wifi adapter does not start. I cant start it manually either i keep getting this error.
Cannot find device ra0
Failed to bring up ra0
Ive been trying to get this crazy thing workin for a week, any help would be great thx
please verify that your dmesg, lsmod, lsusb outputs as mentioned in the post.
also verify that your /etc/network/interfaces file is ok you need to add at least:
I have the same issue….running the commands mentioned above I get the right outputs…how can I fix it?
I don’t set the RT2870STA.dat file because I have a WEP key network.
You need to set .dat file with the wep setting too, here are the settings for WEP:
inside /etc/Wireless/RT2870STA/RT2870STA.dat fill these settings to fit your setup
AuthMode=WEPAUTO
EncrypType=WEP
WPAPSK=
DefaultKeyID=1
Key1Type=0
Key1Str=<your WEP key>
When I execute ‘make’, I get an error message saying “/lib/modules/2.6.32-5-powerpc/build: No such file or directory. Stop.”
There is no build directory in /lib/modules/2.6.32-5-686/. Why?. (/lib/modules/2.6.32-5-686/build)
Please follow the guide as it goes, i have tested it many times, without errors:) you have forgotten something.
Good guide! Very simple! Installetion went flawlessly! The divice is recognised and working.
However when I get it connected, I get this:
Listening on LPF/ra0/00:0f:53:80:33:2c
Sending on LPF/ra0/00:0f:53:80:33:2c
Sending on Socket/fallback
DHCPDISCOVER on ra0 to 255.255.255.255 port 67 interval 8
DHCPDISCOVER on ra0 to 255.255.255.255 port 67 interval 9
DHCPDISCOVER on ra0 to 255.255.255.255 port 67 interval 21
DHCPDISCOVER on ra0 to 255.255.255.255 port 67 interval 11
DHCPDISCOVER on ra0 to 255.255.255.255 port 67 interval 12
No DHCPOFFERS received.
No working leases in persistent database – sleeping.
What would it be?
Update: iwlist ra0 scan shows connections available… Seems nm-applet doesn’t show the ra0 interface. How do i make it appear in nm-applet?
Check out the REAME file contained in the driver’s directory I think there is such options in the makefile but not sure
Sorry friend, I don’t understand French neither babel fish helped much to understand what you are saying.
If you are using Debian “squeeze” and NetworkManager and you see this error:
…blah
…blah
DHCPDISCOVER on ra0 to 255.255.255.255 port 67 interval 12
No DHCPOFFERS received.
No working leases in persistent database – sleeping.
make sure that:
1. You don’t add any mention of ra0 to your /etc/network/interfaces file:
iface ra0 inet dhcp <– don't add to /etc/network/interfaces file
because any mention of an interface (ra0, for example) in /etc/network interfaces will stop NetworkManager from handling the device.
See: http://wiki.debian.org/NetworkManager#NetworkManager_in_Squeeze
2. Follow the instructions in README_STA_usb to compile the driver for NetworkManager.
This is what worked for me."Wireless Networks (Ralink 802.11n wlan)" now shows up in NetworkManager
along with "Wireless Networks (Atheros AR9285 Wireless Network Adapter (PCI-Express))". Either interface can connect.
Hi, thanks for posting the steps.
I tried to compile the sources but I got the following error:
root@moe:/home/antonio/desarrollo/pgcomp/redes/driver/2011_0719_RT3070_RT3370_RT5370_RT5372_Linux_STA_V2.5.0.3_DPO# make
make -C tools
make[1]: se ingresa al directorio `/home/antonio/desarrollo/pgcomp/redes/driver/2011_0719_RT3070_RT3370_RT5370_RT5372_Linux_STA_V2.5.0.3_DPO/tools’
gcc -g bin2h.c -o bin2h
make[1]: se sale del directorio `/home/antonio/desarrollo/pgcomp/redes/driver/2011_0719_RT3070_RT3370_RT5370_RT5372_Linux_STA_V2.5.0.3_DPO/tools’
/home/antonio/desarrollo/pgcomp/redes/driver/2011_0719_RT3070_RT3370_RT5370_RT5372_Linux_STA_V2.5.0.3_DPO/tools/bin2h
cp -f os/linux/Makefile.6 /home/antonio/desarrollo/pgcomp/redes/driver/2011_0719_RT3070_RT3370_RT5370_RT5372_Linux_STA_V2.5.0.3_DPO/os/linux/Makefile
make -C /usr/src/linux SUBDIRS=/home/antonio/desarrollo/pgcomp/redes/driver/2011_0719_RT3070_RT3370_RT5370_RT5372_Linux_STA_V2.5.0.3_DPO/os/linux modules
make[1]: se ingresa al directorio `/usr/src/linux-3.0.31′
CC [M] /home/antonio/desarrollo/pgcomp/redes/driver/2011_0719_RT3070_RT3370_RT5370_RT5372_Linux_STA_V2.5.0.3_DPO/os/linux/../../os/linux/sta_ioctl.o
/home/antonio/desarrollo/pgcomp/redes/driver/2011_0719_RT3070_RT3370_RT5370_RT5372_Linux_STA_V2.5.0.3_DPO/os/linux/../../os/linux/sta_ioctl.c:2227: error: unknown field ‘private’ specified in initializer
/home/antonio/desarrollo/pgcomp/redes/driver/2011_0719_RT3070_RT3370_RT5370_RT5372_Linux_STA_V2.5.0.3_DPO/os/linux/../../os/linux/sta_ioctl.c:2227: warning: initialization from incompatible pointer type
/home/antonio/desarrollo/pgcomp/redes/driver/2011_0719_RT3070_RT3370_RT5370_RT5372_Linux_STA_V2.5.0.3_DPO/os/linux/../../os/linux/sta_ioctl.c:2228: error: unknown field ‘num_private’ specified in initializer
/home/antonio/desarrollo/pgcomp/redes/driver/2011_0719_RT3070_RT3370_RT5370_RT5372_Linux_STA_V2.5.0.3_DPO/os/linux/../../os/linux/sta_ioctl.c:2228: warning: excess elements in struct initializer
/home/antonio/desarrollo/pgcomp/redes/driver/2011_0719_RT3070_RT3370_RT5370_RT5372_Linux_STA_V2.5.0.3_DPO/os/linux/../../os/linux/sta_ioctl.c:2228: warning: (near initialization for ‘rt28xx_iw_handler_def’)
/home/antonio/desarrollo/pgcomp/redes/driver/2011_0719_RT3070_RT3370_RT5370_RT5372_Linux_STA_V2.5.0.3_DPO/os/linux/../../os/linux/sta_ioctl.c:2229: error: unknown field ‘private_args’ specified in initializer
/home/antonio/desarrollo/pgcomp/redes/driver/2011_0719_RT3070_RT3370_RT5370_RT5372_Linux_STA_V2.5.0.3_DPO/os/linux/../../os/linux/sta_ioctl.c:2229: warning: excess elements in struct initializer
/home/antonio/desarrollo/pgcomp/redes/driver/2011_0719_RT3070_RT3370_RT5370_RT5372_Linux_STA_V2.5.0.3_DPO/os/linux/../../os/linux/sta_ioctl.c:2229: warning: (near initialization for ‘rt28xx_iw_handler_def’)
/home/antonio/desarrollo/pgcomp/redes/driver/2011_0719_RT3070_RT3370_RT5370_RT5372_Linux_STA_V2.5.0.3_DPO/os/linux/../../os/linux/sta_ioctl.c:2230: error: unknown field ‘num_private_args’ specified in initializer
/home/antonio/desarrollo/pgcomp/redes/driver/2011_0719_RT3070_RT3370_RT5370_RT5372_Linux_STA_V2.5.0.3_DPO/os/linux/../../os/linux/sta_ioctl.c:2230: warning: excess elements in struct initializer
/home/antonio/desarrollo/pgcomp/redes/driver/2011_0719_RT3070_RT3370_RT5370_RT5372_Linux_STA_V2.5.0.3_DPO/os/linux/../../os/linux/sta_ioctl.c:2230: warning: (near initialization for ‘rt28xx_iw_handler_def’)
make[2]: *** [/home/antonio/desarrollo/pgcomp/redes/driver/2011_0719_RT3070_RT3370_RT5370_RT5372_Linux_STA_V2.5.0.3_DPO/os/linux/../../os/linux/sta_ioctl.o] Error 1
make[1]: *** [_module_/home/antonio/desarrollo/pgcomp/redes/driver/2011_0719_RT3070_RT3370_RT5370_RT5372_Linux_STA_V2.5.0.3_DPO/os/linux] Error 2
make[1]: se sale del directorio `/usr/src/linux-3.0.31′
make: *** [LINUX] Error 2
Could you please give any hint?
Linux moe 2.6.32-5-686 #1 SMP Sun Sep 23 09:49:36 UTC 2012 i686 GNU/Linux
Best regards
Antonio
Hello, Probably some libraries missing… and you are using 3.x kernel i have made the default debian squeeze kernel
u can use the patch http://www.mediafire.com/download/fezezv1u28y7eey/rt2870-mt7601Usta-kuid_t-kgid_t.patch
and after the command cd 2011_0719_RT3070_RT3370_RT5370_RT5372_Linux_STA_V2.5.0.3_DPO
type the command patch -p0 <~/rt2870-mt7601Usta-kuid_t-kgid_t.patch
and now type make and follow the above procedure
Work like a charm on debian stable with kernel 3.2.0-0.bpo.4-amd64 from backport.
Thank you so much for this. I was pulling my hair out before I found this guide. Thank you thank you thank you.
Wow! This worked great! I got one of these for my litecoin mining box and after a ton of messing around these are the only instructions that really worked.
Since the blog post is pretty old, the download locations have moved. I got the
2011_0719_RT3070_RT3370_RT5370_RT5372_Linux_STA_V2.5.0.3_DPO.bz2
from:
http://code.google.com/p/arcon/downloads/detail?name=2011_0719_RT3070_RT3370_RT5370_RT5372_Linux_STA_V2.5.0.3_DPO.bz2
and firmware-ralink_0.35_all.deb from:
http://ftp.twaren.net/Linux/Debian/debian/pool/non-free/f/firmware-nonfree/firmware-ralink_0.35_all.deb
Finally to get it to connect to my Apple Airport Extreme, I had to tweak some settings. It is using WPA2 encryption so:
In /etc/Wireless/RT2870STA/RT2870STA.dat .. i set:
AuthMode=WPA2PSK
EncrypType=AES
Then it worked like a charm! Thanks for the blog post!
I don’t know where to start from, these are all technical terms……wooo am locked up.