解决1005ha/1008ha在ubuntu 9.10下糟糕的表现

自从我的Eee pc 1005ha-h升级到ubuntu 9.10后,无线网络开始不断抽风。

先是信号非常弱,频繁掉线。我在launchpad.net查到1005ha的无线网卡是atheros的ar9285,对应的驱动是ath9k。而ath9k在2.6.31下有兼容性问题,ubuntu的backport驱动解决了这些问题。于是我给2.6.31.14内核安装了backport驱动。

1
sudo apt-get install linux-backports-modules-2.6.31-14-generic

重启后,信号变强了,线也不掉了,但是网络僵尸了。主要表现在chrome打开一个站点往往需要15-30秒时间,其中至少有10秒时间在解析dns。开始我以为是ipv6导致解析缓慢的,所以我就把ipv6禁用了。

打开配置文件:

1
gksu gedit /etc/sysctl.conf

在文件最后加入:

1
net.ipv6.conf.wlan0.disable_ipv6 = 1

重启后发现速度确实快了,但是解析还是需要很长时间。

后来在lauchpad.net上看到类似的bug,只要安装backport-wireless的驱动就可以了。

1
sudo apt-get install linux-backports-modules-wireless-karmic-generic

这个软件包会自动安装2.6.31-15以上的内核,装完后发现,速度更慢了,而且所有加密的无线网络都连不上了。我看了一下日志。

1
tail /var/log/syslog

发现下面的错误几乎总是日志的最后一行。

1
wpa_supplicant[922]: CTRL-EVENT-SCAN-RESULTS

接着我又在launchpad.net找到了对应的bug,但是至今还没有解决。此时我已经1周不能正常上网了,每天下班回来就开始折腾ath9k驱动,弄得快崩溃了。甚至后来还考虑给1005ha换个无线模块或者买个usb的无线网卡。我装了个windows 7,打算逛逛淘宝。在装驱动的时候突然想到,好像有个什么软件可以让linux使用windows的驱动。这就是ndiswrapper。于是我赶忙去asus官网下了个xp版的驱动。下好后解压,里面有个ndis5x文件夹,这是我要用的,先放一边,装个ndiswrapper再说:

1
sudo apt-get install ndiswrapper-utils-1.9

装好后我进入ndis5x目录,安装驱动,这会需要一小会时间。

1
sudo ndiswrapper -i netathw.inf

装好后,我们为modprobe生成一个配置文件。

1
sudo ndiswrapper -m

再打开module的配置文件

1
gksu gedit /etc/modules

在尾行加入以下内容

1
ndiswrapper

检查一下驱动是否正确安装。

1
ndiswrapper -l

如果有下面内容就表示已经正确安装了。

1
2
3
netathw : driver installed

    device (168C:002B) present (alternate driver: ath9k)

好了,我们把ath9k卸了再加载ndiswrapper看看

1
2
3
sudo rmmod ath9k

sudo modprobe ndiswrapper

此时无线应该已经可用,速度飞快。最后收个尾,把ath9k禁用。

打开modprobe的blacklist

1
gksu gedit /etc/modprobe.d/blacklist.conf

在尾行加入

1
ath9k

弄好ndiswrapper后,我的网络非常稳定,至今还没有异常断过。

如果你的在用linux 2.6.31的内核,如果你的网卡也是悲剧的atheros生产的,如果你也正在饱受ath9k的折磨,那么不妨尝试一下我的方案吧。