Ubuntu 10.04上腾达W541U V2.0 无线网卡驱动的使用


备用记录待测试。

买了块腾达的Tenda W541U V2.0的无线网卡,当时没想到要在Linux下用,回来后才发现驱动问题比较麻烦,官方不提供Linux下的驱动,网上的解决方案没有试成功的,很是郁闷。

给Tenda的技术支持写过信,给到了一个驱动,但没有说具体编译的细节,自己试着编译出一个.o文件,lsmod后还是检测不到无线网卡。再写信就无回音了。可能这个问题很好解决,但自己确实搞不定。

前两天到Ubuntu论坛网站上去看,发现老外的一篇贴子,说是解决了这个问题,按照相应步骤试了一下,果然编译了可以使用的驱动,现将步骤和应注意事项总结如下,还希望能帮助和我一样用Tenda W541U V2.0(这个型号我现在是倒背如流了)无线网卡的人!

标题是:Tenda W541U V2.0 Wireless USB Adapter / Ralink RT2070

具体的流程大家可以参考贴子上的步骤进行,我只是简单的总结一下流程与要需注意的地方:

一、需求:

1 硬件:
无线网卡型号:
Tenda W541U V2.0 Wireless USB Adapter ( Ralink RT2070L Chipset)

在命令终端里输入:lsusb
关于无线网卡的内容应该是类似于以下:
Bus 001 Device 003: ID 148f:2070 Ralink Technology, Corp.
其中ID 后面必须是148f:2070 ,如果不是,不能保证后面是否成功。|

2 驱动下载:(LinuxIDC.com的FTP里)
RT3070USB(RT307x)

二、步骤:
注意: 以下操作凡是因权限问题而未执行的,请在前面加上sudo再次尝试!
1. 下载RT3070USB driver(上面的网址)
2. 解压:
#sudo tar jxvf 2009_0525_RT3070_Linux_STA_v2.1.1.0.bz2
3 在 os/linux下的usb_main_dev.c 里的#ifdef RT3070下面增加以下语句:
{USB_DEVICE(0x148F,0x2070)}, /* Ralink 2070L */
4 编译模块:
回到刚开始的目录,即解决完进入的第一层目录:
cd ../..
make
5 如果编译成功,则安装:|
make install
如果编译不成功,且你的LINUX 内核版本高于等于2.6.31 的情况,比如最新的Ubuntu 10.04,请到步骤11查看并处理!

6 COPY .DAT文件到 /etc/Wireless,copy .bin 到 /lib/firmware

#mkdir -p /etc/Wireless/RT2870STA
#cp RT2870STA.dat /etc/Wireless/RT2870STA/
#apt-get install tofrodos
#dos2unix /etc/Wireless/RT2870STA/RT2870STA.dat
#chmod +x /etc/Wireless/RT2870STA/RT2870STA.dat

#cp common/rt2870.bin /lib/firmware/

注意:要安装dos2unix来去掉一些windows下文件转过来时的多余的字符。
7 启动模块:
#modprobe rt3070sta
8 测试模块(以下192.168.0.33的IP地址自己定 ):
#ifconfig ra0 inet 192.168.0.33 up

#iwconfig ra0
这时,如果输入:ifconfig,应该可以看到ra0设备
9 配置网卡:
因为我用的不是ubuntu默认的网络管理工具,而是WICD工具,只需要 无线网络 处填入 ra0后其它的按相应网络设定配置后 即可配置完毕。
有两点要注意的:
a) 至于有用到WPA方式加密的情况,参考贴里有提到需要修改编译时的配置文件 os/linux/config.mk:
HAS_WPA_SUPPLICANT=y
HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=y
b) 如果使用WICD工具的话,将WPA Suppliant Driver选为wext。

10 刷新后,无线网络应该能被检测到,终于可以告别有线的日子了。happy一个!

11 对于LINUX 内核版本高于等于2.6.31 的情况,编译时会出现一个编译错误,参考贴中提供了patch。
下面这段我就不翻了,大家基本上都能看明白的。(patch在LinuxIDC.com的FTP里)

