2013-09-25 28 views
1

我已經安裝了CENTOS 6.3。我的機器是Dell Studio。我有以下無線broadcom模型。如何修復不在CENTOS上構建的802.11 Linux STA broadcom驅動程序?

[[email protected] hybrid_wl]# lspci | grep -i wireless 
03:00.0 Network controller: Broadcom Corporation BCM4313 802.11b/g/n Wireless LAN Controller (rev 01) 

我從http://www.broadcom.com/support/802.11/linux_sta.php得到了此驅動程序的源代碼。

我的機器的內核是

[[email protected] hybrid_wl]# uname -r 
2.6.32-358.18.1.el6.x86_64 

雖然從http://www.broadcom.com/support/802.11/linux_sta.php構建軟件包。 我收到以下錯誤。

KBUILD_NOPEDANTIC=1 make -C /lib/modules/`uname -r`/build M=`pwd` 
make[1]: Entering directory `/usr/src/kernels/2.6.32-358.18.1.el6.x86_64' 
CFG80211 API is prefered for this kernel version 
Using CFG80211 API 
    CC [M] /home/joshis1/hybrid_wl/src/wl/sys/wl_cfg80211_hybrid.o 
/home/joshis1/hybrid_wl/src/wl/sys/wl_cfg80211_hybrid.c:79: warning: ‘enum tx_power_setting’ declared inside parameter list 
/home/joshis1/hybrid_wl/src/wl/sys/wl_cfg80211_hybrid.c:79: warning: its scope is only this definition or declaration, which is probably not what you want 
/home/joshis1/hybrid_wl/src/wl/sys/wl_cfg80211_hybrid.c:1092: warning: ‘enum tx_power_setting’ declared inside parameter list 
/home/joshis1/hybrid_wl/src/wl/sys/wl_cfg80211_hybrid.c:1092: error: parameter 2 (‘type’) has incomplete type 
/home/joshis1/hybrid_wl/src/wl/sys/wl_cfg80211_hybrid.c: In function ‘wl_cfg80211_set_tx_power’: 
/home/joshis1/hybrid_wl/src/wl/sys/wl_cfg80211_hybrid.c:1103: error: ‘TX_POWER_AUTOMATIC’ undeclared (first use in this function) 
/home/joshis1/hybrid_wl/src/wl/sys/wl_cfg80211_hybrid.c:1103: error: (Each undeclared identifier is reported only once 
/home/joshis1/hybrid_wl/src/wl/sys/wl_cfg80211_hybrid.c:1103: error: for each function it appears in.) 
/home/joshis1/hybrid_wl/src/wl/sys/wl_cfg80211_hybrid.c:1105: error: ‘TX_POWER_LIMITED’ undeclared (first use in this function) 
/home/joshis1/hybrid_wl/src/wl/sys/wl_cfg80211_hybrid.c:1111: error: ‘TX_POWER_FIXED’ undeclared (first use in this function) 
/home/joshis1/hybrid_wl/src/wl/sys/wl_cfg80211_hybrid.c: At top level: 
/home/joshis1/hybrid_wl/src/wl/sys/wl_cfg80211_hybrid.c:1594: warning: initialization from incompatible pointer type 
/home/joshis1/hybrid_wl/src/wl/sys/wl_cfg80211_hybrid.c:1596: warning: initialization from incompatible pointer type 
/home/joshis1/hybrid_wl/src/wl/sys/wl_cfg80211_hybrid.c:1597: warning: initialization from incompatible pointer type 
/home/joshis1/hybrid_wl/src/wl/sys/wl_cfg80211_hybrid.c:1598: warning: initialization from incompatible pointer type 
/home/joshis1/hybrid_wl/src/wl/sys/wl_cfg80211_hybrid.c:1599: warning: initialization from incompatible pointer type 
/home/joshis1/hybrid_wl/src/wl/sys/wl_cfg80211_hybrid.c: In function ‘wl_inform_single_bss’: 
/home/joshis1/hybrid_wl/src/wl/sys/wl_cfg80211_hybrid.c:1764: error: too few arguments to function ‘ieee80211_channel_to_frequency’ 
/home/joshis1/hybrid_wl/src/wl/sys/wl_cfg80211_hybrid.c: In function ‘wl_bss_roaming_done’: 
/home/joshis1/hybrid_wl/src/wl/sys/wl_cfg80211_hybrid.c:2090: warning: passing argument 2 of ‘cfg80211_roamed’ from incompatible pointer type 
include/net/cfg80211.h:3124: note: expected ‘struct ieee80211_channel *’ but argument is of type ‘u8 *’ 
/home/joshis1/hybrid_wl/src/wl/sys/wl_cfg80211_hybrid.c:2090: warning: passing argument 4 of ‘cfg80211_roamed’ makes pointer from integer without a cast 
include/net/cfg80211.h:3124: note: expected ‘const u8 *’ but argument is of type ‘s32’ 
/home/joshis1/hybrid_wl/src/wl/sys/wl_cfg80211_hybrid.c:2090: warning: passing argument 5 of ‘cfg80211_roamed’ makes integer from pointer without a cast 
include/net/cfg80211.h:3124: note: expected ‘size_t’ but argument is of type ‘u8 *’ 
/home/joshis1/hybrid_wl/src/wl/sys/wl_cfg80211_hybrid.c:2090: warning: passing argument 6 of ‘cfg80211_roamed’ makes pointer from integer without a cast 
include/net/cfg80211.h:3124: note: expected ‘const u8 *’ but argument is of type ‘s32’ 
/home/joshis1/hybrid_wl/src/wl/sys/wl_cfg80211_hybrid.c:2090: error: too few arguments to function ‘cfg80211_roamed’ 
/home/joshis1/hybrid_wl/src/wl/sys/wl_cfg80211_hybrid.c: In function ‘wl_bss_connect_done’: 
/home/joshis1/hybrid_wl/src/wl/sys/wl_cfg80211_hybrid.c:2122: warning: passing argument 2 of ‘cfg80211_roamed’ from incompatible pointer type 
include/net/cfg80211.h:3124: note: expected ‘struct ieee80211_channel *’ but argument is of type ‘u8 *’ 
/home/joshis1/hybrid_wl/src/wl/sys/wl_cfg80211_hybrid.c:2122: warning: passing argument 4 of ‘cfg80211_roamed’ makes pointer from integer without a cast 
include/net/cfg80211.h:3124: note: expected ‘const u8 *’ but argument is of type ‘s32’ 
/home/joshis1/hybrid_wl/src/wl/sys/wl_cfg80211_hybrid.c:2122: warning: passing argument 5 of ‘cfg80211_roamed’ makes integer from pointer without a cast 
include/net/cfg80211.h:3124: note: expected ‘size_t’ but argument is of type ‘u8 *’ 
/home/joshis1/hybrid_wl/src/wl/sys/wl_cfg80211_hybrid.c:2122: warning: passing argument 6 of ‘cfg80211_roamed’ makes pointer from integer without a cast 
include/net/cfg80211.h:3124: note: expected ‘const u8 *’ but argument is of type ‘s32’ 
/home/joshis1/hybrid_wl/src/wl/sys/wl_cfg80211_hybrid.c:2122: error: too few arguments to function ‘cfg80211_roamed’ 
make[2]: *** [/home/joshis1/hybrid_wl/src/wl/sys/wl_cfg80211_hybrid.o] Error 1 
make[1]: *** [_module_/home/joshis1/hybrid_wl] Error 2 
make[1]: Leaving directory `/usr/src/kernels/2.6.32-358.18.1.el6.x86_64' 
make: *** [all] Error 2 

