Ubuntu 無線網路串連WIFI(b43驅動出現DMA問題的解決)

來源:互聯網
上載者:User

複製/轉載請標明原出處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模式的(甚至和核心版本也有關),下面有說明:

  • LP-PHY devices: DMA errors on some machines with kernel 2.6. Problem was fixed in 3.0. Using PIO (module param) can be used as workaround for 2.6.
  • BCM4318 chipset: AP mode does not work because of packet loss in high transmission rates. Hard to debug & fix.

  • BCM4321: some cards do not work in DMA mode (PIO is needed).

看來我的本本上的網卡不支援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)。所以要麼更改驅動,要麼升級核心,這樣也就不會碰到這種問題了。

解決這個問題花了一天時間,可惜了^``~。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.