複製/轉載請標明原出處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
看來是網卡BM4312的驅動有問題,我的網卡是:Network controller: Broadcom Corporation BCM4312 802.11b/g (rev 01)
出現了DMA錯誤"This device does not support DMA on your system. Please use PIO instead"
說的是本筆記本網卡並不支援DMA傳輸模式,所以驅動報錯了。
如果是DMA模式,由於是直接記憶體存取,相對PIO模式,網卡速度會快一點,但實際應用中沒什麼區別,那是因為網路的速度是遠遠跟不上的。
Broadcom公司的有些網卡裝置是不支援DMA模式的(甚至和核心版本也有關),下面有說明:
看來我的本本上的網卡不支援DMA模式,這樣只能採用PIO模式了。
於是沿著這條線索找到解決辦法:
#更改b43.conf的設定檔
wsn@wsn-laptop:~$ sudo touch /etc/modprobe.d/b43.confwsn@wsn-laptop:~$ echo "options b43 pio=1 qos=0" | sudo tee -a /etc/modprobe.d/b43.confwsn@wsn-laptop:~$ sudo modprobe b43#然後重啟 network-managerwsn@wsn-laptop:~$ cd /etc/init.dwsn@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種驅動包可共選擇:
- brcmsmac/brcmfmac
- b43
- broadcom-wl
其中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 updatesudo apt-get --reinstall install bcmwl-kernel-source
然後載入wl模組:
sudo insmod wl
最後重啟network-mamager或者重啟系統即可,
問題最後解決。
總結:其實這個問題的根本原因是驅動和核心版本之間的衝突(驅動也有一些BUG)。所以要麼更改驅動,要麼升級核心,這樣也就不會碰到這種問題了。
解決這個問題花了一天時間,可惜了^``~。