UPDATE: Linux Kernel >= 2.6.31 / Ubuntu Karmic Koala 9.10 compile patch!
Ok, after speaking with another person and installing Ubuntu 9.10 on my other box I noticed this driver will not compile on my brand new 2.6.31-14-generic kernel.

The error I received (and probably many people do when attempting to compile most ralink drivers under 2.6.31 because this kernel replaced the old net_device structure with a new one called net_device_ops) was:
Code:

CC [M]  /root/2009_0525_RT3070_Linux_STA_v2.1.1.0/os/linux/../../os/linux/rt_linux.o
/root/2009_0525_RT3070_Linux_STA_v2.1.1.0/os/linux/../../os/linux/rt_linux.c: In function ‘RtmpOSNetDevAttach’:
/root/2009_0525_RT3070_Linux_STA_v2.1.1.0/os/linux/../../os/linux/rt_linux.c:1510: error: ‘struct net_device’ has no member named ‘open’
/root/2009_0525_RT3070_Linux_STA_v2.1.1.0/os/linux/../../os/linux/rt_linux.c:1511: error: ‘struct net_device’ has no member named ‘stop’
/root/2009_0525_RT3070_Linux_STA_v2.1.1.0/os/linux/../../os/linux/rt_linux.c:1512: error: ‘struct net_device’ has no member named ‘hard_start_xmit’
/root/2009_0525_RT3070_Linux_STA_v2.1.1.0/os/linux/../../os/linux/rt_linux.c:1513: error: ‘struct net_device’ has no member named ‘do_ioctl’
/root/2009_0525_RT3070_Linux_STA_v2.1.1.0/os/linux/../../os/linux/rt_linux.c:1519: error: ‘struct net_device’ has no member named ‘get_stats’
/root/2009_0525_RT3070_Linux_STA_v2.1.1.0/os/linux/../../os/linux/rt_linux.c:1553: error: ‘struct net_device’ has no member named ‘validate_addr’
make[2]: *** [/root/2009_0525_RT3070_Linux_STA_v2.1.1.0/os/linux/../../os/linux/rt_linux.o] Error 1
make[1]: *** [_module_/root/2009_0525_RT3070_Linux_STA_v2.1.1.0/os/linux] Error 2
make[1]: Leaving directory `/usr/src/linux-headers-2.6.31-14-generic'
make: *** [LINUX] Error 2

After some deep searching I found this rt3070-2.6.31-compile.patch (a part of rt3070-kmod Fedora 11 package) on lists.rpmfusion.org/pipermail/rpmfusion-commits/2009-August/006214.html. Once you apply it, it will compile just fine.

I have attached it to this post, just:
Code:

$gunzip rt3070-2.6.31-compile.patch.gz

$patch -p0 < rt3070-2.6.31-compile.patch

patching file 2009_0525_RT3070_Linux_STA_v2.1.1.0/include/rtmp_os.h
patching file 2009_0525_RT3070_Linux_STA_v2.1.1.0/os/linux/rt_linux.c
patching file 2009_0525_RT3070_Linux_STA_v2.1.1.0/os/linux/rt_main_dev.c

$cd 2009_0525_RT3070_Linux_STA_v2.1.1.0/

$make

Also make sure that rt2800usb, rt2x00usb and rt2x00lib are blacklisted as they now recognize this device (under Ubuntu 9.10) but the device will not function properly (no scan results).
Code:

$sudo pico /etc/modprobe.d/blacklist.conf

add the following lines:
blacklist rt2x00usb
blacklist rt2x00lib
blacklist rt2800usb
close and save.

$sudo rmmod rt2x00usb (just in case)
$sudo rmmod rt2x00lib (just in case)
$sudo rmmod rt2800usb (just in case)

12 我只是将W541U用来当Station模式来用,AP模式还没用过,具体设置不知如何操作。

祝各位好运!

相关附件2009_0525_RT3070_Linux_STA_v2.1.1.0 与rt3070-2.6.31-compile.patch
下载:

FTP地址:ftp://www.6688.cc/

用户名:www.bkjia.net

密码:www.6688.cc

在2010年LinuxIDC.com\9月\Ubuntu 10.04上腾达W541U V2.0 无线网卡驱动的使用\

相关内容