复制/转载请标明原出处itspy.wei的一亩三分地:http://blog.csdn.net/yyplc/article/details/7243220,谢谢!
最近碰到了一个很苦恼的问题,无线网络,无法连接到WIFI热点了。虽然能搜索到周围有WIFI热点,但总是连接不上,老提示授权错误,要求输入密码,还好有线网络连接能正常使用。这就纳闷了,前一天还可以用得好好的,现在竟然用不了!虽然以前也碰到过偶尔断线的情况,但是也不至于连接不上。以前用UBUNTU10.10,现在用10.04版本的,笔记本是DELL 1427,物理网卡为Broadcom的b4312,UBUNTU10.04系统内核Linux 2.6.32-33。google,百度了一番,尝试过各种办法,重新卸载,安装无线驱动,卸载又安装network-manager, 真的汗颜network-manager,给我的感觉是问题多多,不稳定。
自从用了UBUNTU做桌面系统,受尽了network-manager各种非人折磨,直到现在,还和network-manager在做革命斗争啊,担心哪天又给我来个绊脚石,浪费我宝贵的时间! 最后无奈重装系统,可是问题依旧! 太可恶了,难道让我抛弃10.04重新回到10.10? 冷静想一下,应该是配置问题,肯定是哪些配置出错了,因为这几天正在折腾UBUNTU和手机Android之间WIFI连接的问题(请见我的另一篇文章),说不定搞坏了系统的网络配置,在卸载和安装的时候又没有做到彻底清除相关配置文件。
网上关于无线网络无法连接的帖子很多,涉及到了方方面面,从应用程序到网卡驱动到LINUX操作系统都有提到,我也基本试过所说的方法,但终究没有解决问题。看来不能瞎折腾,得对症下药,找到关键的地方才行。
无线网卡是能搜索到WIFI网络的,就是连不上,使用dmesg |grep b43 发现下面的现象
wsn@wsn-laptop:~$ dmesg |grep b43
[ 0.895694] b43-pci-bridge 0000:0e:00.0: PCI INT A -> GSI 18 (level, low) -> IRQ 18
[ 0.895710] b43-pci-bridge 0000:0e:00.0: setting latency timer to 64
[ 10.406437] b43-phy0: Broadcom 4312 WLAN found (core revision 15)
[ 10.525988] Registered led device: b43-phy0::tx
[ 10.526005] Registered led device: b43-phy0::rx
[ 10.526021] Registered led device: b43-phy0::radio
[ 15.604244] b43 ssb0:0: firmware: requesting b43/ucode15.fw
[ 15.621385] b43 ssb0:0: firmware: requesting b43/lp0initvals15.fw
[ 15.626406] b43 ssb0:0: firmware: requesting b43/lp0bsinitvals15.fw
[ 15.764983] b43-phy0: Loading firmware version 410.2160 (2007-05-26 15:32:10)
[ 21.681154] b43-phy0 ERROR: Fatal DMA error: 0x00000400, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
[ 21.681161] b43-phy0 ERROR: This device does not support DMA on your system. Please use PIO instead.
[ 21.681165] b43-phy0: Controller RESET (DMA error) ...
[ 21.681173] b43-phy0 ERROR: Fatal DMA error: 0x00000400, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
[ 21.681176] b43-phy0 ERROR: This device does not support DMA on your system. Please use PIO instead.
[ 21.681179] b43-phy0: Controller RESET (DMA error) ...
[ 21.896278] b43-phy0: Loading firmware version 410.2160 (2007-05-26 15:32:10)
[ 27.409095] b43-phy0: Controller restarted
[ 82.628135] b43-phy0 ERROR: MAC suspend failed
[ 82.948120] b43-phy0 ERROR: MAC suspend failed
[ 83.268131] b43-phy0 ERROR: MAC suspend failed
出现了DMA错误"This device does not support DMA on your system. Please use PIO instead"
说的是本笔记本网卡并不支持DMA传输模式,所以驱动报错了。
如果是DMA模式,由于是直接内存访问,相对PIO模式,网卡速度会快一点,但实际应用中没什么区别,那是因为网络的速度是远远跟不上的。
Broadcom公司的有些网卡设备是不支持DMA模式的(甚至和内核版本也有关),下面有说明:
BCM4318 chipset: AP mode does not work because of packet loss in high transmission rates. Hard to debug & fix.
看来我的本本上的网卡不支持DMA模式,这样只能采用PIO模式了。
于是沿着这条线索找到解决办法:
#更改b43.conf的配置文件
wsn@wsn-laptop:~$ sudo touch /etc/modprobe.d/b43.conf
wsn@wsn-laptop:~$ echo "options b43 pio=1 qos=0" | sudo tee -a /etc/modprobe.d/b43.conf
wsn@wsn-laptop:~$ sudo modprobe b43
#然后重启 network-manager
wsn@wsn-laptop:~$ cd /etc/init.d
wsn@wsn-laptop:~$ sudo service network-manger restart
如果不行,重启系统。
wsn@wsn-laptop:~$ dmesg |grep b43
[ 0.873775] b43-pci-bridge 0000:0e:00.0: PCI INT A -> GSI 18 (level, low) -> IRQ 18
[ 0.873790] b43-pci-bridge 0000:0e:00.0: setting latency timer to 64
[ 11.455666] b43-phy0: Broadcom 4312 WLAN found (core revision 15)
[ 11.579806] Registered led device: b43-phy0::tx
[ 11.579825] Registered led device: b43-phy0::rx
[ 11.579841] Registered led device: b43-phy0::radio
[ 19.584232] b43 ssb0:0: firmware: requesting b43/ucode15.fw
[ 20.181918] b43 ssb0:0: firmware: requesting b43/lp0initvals15.fw
[ 20.191591] b43 ssb0:0: firmware: requesting b43/lp0bsinitvals15.fw
[ 20.329278] b43-phy0: Loading firmware version 410.2160 (2007-05-26 15:32:
可见b43工作正常,终于可以连接上WIFI了,但遗憾的是,过了一段时间之后又不行了,也难怪昨天能用,今天就不能用了,说明网卡驱动还是有问题!
所以选对网卡驱动和正确配置驱动,这才是解决问题的关键!
Broadcom有3种驱动包可共选择:
其中broadcom-wl对应一下网卡型号:
PCI-ID | Name |
---|---|
[14e4:4311] | BCM4311 |
[14e4:4312] | BCM4311 |
[14e4:4313] | BCM4311 |
[14e4:4315] | BCM4312 |
[14e4:4727] | BCM4313 |
[14e4:4328] | BCM4321 |
[14e4:4329] | BCM4321 |
[14e4:432a] | BCM4321 |
[14e4:432b] | BCM4322 |
[14e4:432c] | BCM4322 |
[14e4:432d] | BCM4322 |
[14e4:4353] | BCM43224 |
[14e4:4357] | BCM43225 |
[14e4:4358] | BCM43227 |
[14e4:4359] | BCM43228 |
针对Broadcom公司的网卡,查看对应自己笔记本的网卡
root@wsn-laptop:~# lspci -vnn |grep 14e4
0e:00.0 Network controller [0280]: Broadcom Corporation BCM4312 802.11b/g [14e4:4315] (rev 01)
知道自己的网卡是[14e4:4315], 所以应该用wl才对(Broadcom STA wireless Driver)。于是可以通过一下方式解决:
首先在内核中去掉b43模块:
sudo rmmod b43
sudo rmmod ssb
#加载wl模块如果系统中没有
可以在硬件驱动那里激活broadcom sta wireless driver或者命令行输入
sudo apt-get update sudo apt-get --reinstall install bcmwl-kernel-source然后加载wl模块:
sudo insmod wl
最后重启network-mamager或者重启系统即可,
问题最后解决。
总结:其实这个问题的根本原因是驱动和内核版本之间的冲突(驱动也有一些BUG)。所以要么更改驱动,要么升级内核,这样也就不会碰到这种问题了。
解决这个问题花了一天时间,可惜了^``~。