Linux下使用华为h3c Aolynk WuB320G无线网卡

我搜到的国内唯一的两篇参考文章(之所以说是唯一,是因为内容基本一致,大概是同一个人写的):

  • [华为的无线网卡Aolynk WuB320G配制](http://www.linuxsir.org/bbs/showthread.php?t=297587)
  • [华为-3com之 Aolynk WUB320g usb无线网卡 linux驱动篇](http://blog.chinaunix.net/u/6303/showart.php?id=308621)

不过这位老大写得比较模糊,具体操作的时候还是费了不少周折。加上本本上的迅驰无线捣乱,由于本本比较老了,自带无线网卡是Intel PRO/Wireless 2100,只支持802.11b,好像还不支持WPA(WPA是[2004年提出的](http://en.wikipedia.org/wiki/IEEE_802.11i),比本本的岁数小),所以在它身上也浪费了不少时间。

华为3com的Aolynk WUB320g usb无线网卡芯片组应该是[Ralink](http://www.ralinktech.com/)(它的[台湾分站](http://www.ralinktech.com.tw/))的RT73,虽然Ubuntu Gutsy自带了驱动,并且识别出了网卡,但注意,这个自带的驱动不好用,或者说没法用,仍然需要自己到http://rt2x00.serialmonkey.com/去[下载](http://rt2x00.serialmonkey.com/rt73-cvs-daily.tar.gz)开源的驱动,编译使用。(编译前后,用iwpriv wlan0看列出的可用参数就知道这两个驱动的区别了)

编译需要内核相应的头文件,比如linux-headers-2.6.22-14-generic,解压后按照README文件的内容:

$ tar xzf rt73-cvs-daily.tar.gz
$ cd rt73-cvs-YYYYMMDDHH/Moduls
$ make
$ make install

就算编译安装完成了,手工挂载:modprobe rt73 ifname=wlan0,在/etc/modules中添加一句rt73,每次启动就能够自动挂载了。还可以在/etc/modprobe.d/blacklist中增加一句:blacklist rt73usb,禁用系统自带的驱动。

如果要和采用WPA-PSK认证方式的AP连接,还要修改一下/etc/network/interfaces文件,比如:

auto wlan0
iface wlan0 inet static
    address 192.168.0.13
    netmask 255.255.255.0
    gateway 192.168.0.1

    pre-up ifconfig wlan0 up
    pre-up ifconfig wlan0 down
    pre-up ifconfig wlan0 up
    pre-up iwconfig wlan0 essid "my_essid"
    pre-up iwconfig wlan0 mode Managed
    pre-up iwpriv wlan0 set AuthMode=WPAPSK
    pre-up iwpriv wlan0 set EncrypType=TKIP
    pre-up iwpriv wlan0 set WPAPSK="my_wpa_passphrase"
    pre-up ifconfig wlan0 up

这个设置是从[WifiDocs/Driver/RalinkRT73](https://help.ubuntu.com/community/WifiDocs/Driver/RalinkRT73)抓过来的,大体意思知道,但为什么写成这个格式不是非常明白,不过这样的确就可以使用了 :-)。

配置无线连接还可以使用其它工具,比如wifi-radar,或者专门为Ralink开源驱动设计的[RutilT](http://cbbk.free.fr/bonrom/)也不错。

试着用两块Wub320g配置Ad-Hoc对等网,但失败了,配置如下(两端的配置是一样的):

auto wlan0
iface wlan0 inet static
    address 192.168.0.13
    netmask 255.255.255.0
    gateway 192.168.0.1

    pre-up ifconfig wlan0 up
    pre-up ifconfig wlan0 down
    pre-up ifconfig wlan0 up
    pre-up iwconfig wlan0 mode Ad-Hoc
    pre-up iwconfig wlan0 channel 2
    pre-up iwconfig wlan0 essid "fwolf_home"
    pre-up iwconfig wlan0 key 1234567890
    #pre-up iwpriv wlan0 set NetworkType=Adhoc
    #pre-up iwpriv wlan0 set AuthMode=OPEN
    #pre-up iwpriv wlan0 set EncrypType=NONE
    #pre-up iwpriv wlan0 set SSID="fwolf_home"
    # Break 802.11i's 11m/s limit
    #pre-up iwpriv wlan0 set AdhocOfdm=1
    pre-up ifconfig wlan0 up

注释中是另外一种方式,两种方式下网卡都能够连通,从iwconfig或者其它工具中都能看到已连接的状态,ifconfig也能看到发送和接收的流量,但两块网卡之间就是ping不通(属于同一网段)。把两端的机器都重启,偶尔能从还连接着局域网的机器上ping通另外一台只连接了无线网的机器,而反过来ping不通,提示:

Destination Host Unreachable

有时候还会提示:

ping: sendmsg: No buffer space available

对等网计划只好暂时搁浅,先找个AP用着。

最后总结,在为linux操作系统选购硬件时,一定要先上网看看相应的功能好不好配置,优先选择应用比较广泛、驱动比较开放、配置容易的产品。

参考

  • [无线网卡问题](http://www.linux-ren.org/modules/newbb/viewtopic.php?post_id=21632)
  • [迅驰网卡驱动完全手册(含其它无线网卡驱动方式)](http://www.linuxsir.org/bbs/showthread.php?t=119252)
  • [Ad Hoc Wireless Networking](https://help.ubuntu.com/community/WifiDocs/Adhoc)
  • [WifiDocs/WirelessCardsSupported](https://help.ubuntu.com/community/WifiDocs/WirelessCardsSupported)

Update @ 2008-07-17

升级到Ubuntu 8.04 hardy之后,无线网卡又不干活了,虽然[有人说hardy的默认驱动工作得很好](http://ubuntuforums.org/showthread.php?t=687450),但在我这里不行,能识别出来,但up的时候出现错误:

SIOCIFFLAGS: invalid argument

查了一下确认是驱动有问题(与2.6.24内核),不过早有好心人[提供了补丁](http://rt2x00.serialmonkey.com/phpBB/viewtopic.php?t=4379),所以,只需按照如下步骤,就能让无线网卡复活了:

安装相应的内核header包:

sudo aptitude install linux-headers-`uname -r`

从[这里](http://rt2x00.serialmonkey.com/rt73-cvs-daily.tar.gz)下载最新的rt73驱动,解压,编译,安装。如果编译时出现模块文件太大的提示:

!!! WARNING: Module file much too big (>1MB)
!!! Check your kernel settings or use 'strip'

可以strip一下再安装:

sudo strip -S rt73.ko
sudo make install

这样处理过的rt73.ko之后250k左右。

现在就可以卸载旧模块了,当然还要把他们都放到禁用模块列表(/etc/modprobe.d/blacklist)中,然后加载新的模块:

sudo ifconfig wlan0 down
sudo modprobe -r rt73usb
sudo modprobe -r rt2570
sudo modprobe -r rt2500usb
sudo modprobe -r rt2x00lib
sudo modprobe rt73

然后就。。。可以用啦:

ifconfig -a
sudo ifconfig wlan0 up

wpa认证还是使用上面原先介绍的方法即可。

另外,我弄完之后,没有wlan0,却有wlan2,也能正常工作,怎么把网卡的名字改过来捏?参考[这里](http://fixunix.com/ubuntu/508804-make-wlan1-wlan0.html),编辑文件/etc/udev/rules.d/70-persistent-net.rules

# USB device 0x1472:0x0009 (rt73usb)
#SUBSYSTEM=="net", DRIVERS=="?*", ATTRS{address}=="00:0f:e2:39:b6:f2", ATTRS{type}=="1", NAME="wlan0"

# USB device 0x1472:0x0009 (rt73usb)
#SUBSYSTEM=="net", DRIVERS=="?*", ATTRS{address}=="00:0f:e2:39:c0:ff", ATTRS{type}=="1", NAME="wlan1"

# USB device 0x1472:0x0009 (rt73usb)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0f:e2:39:b6:f9", ATTR{type}=="1", KERNEL=="wlan*", NAME="wlan0"

看见没,所有用过的网卡这里都记着呢,把原来没有用了的wlan0, wlan1都注释掉,最后一句改为wlan0,下次再重新插无线网卡的时候,就会被认为是wlan0了。

参考

  • [HOWTO: RT73 (RT71) serialmonkey drivers](http://ubuntuforums.org/showthread.php?t=400236)

Leave a Reply

Your email address will not be published. Required fields are marked *