1

CENTOS 6.3 をインストールしました。私のマシンは Dell Studio です。次のワイヤレス ブロードコム モデルを使用しています。

[root@treasure 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から取得しました。

私のマシンのカーネルは

[root@treasure 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 も更新しました。こちらは linux-wlan-client-support-list@broadcom.com です。Broadcom はリーディング カンパニーであり、ここでの支援を期待しています。私も彼らにメールしました。Broadcom はここでのみソリューションを共有できるため、世界中が恩恵を受けることができます。

Broadcom には、これをスタック オーバーフローに投稿しました。現在、ラップトップで WIFI を使用できません。私は有線接続で立ち往生しています。WIFIが使えるように助けてください。何もビルドされていないときに、最新リリースで次のことを試しました。

make API=WEXT (非推奨) ----> readme ファイルに従っています。

これにより、利用可能な Wi-Fi ネットワークが検出されますが、AP に接続できません。これにはワイヤレス拡張ツールが必要なようです。

そのために何かをインストールする必要があります。それとも、非推奨のビルド ルールを使用せずに、ビルド エラーを修正すると言いますか? それについてあなたの提案は何ですか?

提案、私はそれに従うことができます。

4

2 に答える 2

3

キーはここにあります: /home/joshis1/hybrid_wl/src/wl/sys/wl_cfg80211_hybrid.c:2122: エラー: 関数 'cfg80211_roamed' への引数が少なすぎます</p>

wl_cfg80211_hybrid.c ~line 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 で RHEL6.5 を実行していますが、追加の引数を必要とするバージョンの net/cfg80211.h を実行しているため、行を次のように変更する必要がありました: #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 32)- または、if/endif を完全に削除するだけです。残念ながら、それだけではありません。変更が必要な wl_cfg80211_hybrid.c にある場合、それは約 12 個の KERNEL_VERSION です。

完了すると(テストはできますが、「make」を実行して戻ってエラーを修正します)、コンパイルとインストールは正常に行われます。私は今、WPAなどで実行しています。期待どおりです。モジュールを混乱させるのは、RedHat が最近のカーネルから 2.6.32 にいくつかの cfg80211 を持ち込んでいるようです。

于 2013-12-05T21:41:47.830 に答える
1

先週、友人の CentOS 6.4 Acer ラップトップ (BCM 43227 WiFi) でまったく同じ問題が発生しました。Broadcom ドライバーは、API=WEXT オプションでのみビルドされます (それ以外の場合は、引用したのと同じエラー メッセージ) が、WPA/WPA2 ではなく、「オープン」WiFi ネットワークでのみ機能します (WEP についてはわかりません)。/var/log/wpa_supplicant.log でassociation request to the driver failed、WPA ネットワークに接続しようとするとエラー メッセージが表示され、NetworkManager はパスワードを要求し続けます。

Broadcom ドライバーを直接コンパイルするだけでなく、ELRepo wl-kmod Howtoで提案されているように ( CentOS wiki経由で) RPM パッケージをビルドしようとしましたが、これも失敗しました (Broadcom ファイル名が予想される RPM とは異なりました)。

今週末もう一度コンピューターを調べたところ、ELRepo ハウツーにリンクされている RPM ファイルが変更され、ドキュメント自体が 9 月 26 日に更新されていることがわかりました。そのため、新しい RPM を使用して、指示に正確に従って再試行したところ、今回はうまくいきました。wl.ko カーネル モジュールをインストールした RPM ファイルを取得しました。経由でロードしたmodprobe wl後、NetworkManager が WPA2 wifi を検出し、最初の試行で接続しました。

于 2013-09-30T08:35:21.517 に答える