TP-Link WN322G+ 是802.11g(54MB)的USB无线网卡 。
有windows驱动,但在Linux下安装,却比较麻烦。
芯片组比较新,是zd1215,ubuntu 8.04中使用的kernel(2.6.24-16-server)能够识别为zd1211,但是却无法配置使用。
试过很多办法,想在内核中加入合适的本地驱动,都没有成功。
只好改用ndiswrapper,见:http://ndiswrapper.sourceforge.net/ ,该工具可以使用windows的无线网卡驱动程序为linux 提供网卡支持。
相当于在windows驱动程序的包装器--包装为Linux下可用的驱动。
以下安装过程,其他无线网卡应该也适用。
安装步骤如下:
插入usb网卡 ,其实现在通过lsusb命令可以看到系统识别了,但是就是不可用,因为芯片的发射部分比驱动新。
安装ndiswrapper ,命令行下输入:
apt-get install ndiswrapper-common ndiswrapper-utils-1.9
找到usb网卡的windows驱动程序 ,tp-link的驱动在光盘中的相应目录,找到ZD1211BU.INF和ZD11BUXP.SYS两个文件,复制到ubuntu中。
如果是其他网卡,也要找到相应的inf和sys文件。如果驱动程序是exe或者cab格式,需要用zip或者cabextract工具解开并找到上述文件。
安装驱动程序 ,执行:
ndiswrapper -i ZD1211BU.INF
其中ZD1211BU.INF是驱动放置在ubuntu下的路径,我这里是在当前路径下。
加载驱动程序:
root@dell:~/54u# ndiswrapper -l zd1211bu : driver installed device (0ACE:1215) present (alternate driver: zd1211rw)
设置 系统启动时加载, 编辑/etc/modules文件,在末尾加入:ndiswrapper
执行depmod ,检查当前加载的模块,如果没有报错,才可以执行下面的命令:
depmod -a
加载mdiswrapper模块 :
modprobe ndiswrapper
加载wlan0:
root@dell:~/54u# ndiswrapper -m adding "alias wlan0 ndiswrapper" to /etc/modprobe.d/ndiswrapper ... ************************************************************************ * * The update-modules command is deprecated and should not be used! * ************************************************************************
在ubuntu的模块黑名单上加上网卡的名称 ,该黑名单的作用就是不用ubuntu加载,而是自行负责加载。
网卡名称在执行“ndiswrapper -l”时的提示中找,这里是“zd1211rw”,在/etc/modprobe.d/blacklist文件末尾加入“blacklist zd1211rw”即可。
重启ubuntu
查看网卡是否识别,执行iwconfig命令,应该有类似下面的输出:
wlan0 IEEE 802.11g ESSID:"TP-LINK" Mode:Managed Frequency:2.437 GHz Access Point: 00:1D:0F:85:7B:76 Bit Rate=54 Mb/s Tx-Power:-2147483648 dBm Sensitivity=0/3 RTS thr:off Fragment thr:off Encryption key:off Power Management:off Link Quality:4/100 Signal level:-93 dBm Noise level:-96 dBm Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0 Tx excessive retries:0 Invalid misc:0 Missed beacon:0
启动网卡 ,输入:
ifconfig wlan0 up
为网卡配置ip地址,自动启动和安全方面的配置 ,编辑/etc/network/interfaces,加入:
iface wlan0 inet dhcp wpa-conf /etc/wpa_supplicant.conf auto wlan0
我这里是通过DHCP获取,如果静态ip地址,可以在网上参考其他文档。
如果无线不需要安全设置,可以省略wpa-conf /etc/wpa_supplicant.conf这行,不过这样不安全,我当前使用的是WPA-PSK [TKIP],没有使用WEP,安全程度不好。
如果没有配置安全,以下步骤就可以忽略,重启ubuntu,无线网卡应该获得。
配置wpa安全,创建/etc/wpa_supplicant.conf文件,输入:
network={ ssid="MarshalsNetwork" key_mgmt=WPA-PSK proto=WPA pairwise=TKIP psk=密码的16进制字符串 }
psk的获得,需要执行:
root@dell:~# wpa_passphrase MarshalsNetwork your_password network={ ssid="MarshalsNetwork" #psk="your_password" psk=e9eb25bd7410ee3e1a96e138591fa064ee3bdc305eac25f8b41f315177932eb7 }
将输出的psk部分,复制到wpa_supplicant.conf文件中psk属性中即可。
重启ubuntu,无线网卡就应该可以工作了。
上述步骤,在我另外一块usb无线网卡:水星(Mercury)MW54U下也测试成功,发现和TP-Link WN322G+使用的完全相同的芯片,驱动程序也一样可以互换。
这种方法的缺点(这也是我开始不打算使用的原因)是,占用CPU较高,本来USB网卡比PCI网卡就消耗CPU,通过包装器ndiswrapper做翻译就更消耗资源。
在Piii 866环境下,长期占用5%~10%,在dell d600的迅驰1.4G CPU下,长期占用1%~3%。
初步测试了一下网速 ,无线路由就在旁边的情况下:
从t61(无线)到dell(以太网线)通过SSH 上传71M的JDK6到ubuntu上,测试数据为1425.5kB/s,下载速度更快一些,测试数据为1573.0kB/s。
从t61(无线)到server(无线tp-link)通过SSH上传71M的JDK6到ubuntu上,测试数据为930.0kB/s,下载速度更快一些,测试数据为1240.8kB/s。
从t61(无线)到dell(无线水星)通过SSH上传71M的JDK6到ubuntu上,测试数据为732.9kB/s,下载速度更快一些,测试数据为1021.8kB/s。
测试不严格,没有做交叉测试,初步看来,tp-link应该比水星无线网卡快点儿。
本文最早由本人(marshal@javaeye)发表在:http://marshal.easymorse.com