分类: LINUX
2011-05-15 11:09:37
参考自这里:
买了块腾达的Tenda W541U V2.0的无线网卡,当时没想到要在Linux下用,回来后才发现驱动问题比较麻烦,官方不提供Linux下的驱动,网上的解决方案没有试成功的,很是郁闷。
给Tenda的技术支持写过信,给到了一个驱动,但没有说具体编译的细节,自己试着编译出一个.o文件,lsmod后还是检测不到无线网卡。再写信就无回音了。可能这个问题很好解决,但自己确实搞不定。
前两天到论坛网站上去看,发现老外的一篇贴子,说是解决了这个问题,按照相应步骤试了一下,果然编译了可以使用的驱动,现将步骤和应注意事项总结如下,还希望能帮助和我一样用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 的情况,比如最新的 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 配置网卡:
因为我用的不是默认的网络管理工具,而是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 / Karmic Koala 9.10 compile patch!
Ok, after speaking with another person and installing 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 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 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地址:
用户名:
密码:
在2010年LinuxIDC.com\9月\ 10.04上腾达W541U V2.0 无线网卡驱动的使用\
http://www.cnblogs.com/dartagnan/archive/2010/12/05/2003520.html