自从我的Eee pc 1005ha-h升级到ubuntu 9.10后,无线网络开始不断抽风。
先是信号非常弱,频繁掉线。我在launchpad.net查到1005ha的无线网卡是atheros的ar9285,对应的驱动是ath9k。而ath9k在2.6.31下有兼容性问题,ubuntu的backport驱动解决了这些问题。于是我给2.6.31.14内核安装了backport驱动。
sudo apt-get install linux-backports-modules-2.6.31-14-generic
重启后,信号变强了,线也不掉了,但是网络僵尸了。主要表现在chrome打开一个站点往往需要15-30秒时间,其中至少有10秒时间在解析dns。开始我以为是ipv6导致解析缓慢的,所以我就把ipv6禁用了。
打开配置文件:
gksu gedit /etc/sysctl.conf
在文件最后加入:
net.ipv6.conf.wlan0.disable_ipv6 = 1
重启后发现速度确实快了,但是解析还是需要很长时间。
后来在lauchpad.net上看到类似的bug,只要安装backport-wireless的驱动就可以了。
sudo apt-get install linux-backports-modules-wireless-karmic-generic
这个软件包会自动安装2.6.31-15以上的内核,装完后发现,速度更慢了,而且所有加密的无线网络都连不上了。我看了一下日志。
tail /var/log/syslog
发现下面的错误几乎总是日志的最后一行。
wpa_supplicant[922]: CTRL-EVENT-SCAN-RESULTS
接着我又在launchpad.net找到了对应的bug,但是至今还没有解决。此时我已经1周不能正常上网了,每天下班回来就开始折腾ath9k驱动,弄得快崩溃了。甚至后来还考虑给1005ha换个无线模块或者买个usb的无线网卡。我装了个windows 7,打算逛逛淘宝。在装驱动的时候突然想到,好像有个什么软件可以让linux使用windows的驱动。这就是ndiswrapper。于是我赶忙去asus官网下了个xp版的驱动。下好后解压,里面有个ndis5x文件夹,这是我要用的,先放一边,装个ndiswrapper再说:
sudo apt-get install ndiswrapper-utils-1.9
装好后我进入ndis5x目录,安装驱动,这会需要一小会时间。
sudo ndiswrapper -i netathw.inf
装好后,我们为modprobe生成一个配置文件。
sudo ndiswrapper -m
再打开module的配置文件
gksu gedit /etc/modules
在尾行加入以下内容
ndiswrapper
检查一下驱动是否正确安装。
ndiswrapper -l
如果有下面内容就表示已经正确安装了。
netathw : driver installed device (168C:002B) present (alternate driver: ath9k)
好了,我们把ath9k卸了再加载ndiswrapper看看
sudo rmmod ath9k sudo modprobe ndiswrapper
此时无线应该已经可用,速度飞快。最后收个尾,把ath9k禁用。
打开modprobe的blacklist
gksu gedit /etc/modprobe.d/blacklist.conf
在尾行加入
ath9k
弄好ndiswrapper后,我的网络非常稳定,至今还没有异常断过。
如果你的在用linux 2.6.31的内核,如果你的网卡也是悲剧的atheros生产的,如果你也正在饱受ath9k的折磨,那么不妨尝试一下我的方案吧。


十二月 6th, 2009 at 4:53 下午
[...] This post was mentioned on Twitter by 吼吼, 吼吼. 吼吼 said: 解决1005ha/1008ha在ubuntu 9.10下糟糕的表现 http://www.imchao.net/linux/solve-1005ha1008ha-the-poor-performance-under-ubuntu-9-10.html [...]
三月 25th, 2010 at 4:06 下午
奇怪啊,为什么我的1005HA连WINXP都会出这种问题呢?安装ipv6后无线就开始抽风,卸载之后又正常了……不知道吼吼碰到过吗?
吼吼 reply on 三月 25th, 2010:
@寒鸦の迷宫, 我不用xp的,偶尔用win7上一下网银,是正常的。
四月 9th, 2010 at 12:45 上午
赞美!你介绍的方法非常好,解释得也很详细~谢谢!