解決 Atheros AR5007EG driver 和 bus numbers 不正確的問題
買新的 Laptop 本該是快樂的,但為了讓新電腦能夠好好的跑 Linux ,卻讓我睡不好覺好幾天,一點快樂的心情都沒有!
在抗戰了整整一個星期,挖遍了 madwifi.org 每個角落,請 google 大神解答了無數個問題後,終於成功的使我新買 Laptop -『 Toshiba Satellite L40 PSL48T-00K00J 』的 Wireless 動起來了!宣告戰勝的心情真是難以言喻! :P
扣除掉 Wireless,這台機器對 Linux 的支援度非常好,所有 Device 都能很順利的跑起來。由於顯示晶片是 Intel 965 ,Compiz 3D Desktop 不必特別設定就能順利的運作,3D 特效的效能也相當令人滿意﹝不能跑3D桌面我就不買了﹞。最重要的是整台機器只需要 2 萬元不到,實在是非常划算,對於預算不高的我,可以不必花大錢就足以應付 coding 、 presentation 、 炫麗的視覺效果等需求,有一分錢都沒浪費的感覺。﹝有些電腦就不知道在貴什麼了,令人想不透!﹞
因為目前的 Linux 並不支援這機器的 Wireless chipset -『 Atheros AR5007EG 』(與 EeePC 同系列的晶片),必須使用 Atheros 公司 patch 後的 madwifi driver 才能驅動 Wireless,這是比較麻煩的地方。﹝該 patch 並未 opensource 給 madwifi team,導致 madwifi team 不能接受此 patch,因此近期要看見 madwifi 正式支援 AR5007EG,恐怕是很困難的一件事﹞
關於該 patch 的取得和其詳細討論可在這找到:
http://madwifi.org/ticket/1679
But, 別高興太早,如果是這麼簡單,我也不必奮戰一整個星期了。
如果你的 NB 在 patch driver 後就能使 AR5007EG chipset 正常啟動,非常恭喜你。但是,如果你跟我一樣是『 Toshiba Satellite L40 PSL48T-00K00J 』這台機器,你應該會發現你的 wireless 還是不會動才對。:(
原本以為是驅動程式的問題,但經過多天的更換 madwifi driver 或使用 ndiswrapper 都無法搞定,甚至還瘋狂的將 madwifi 的 HAL 整個反組譯看個究竟。直到最後要放棄時才發現,某些 Laptop 的 BIOS 會令 kernel 無法正確指定『 PCI/cardbus bridge secondary/subordinate bus number 』,所以 kernel 無法控制位於那些 bridge 上的裝置。要解決這問題,你可以在電腦啟動時加入 "pci=assign-busses" boot option。
經查過一些資料後,發現此 option 是在 Linux kernel 2.6.13.3 時被加入的,其原 kernel patch 說明如下:
加入 boot option 再重新開機後,我新買的 Toshiba Satellite L40 PSL48T-00K00J 就可以順利的連接無線網路了。﹝笑﹞
註:由於 assign bus number 的問題可能發生在任何裝置上,要是你確定 NB 上的 Sound、Ethernet 等晶片或裝置 Linux 都有支援,可是卻無法正確運作,也請試試用本文的方法解決看看。
後記
Wireless 不動,誰也想不到是 bus number 錯誤惹的禍。這種底層 IO 通道指定錯誤的問題,雖曾在過去 Window 95/98 年代發生過,但今天恐怕不會有什麼人會相信它再次發生了,尤其還是發生在『企鵝』身上。
另外,多謝『 Kiss of Death 』這部老電影,提醒了我該注意更底層會忽略的事,臥底往往比看得見的敵人來得有威脅性多了,時時謹慎對他人搜身可以保證『邪惡』的事不被曝光洩露。看完這部電影,當下我就決定從 BIOS 和 kernel 的部份著手,沒想到不到半小時就搞定了一個星期無法解決的問題 XD
在抗戰了整整一個星期,挖遍了 madwifi.org 每個角落,請 google 大神解答了無數個問題後,終於成功的使我新買 Laptop -『 Toshiba Satellite L40 PSL48T-00K00J 』的 Wireless 動起來了!宣告戰勝的心情真是難以言喻! :P
扣除掉 Wireless,這台機器對 Linux 的支援度非常好,所有 Device 都能很順利的跑起來。由於顯示晶片是 Intel 965 ,Compiz 3D Desktop 不必特別設定就能順利的運作,3D 特效的效能也相當令人滿意﹝不能跑3D桌面我就不買了﹞。最重要的是整台機器只需要 2 萬元不到,實在是非常划算,對於預算不高的我,可以不必花大錢就足以應付 coding 、 presentation 、 炫麗的視覺效果等需求,有一分錢都沒浪費的感覺。﹝有些電腦就不知道在貴什麼了,令人想不透!﹞
因為目前的 Linux 並不支援這機器的 Wireless chipset -『 Atheros AR5007EG 』(與 EeePC 同系列的晶片),必須使用 Atheros 公司 patch 後的 madwifi driver 才能驅動 Wireless,這是比較麻煩的地方。﹝該 patch 並未 opensource 給 madwifi team,導致 madwifi team 不能接受此 patch,因此近期要看見 madwifi 正式支援 AR5007EG,恐怕是很困難的一件事﹞
關於該 patch 的取得和其詳細討論可在這找到:
http://madwifi.org/
But, 別高興太早,如果是這麼簡單,我也不必奮戰一整個星期了。
如果你的 NB 在 patch driver 後就能使 AR5007EG chipset 正常啟動,非常恭喜你。但是,如果你跟我一樣是『 Toshiba Satellite L40 PSL48T-00K00J 』這台機器,你應該會發現你的 wireless 還是不會動才對。:(
原本以為是驅動程式的問題,但經過多天的更換 madwifi driver 或使用 ndiswrapper 都無法搞定,甚至還瘋狂的將 madwifi 的 HAL 整個反組譯看個究竟。直到最後要放棄時才發現,某些 Laptop 的 BIOS 會令 kernel 無法正確指定『 PCI/cardbus bridge secondary/subordinate bus number 』,所以 kernel 無法控制位於那些 bridge 上的裝置。要解決這問題,你可以在電腦啟動時加入 "pci=assign-busses" boot option。
經查過一些資料後,發現此 option 是在 Linux kernel 2.6.13.3 時被加入的,其原 kernel patch 說明如下:
In some cases, especially on modern laptops with a lot of PCI and
cardbus bridges, we're unable to assign correct secondary/subordinate
bus numbers to all cardbus bridges due to BIOS limitations unless
we are using "pci=assign-busses" boot option.
So some cardbus controllers may not have attached subordinate pci_bus
structure, and yenta driver must cope with it - just ignore such cardbus
bridges.
加入 boot option 再重新開機後,我新買的 Toshiba Satellite L40 PSL48T-00K00J 就可以順利的連接無線網路了。﹝笑﹞
註:由於 assign bus number 的問題可能發生在任何裝置上,要是你確定 NB 上的 Sound、Ethernet 等晶片或裝置 Linux 都有支援,可是卻無法正確運作,也請試試用本文的方法解決看看。
後記
Wireless 不動,誰也想不到是 bus number 錯誤惹的禍。這種底層 IO 通道指定錯誤的問題,雖曾在過去 Window 95/98 年代發生過,但今天恐怕不會有什麼人會相信它再次發生了,尤其還是發生在『企鵝』身上。
另外,多謝『 Kiss of Death 』這部老電影,提醒了我該注意更底層會忽略的事,臥底往往比看得見的敵人來得有威脅性多了,時時謹慎對他人搜身可以保證『邪惡』的事不被曝光洩露。看完這部電影,當下我就決定從 BIOS 和 kernel 的部份著手,沒想到不到半小時就搞定了一個星期無法解決的問題 XD
如果真的不行,還有最後一道防線 ndiswrapper
回覆刪除如果 pci=assign-busses 沒有開,ndiswrapper 也無法使 wireless 啟動。
回覆刪除當初就是兩種 driver 都不能用,讓我一度想要跳樓 orz
你好,我是PTT的板友
回覆刪除我也遇到類似的問題,麻煩你可以幫我看看嗎?我為他困擾了很久
小弟使用的NB是ASUS 的A8LE
裝好ubuntu7.10,卻沒辦法使用無線網路,manual configuration裏面沒有無線網路選項
我在終端機打上sudo lshw -C network
出現了:
network UNCLAIMED
description: Ethernet controller
product: AR5006EG 802.11 b/g Wireless PCI Express Adapter
vendor: Atheros Communications, Inc.
physical id: 0
bus info: pci@0000:02:00.0
version: 01
width: 64 bits
clock: 33MHz
capabilities: pm msi pciexpress msix cap_list
configuration: latency=0
我想我使用的應該是Atheros 的AR5006EG吧
我試過madwifi,還有 ndiswrapper,但就是不能成功
ndiswrapper -l指令出現的output是 net5211 : invalid driver!
sudo iwconfig指令出現的則是
lo no wireless extensions.
eth0 no wireless extensions.
ppp0 no wireless extensions.
我按照您上面說的去作
但我不知道該怎麼加入boot option這個動作,可以請教一下該怎麼作嗎?
是在開機的grub中加入pci=assign-busses這個指令?
但我在重開機之後這個指令又不見了
而且也還是沒看到無線網路的選項
是不是我漏掉了什麼?可以請你一步步地教我該怎麼作嗎?謝謝>.<
請修改 /boot/grub/menu.lst ,並在您的啟動 Kernel 那行加上 pci=assign-busses。 :)
回覆刪除显然没有能够解决问题
回覆刪除我向大家推荐:
http://madwifi.org/ticket/1192
解决的就是这个问题
PSL48T-00K00J
回覆刪除請教這台電腦可以灌XP的系統嗎?
因為用了VISTA覺得不好用。
謝謝您!
E-
mail:
tommy66
1001@hotmail.com
Fedora linux 9 iwconfig 我的網卡有抓到、也有驅動...
回覆刪除但為什麼都抓不到我家的AP... 我用XP是可以正常上無線的...
NetworkManger & 也沒有任何的動作....
請大大教教我.... 謝謝!!!
我的網卡是 Atheros AR5006EG....聽說linux不支援這款網卡,請問大大可以交我怎麼做嗎? 我有爬過文,有人成功連線了....但沒有寫步驟,我想要整個操作的步驟,請救救我....... = =""
我有修改 /boot/grub/menu.lst ,並在啟動 Kernel 那行加上 pci=assign-busses。 重新開機,開機之後還是不能使用,一直說Wlan0 IP連線中....但最後都會失敗。 我在到/boot/grub/menu.lst 這裡看 Kernel,它並沒有回到最初....還是Kernel pci=assign-busses
請問怎麼會這樣...我也快瘋了!! 請教教我正確的步驟...謝謝!!!
AR5006EG 已經被 ath5k 所支援,2.6.26 以上的 kernel 都已經有該 driver。
回覆刪除因為我並未使用 Fedora,所以並不知道 Fedora 9 所用的 kernel 版本,你可以用 uname -a 去檢查一下。