我該如何解決這個問題?我錯過了什麼?我還更新了Broadcom支持小組的電子郵件ID,這裏是[email protected]。 Broadcom是一家領先的公司,我希望他們在這裏幫助。我也通過電子郵件發送了他們。 Broadcom只能在這裏分享他們的解決方案,這樣世界才能從中受益。

給博通, 我已經發布了堆棧溢出,因爲每個人都可以獲得它的優勢。目前,我無法在筆記本電腦上使用WIFI。我堅持使用有線連接。請幫助我,讓我可以使用WIFI。當沒有什麼東西正在建設,我嘗試了以下最新版本。

使API = WEXT(不建議使用)---->我正在關注自述文件。

這會檢測可用的wifi網絡,但無法連接到AP。看起來這需要無線擴展工具。

是的,我需要爲它安裝任何東西。或者你說,不要使用過時的構建規則,而是修復構建錯誤?無論你對此有何建議?

建議,我可以關注它。

回答

3

的關鍵是在這裏: /home/joshis1/hybrid_wl/src/wl/sys/wl_cfg80211_hybrid.c:2122:錯誤:參數太少函數「cfg80211_roamed」

如果選中wl_cfg80211_hybrid。C〜2122行

cfg80211_roamed(ndev, 
#if LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 39) 
        NULL, 
#endif 
    (u8 *)&wl->bssid, conn_info->req_ie, conn_info->req_ie_len, 
    conn_info->resp_ie, conn_info->resp_ie_len,  GFP_KERNEL); 
    WL_DBG(("roaming result\n")); 
} 

