前些日子,买了部 Asus EeePC 900HA的网本,将预装的(可能是)盗版的XP系统删除后,装上了 Linux Ubuntu 10.04 netbook Beta1后,发现无线网卡根本就不工作。试过用 和 都不行
用命令 $ lspci 得到无线网卡设备的信息
……
01:00.0 Ethernet controller [0200]: Atheros Communications Atheros AR8121/AR8113/AR8114 PCI-E Ethernet Controller [1969:1026] (rev b0) (有线网卡的)
02:00.0 Network controller [0280]: Atheros Communications Inc. Device [168c:002c] (rev 01)
(无线网卡的)
…… !
无线网卡那一部分并没有直接给出是ARxxxx 类型的网卡,所以只能通过设备ID [168c:002c] Google 后来才知道机子的无线网卡是 AR2427 – ath9k 。(如果直接Google 900HA 很多资料显示 900HA的wireless卡的类型是 AR5007EG,这个问题一直忽悠了我很久, ubuntu 10.04正式版出来后我才知道 AR5007EG可能是以前900HA的网卡型号)。
貌似是因为现在的内核 2.6.32-xx (Ubuntu 10.04) 并没有对其支持(要等到 的内核版本) !才造成识别不到设备类型的。要解决这个问题,你可能要用到一下三个方法中的一种:
a. Ndiswrapper 直接导入windows上的驱动文件 netathw.inf 这个通用简单而且牛叉,但好像有些人反应 说,网速有些许降低,我也没亲身试过
b. Madwifi 在Ubuntu 10.04 beta2 的时候装过,因为功夫不够编译失败。放弃了
c. Linux Wireless 的 compat- wireless kernel drivers 现在再用,xx支持。不过如果你升级了内核是 要重新安装一次的,由于以后内核还是会更到到支持AR2427的,而且刚刚给我撞上了,所以也就采取 了这种办法。
compat-wireless kernel drivers安装过程:
OS: Ubunru 10.04
Kernel version: 2.6.32-22-generic (用 $ uname -r 可以查看) 我没有在其他内核版本上装过所以{zh0}能够确保 你的内核和我是一样的,其实其他的内核也是可以的只不过要下载好对应的驱动文件而已
1. 安装 C编译器, 你的有线网应该OK吧,不能联网的话找deb包装吧
$ sudo apt-get install build-essential
2. 检查 /lib /modules/`uname-r`/build 文件夹(一般默认已经安装了)是否存在 ’uname -r’是获取你内核版本的命令,其中 “·” 是TAB键上面那个键
$ ls /lib/modules/`uname -r`/build
如果ls命令,显示有文件的话那就继续下一步
没有的话,就 $ sudo apt-get install linux-headers-`uname -r` 装好后再 ls 一次看看成功了没
3. 到下载相应的驱动,我当时用的是 这个是自选,主要是依据
make 命令有没有错误,如果有的话 那就换个适合的看看,其中{zx1}版一定是
4. 解压驱动文件,然后进入起文件夹,编译安装
$ tar -xvjf compat-wireless-2010-04-26.tar.bz2
$ cd compat-wireless-2010-04-26.tar.bz2
$ ./scripts/driver-select ath9k
#如果你装的是 ath5k 驱动的话那就替换掉 “ath9k”
$ make
#没有提示什么错误的话,就继续下一步。如果有那就看看错误类型吧,一般都是要换一个驱动文件,或者你到Goolge、baidu问一下
$ sudo make install
# 需要时间去完成,如果你安装后出现错误那么运行 $ sudo make uninstall 将它卸载
$ sudo make unload
$ sudo modprobe ath9k
5. 确认有没有安装成功
你的 $ iwconfig 应该会多出来一个 wlan0 的设备
$ modinfo ath9k
#应该会有一下显示,红色哪一行一定要有才算成功了
filename: /lib/modules/2.6.32-18-generic/updates/drivers/net/wireless/ath/ath9k/ath9k.ko
license: Dual BSD/GPL
description: Support for Atheros 802.11n wireless LAN cards.
author: Atheros Communications
srcversion: A50A865BAAB45E03B5852F0
alias: pci:v0000168Cd0000002Esv*sd*bc*sc*i*
alias: pci:v0000168Cd0000002Dsv*sd*bc*sc*i*
alias: pci:v0000168Cd0000002Csv*sd*bc*sc*i*
alias: pci:v0000168Cd0000002Bsv*sd*bc*sc*i*
alias: pci:v0000168Cd0000002Asv*sd*bc*sc*i*
alias: pci:v0000168Cd00000029sv*sd*bc*sc*i*
alias: pci:v0000168Cd00000027sv*sd*bc*sc*i*
alias: pci:v0000168Cd00000024sv*sd*bc*sc*i*
alias: pci:v0000168Cd00000023sv*sd*bc*sc*i*
depends: ath9k_hw,mac80211,led-class,ath,cfg80211,ath9k_common
vermagic: 2.6.32-18-generic SMP mod_unload modversions 586
parm: debug:Debugging mask (uint)
parm: nohwcrypt:Disable hardware encryption (int)
6. 重启
$ sudo reboot 手动重启也行
如果你重启后,左键点一下右上角的网络管理器(并不是 edit 里面),如果有了无线的连接。那么你开始大喊一声 Oyeah 吧!!!
如果你安装后出现错误那么运行 $ sudo make uninstall 将它卸载
后面的无线设置,自己搞吧。
关于{zx1}版本编译出现错误:
net/wireless/wext-compat.c:443: error: ‘struct wireless_dev’ has no member named ‘wext’
请使用如下更改:
Signed-off-by: Paul Fertser <fercerpav@…>
—
scripts/gen-compat-autoconf.sh |? ? 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff –git a/scripts/gen-compat-autoconf.sh b/scripts/gen-compat-autoconf.sh
index 88e2740..1e3002e 100755
— a/scripts/gen-compat-autoconf.sh
+++ b/scripts/gen-compat-autoconf.sh
@@ -192,7 +192,7 @@ if [ -f $KLIB_BUILD/Makefile ]; then
define_config_multiple_deps CONFIG_MAC80211_QOS y $ALL_DEPS
rm -f $MULT_DEP_FILE
# Kernels >= 2.6.32 can disable WEXT
-? ?? ?if [ $SUBLEVEL -lt 32 ]; then
+? ?? ?if [ $SUBLEVEL -le 32 ]; then
define_config_dep CONFIG_CFG80211_WEXT 1 CONFIG_WIRELESS_EXT
fi
fi
当然,只是针对2.6.32内核