识别无线网卡型号
T43 内置的无线网卡有多种型号,为以下之一:
- IBM 11a/b/g Wireless LAN Mini PCI Adapter II
- Intel PRO/Wireless 2200BG Mini-PCI Adapter
- Intel PRO/Wireless 2915ABG Mini-PCI Adapter
它们使用了不同的芯片,也需要使用不同的驱动程序。因此,在着手驱动无线网卡之前,要弄清楚网卡的型号。
我的IBM 11a/b/g Wireless LAN Mini PCI Adapter II 使用了Atheros 的AR5212 系列芯片,可以使用以下命令确认:
# lspci |grep Ethernet
02:00.0 Ethernet controller: Broadcom Corporation NetXtreme BCM5751M Gigabit Ethernet PCI Express (rev 11) 0b:02.0 Ethernet controller: Atheros Communications, Inc. AR5212 802.11abg NIC (rev 01)
安装驱动程序
2200/2915 芯片
对于Intel 2200/2915芯片的无线网卡,Linux 内核内置了驱动程序,如下图,如果你的网卡在此列,那么在配置内核时需要选中,如果标记为<M>,那么在编译内核后,需要将其加入文件:/etc/modules.autoload.d/kernel-2.6,在下次启动系统时,这个Module 就会自动装载。
AR5212 芯片
对于AR5212 系列芯片,必须安装第三方驱动程序。幸运的是,Gentoo 的Package 列表已经加入了madwifi 为其编写的驱动程序与工具:net-wireless/madwifi-ng 与 net-wireless/madwifi-ng-tools,使用以下命令即可以安装:
# emerge -av madwifi-ng # emerge -av madwifi-ng-tools
安装完成之后,会编译出一个新的Module: ath_pci,将其加入文件:/etc/modules.autoload.d/kernel-2.6。
# echo ath_pci >> /etc/modules.autoload.d/kernel-2.6
可以通过以下命令查看当前装载的Modules:
$ lsmod
如果希望手工卸载或者装载一个Module ,用以下命令实现:
# modprobe -r <Module_Name> # modprobe <Module_Name>
若Modules 之间存在依赖关系(可以在lsmod 的输出中查看),则需要一层一层的卸载,但有些依赖不会显示出来,导致无法卸载,这时可以使用以下命令强制卸载:
# rmmod --force <Module_Name>
待确认所需Module 已经加载,执行ifconfig 命令,应该可以看到新的网络接口,一般会是ath0。接下来可以使用iwlist 来查找附近的无线接入点:
# iwlist ath0 scan
ath0 Scan completed : Cell 01 - Address: 00:07:40:ED:87:02 ESSID:"alexzhangsatgmaildotcom" Mode:Master Frequency:2.462 GHz (Channel 11) Quality=17/70 Signal level=-78 dBm Noise level=-95 dBm Encryption key:on Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 6 Mb/s 9 Mb/s; 12 Mb/s; 18 Mb/s; 24 Mb/s; 36 Mb/s 48 Mb/s; 54 Mb/s Extra:bcn_int=100
找到后,使用iwconfig 配置连接信息:
# iwconfig ath0 essid alexzhangsatgmaildotcom # iwconfig ath0 key XXXXXX
第二步为加密的连接指定密钥,若无线AP 上Encryption key 没有启用,则省略第二步。对于使用WEP 静态密钥加密的无限AP 测试成功,其它加密方式未经测试。密钥要求是十六进制格式,如果是ASCII 格式,使用这样的格式:s:XXXXXX
最后,使用dhcp 向AP 请求IP 地址:(假定你使用dhcpcd 客户端)
# dhcpcd ath0
若dhcpcd 成功获取了IP 地址,那么无线网络连接建立成功。
NOTE
- 给出的命令如果前面带有#,那么默认需要root 权限执行。
- 如果在执行lspci, lsusb, lsmod 等命令时遇到找不到命令的错误,那么需要安装以下对应的包:
# emerge -av sys-apps/pciutils sys-apps/usbutils sys-apps/module-init-tools
- 我不太清楚iwconfig 可以识别多少种加密连接,对于更多样的加密连接,需要安装net-wireless/wpa_supplicant。
Troubleshooting
升级内核 从2.6.20-r8 到2.6.23 ,madwifi 无线网卡不工作
Module ath_pci load 失败。
这是一个bug ,需要安装一个补丁patch-madwifi-r2630-2.6.23-build-fix.diff ,然后重新emerge madwifi-ng。否则re-emerge madwifi-ng会有file_operations错误。
因为内核升级,sandbox 也会引起问题, 在emerge madwifi-ng过程中会有"access violation summary" 错误。
临时方案:-sandbox
# FEATURES=-sandbox emerge madwifi-ng
解决方案: 升级 sandbox 从 1.2.18.1 到1.2.18.1-r1或者更新版本
# emerge --sync && emerge sandbox-1.2.18.1-r1
重新emerge madwifi-ng 成功后,ath_pci 可以load 成功。
(未完)


