Linux 环境下的 AP (Master) 模式 的USB 无线网卡 (转载)

来源:互联网 发布:javascript 编辑:程序博客网 时间:2024/05/21 17:15

Published by latteye on 八月 22. 2010 at 10:18 下午

 

USB 无线网卡在 Linux 环境下的 AP (Master) 模式

最近几个月都在看 Linux 下的 USB 无线网卡。试图将它设置进入 Master (也成为AP模式,软AP,Soft-AP)。但是发现随着需求越来越少,以及无线网卡的更新速度非常快,这似乎成了很困难的一件事情。在这里只讨论 USB 无线网卡的内容。如果你有条件使用 PCI,PCI-E 类型的无线网卡,那将很方便。

 

比较权威的是 Linux Wireless 网卡,上面提供了很多信息。另外 Ubuntu Wiki 也很有参考意义。在这两个网站上 USB 无线网卡几乎全军覆没。

1. ZyDAS ZD1211
首先要提一下这个芯片的网卡。我有找到资料说这个网卡是可以进入 Master 模式的。但我实在是无法找到这种类型的网卡了(山寨卡不算)。几乎都已经停产了。

2.Atheros (Madwifi)
Atheros 口碑很好,在很多论坛都看到对它极高的评价。其配合 hostapd 使用的的驱动就是 Madwifi。但是,当你进入 Madwifi 首页就会看到,Madwifi 直接了当的告诉你,“我不支持任何 USB 网卡”

3. Hostap
先来说一下 hostap 和 hostapd 。hostap 只是一款驱动。它支持 Prism2/2.5/3 系列的网卡。我没有机会深入下去,因为市面上根本找不到这种芯片的网卡了。
而 hostapd 是一款将无线网卡设置成 Master 模式的软件。

4. RaLink 系列
RaLink 系列非常庞大,在 Linux 下也有原生驱动支持。我接触过以下的 RaLink 芯片的网卡:
RT73: D-Link WUA-1340
RT2870: Linksys WUSB100
RT25xx: Linksys WUSB54g
RT3752: Linksys WUSB600N

一些 rev 记不清楚了,随后我会补上。
RT 的驱动主要分两类,一类是 官方提供的驱动。看起来这些驱动对 Master 模式没什么帮助。至少我没看到官方说可以。

另外就是 rt2x00 项目。在这个项目驱动中明确提到有提供 Master 模式支持。

但是,起初我通过 iwconfig 来设置 AP 模式,从来没有成功过。直到前天才发现 iwconfig 早已过时。下一代的无线控制命令是 iw。很多信息的查看都应该通过 iw 命令来获取。当然也不完全可信,比如 iw 告诉我 Linksys WUSB100 可以作为 AP 使用。但我设置它作 AP 的时候无论如何都看不到 ESSID 广播。

正真解决问题的是 RT73。准确的说是 rt2x00 项目提供的 rt73usb 驱动。很可惜的是 rt73 芯片的usb无线网卡几乎都已经停产了。

Hostapd
在意识到 iwconfig 已经过时的时候,也意识到想将网卡设置成 AP 不应该再依赖这个命令了。而应该走 hostapd 的路。

在这里插入批评 Ubuntu 一下。我对 Ubuntu 不负责任的态度感到非常失望。也很后悔当初将公司一批产品装上了 Ubuntu 9.04 Server。现在泼出去的水已经很难回来了。Ubuntu 的屁股只能我来擦了。
在 9.04 中 dhcp3 client 最后一个更新包与新kernel 配合使用的时候,会有严重的 bug。获取到地址后 dhcp scripts 出错,无法将地址配置到网卡上。这样一个 bug ,居然不去修。

回到 hostapd ,hostapd 在 Ubuntu 中的版本为 0.5.8 ,我起初认为 rt 系列的驱动应该属于 Linux 原生驱动,所以 wext 应该就是正确的驱动类型。但 hostapd 无法在这个驱动下配置 rt73usb 网卡。
后来才发现 hostapd 0.6.9 提供的 nl80211 驱动可以正确配置。作为 Server 的 Ubuntu 9.04 Server 也没有提供新的 deb 包。我只好自己打包。很难想象 Ubuntu 对 Server 版本也保持着 6个月 一更新的思路。你想烦死我!?
这里面还有些问题需要搞清楚,cfg80211,nl80211,wext 区别在哪里?以后弄清楚了再来更新。

VIA VT6656
在测试的过程中,还找到了 VIA VT6656 的网卡。由于在 Win 环境下这网卡可以作 AP 才对它开始测试的。从 VIA 网站上下来的驱动浪费了我很长时间。官方网站上提供了 1.91.20 两个版本。而 1.9 无法在 2.6.32 Kernel 下直接编译通过。1.20 可以。

起初我认为这个驱动无法做 AP,那时候是用的 iwconfig 工具看的。后来发现随驱动有工具 wetctl。但是也没有发现 AP 可以通过这个模式去配置。
后来老板自己看了 wetctl 源码,肯定的说是可以的。只是一些参数没有告诉你。于是自己看源码发现 apstart 参数就可以将其设置为 Master 模式。具体的参数有很多,类似这样:
wetctl eth1 apstart ap test 11 100 open 8 2

这种方式的确可以将 VIA VT6656 进入 Master 模式,但很莫名的机器会死机,而且我们没有找到死机的原因(规律)。就在想放弃的时候,我们和 VIA 的一个生产商抱怨了一通。对方很豪爽的说:“早说你们要作 AP 阿,我发你们一套作 Soft AP 的驱动。”。我靠!VIA 你作了驱动也不放出来阿……

上周五才拿到 Soft AP 驱动。VIA 随驱动给了修改过的 hostapd 0.6.9 & 0.5.8 。修改的版本必须在 hostapd 中将 driver 定义为 viawget 才可以启动这个网卡。至于稳定性还在测试中,要过两天才能出结果, 在工作两天后VIA的卡还是稳定的,但在连续工作一周以后机器也死机了,在某些不严格的环境中,这样的结果也可以了。根据驱动文件的文件名判断 via 这个驱动还处在 beta 版本。

另外还有一个问题,VIA 1.20 的驱动是无法同时支持两张无线网卡的。如果你查了两张,系统只会显示一张。

现在的希望主要就在 rt 系列 和 VIA VT6656 。如果 VIA 的卡能看着不是那么的山寨,我还是愿意使用的。何况它价格也比较便宜,才 100 元上下。Linksys WUSB600N 要300-400呢。

下周再更新测试结果。

原创粉丝点击