雖然我與2.6.32它的運行版本網/ cfg80211.h的一個期望的額外的參數,所以我需要行改爲運行RHEL6.5: #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 32) - 或者完全刪除if/endif。不幸的是它並不止於此,如果在wl_cfg80211_hybrid.c中有大約十二個KERNEL_VERSION需要更改。

一旦完成(你可以測試但運行'make'並返回並修復錯誤),它會編譯並安裝正常。我正在用WPA運行它,如預期的那樣。看起來只是RedHat將一些cfg80211從更新的內核引入到2.6.32中,導致模塊混淆。

1

上週我和朋友的CentOS 6.4 Acer筆記本電腦(BCM 43227 WiFi)有完全相同的問題。 Broadcom驅動程序只能使用API​​ = WEXT選項(否則,您引用的錯誤信息相同)構建,但只能與「開放」WiFi網絡,而不是WPA/WPA2(不知道WEP)有關。在/var/log/wpa_supplicant.log中,當嘗試連接到WPA網絡時,我收到了錯誤消息association request to the driver failed,NetworkManager只會繼續詢問密碼。

除了直接編譯Broadcom驅動程序外,我還嘗試按照ELRepo wl-kmod Howto(通過CentOS wiki)建議構建RPM軟件包,但也失敗了(Broadcom文件名與預期的RPM不同)。

本週末我又看了一遍電腦,發現ELRepo Howto鏈接的RPM文件發生了變化,文檔本身在9月26日更新。所以我再次嘗試使用較新的RPM,正好遵循instructions,這一次它工作正常。有一個安裝了wl.ko內核模塊的RPM文件。加載它通過modprobe wl,之後,NetworkManager發現我的WPA2 WiFi和第一次嘗試連接。

+0

非常感謝!我從支柱走到後期,無法從Broadcom和CENTOS社區獲得答案。我等不了多久,所以我剛剛從CENTOS轉移到FC19,並且工作正常。非常感謝!我對FC很滿意。 –

+0

與上述相同的問題; CentOS 6.4 64位戴爾M4600; BCM4313。 ELRepo wl-kmod也爲我工作 - 這是唯一有效的工作。我使用WEXT構建了Broadcom驅動程序,因爲CFG80211未構建,然後使用wpa_supplicant -Dwext與WPA/WPA2和WEP一起嘗試。沒有運氣:「對駕駛員的關聯請求失敗」。同樣的問題。謝謝Marie Fischer和ELRepo – 2013-10-31 16:43:32

相關問題