「Broadcom ワイヤレス」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
 
(リンクを修正)
 
(2人の利用者による、間の11版が非表示)
1行目: 1行目:
 
[[Category:無線ネットワーク]]
 
[[Category:無線ネットワーク]]
 
[[en:Broadcom wireless]]
 
[[en:Broadcom wireless]]
[[zh-CN:Broadcom wireless]]
+
[[zh-hans:Broadcom wireless]]
  +
{{Related articles start}}
  +
{{Related|ワイヤレスネットワーク設定}}
  +
{{Related articles end}}
  +
この記事では Broadcom のワイヤレスネットワークデバイスをインストール・設定する方法を説明しています。
 
== イントロダクション ==
 
== イントロダクション ==
   
GNU/Linux における自社製品の Wi-Fi カードのサポートについて Broadcom は(悪い意味で)有名でした。最近になるまで、ほとんどの Broadcom のチップは全くサポートがなかったり、ユーザー自身がファームウェアを弄る必要があったのです。当時はリバースエンジニアリングによるドライバー ({{ic|brcm4xxx}}, {{ic|b43}} など) によって限られた数のワイヤレスチップだけがサポートされていました。リバースエンジニアリングの [http://wireless.kernel.org/en/users/Drivers/b43 b43] ドライバーは 2.6.24 からカーネルに入りました。
+
GNU/Linux における自社製品の Wi-Fi カードのサポートについて Broadcom は(悪い意味で)有名でした。最近になるまで、ほとんどの Broadcom のチップは全くサポートがなかったり、ユーザー自身がファームウェアを弄る必要があったのです。当時はリバースエンジニアリングによるドライバー ({{ic|brcm4xxx}}, {{ic|b43}} など) によって限られた数のワイヤレスチップだけがサポートされていました。リバースエンジニアリングの [https://wireless.kernel.org/en/users/Drivers/b43 b43] ドライバーは 2.6.24 からカーネルに入りました。
   
 
2008年の8月に、Broadcom は GNU/Linux で Broadcom の無線ハードウェアをサポートする [http://www.broadcom.com/support/802.11/linux_sta.php 802.11 Linux STA ドライバー] を公式にリリースします。それらは制限的なライセンスのドライバーでしたが、Broadcom は将来もっとオープンなアプローチを目指すことを約束しました。なお、このドライバーは隠蔽された ESSID では動作しません。
 
2008年の8月に、Broadcom は GNU/Linux で Broadcom の無線ハードウェアをサポートする [http://www.broadcom.com/support/802.11/linux_sta.php 802.11 Linux STA ドライバー] を公式にリリースします。それらは制限的なライセンスのドライバーでしたが、Broadcom は将来もっとオープンなアプローチを目指すことを約束しました。なお、このドライバーは隠蔽された ESSID では動作しません。
   
2010年9月、Broadcom は彼らのハードウェアのための完全にオープンソースなドライバーを [http://thread.gmane.org/gmane.linux.kernel.wireless.general/55418 最終的にリリース] しました。このドライバー、[http://wireless.kernel.org/en/users/Drivers/brcm80211 brcm80211] はカーネル 2.6.37 から含まれています。2.6.39 のリリース時に、これらのドライバーは {{ic|brcmsmac}} と {{ic|brcmfmac}} に名前が変更されています。
+
2010年9月、Broadcom は彼らのハードウェアのための完全にオープンソースなドライバーを [http://thread.gmane.org/gmane.linux.kernel.wireless.general/55418 最終的にリリース] しました。このドライバー、[https://wireless.kernel.org/en/users/Drivers/brcm80211 brcm80211] はカーネル 2.6.37 から含まれています。2.6.39 のリリース時に、これらのドライバーは {{ic|brcmsmac}} と {{ic|brcmfmac}} に名前が変更されています。
   
 
執筆時点で、Broadcom Wi-Fi チップセットを使っているユーザーには3つの選択肢が存在します:
 
執筆時点で、Broadcom Wi-Fi チップセットを使っているユーザーには3つの選択肢が存在します:
15行目: 19行目:
 
! ドライバー !! 説明
 
! ドライバー !! 説明
 
|-
 
|-
|brcmsmac/brcmfmac || オープンソースのカーネルドライバー
+
| brcm80211 || オープンソースのカーネルドライバー (推奨)
 
|-
 
|-
|b43 || リバースエンジニアリングによるカーネルドライバー
+
| b43 || リバースエンジニアリングによるカーネルドライバー
 
|-
 
|-
|broadcom-wl || プロプライエタリな Broadcom STA ドライバー
+
| broadcom-wl || プロプライエタリな Broadcom STA ドライバー
 
|}
 
|}
   
== どのドライバーが必要で使用可能なか確かめる ==
+
== ドライバーの選択 ==
   
 
まず、あなたの使っているカードの [[Wikipedia:PCI_configuration_space|PCI-ID]] を確認してください。コンソールに次のコマンドを入力 (大文字小文字の違いに気をつけて下さい):
 
まず、あなたの使っているカードの [[Wikipedia:PCI_configuration_space|PCI-ID]] を確認してください。コンソールに次のコマンドを入力 (大文字小文字の違いに気をつけて下さい):
$ lspci -vnn | grep 14e4:
+
$ lspci -vnn -d 14e4:
   
それから、あなたのカードを [http://wireless.kernel.org/en/users/Drivers/b43#Supported_devices b43 でサポートされている デバイスのリスト] と [http://wireless.kernel.org/en/users/Drivers/brcm80211#Supported_Chips brcm80211 でサポートされているデバイスのリスト] を見て確認してください。
+
それから、あなたのカードを [https://wireless.wiki.kernel.org/en/users/Drivers/b43#list_of_hardware b43 でサポートされている デバイスのリスト] と [https://wireless.wiki.kernel.org/en/users/Drivers/brcm80211#supported_chips でサポートされているデバイスのリスト] を見て確認してください。
   
== ドラの取得 ==
+
== インスト ==
   
=== brcmsmac/brcmfmac ===
+
=== brcm80211 ===
 
{{ic|brcm80211}} ドライバーはカーネルに含まれています。PCI カードには {{ic|brcmsmac}}、SDIO デバイスには {{ic|brcmfmac}} という名前が付けられています。
 
{{ic|brcm80211}} ドライバーはカーネルに含まれています。PCI カードには {{ic|brcmsmac}}、SDIO デバイスには {{ic|brcmfmac}} という名前が付けられています。
   
これらのドライバーは起動時に自動的にロードされるためユーザーがやらなくてはならない操作はありません。ドライバーが自動的にロードされない場合は、手動でドライバーを[[Kernel modules#ロード|ロード]]してください。
+
これらのドライバーは起動時に自動的にロードされるためユーザーがやらなくてはならない操作はありません。ドライバーが自動的にロードされない場合は、手動でドライバーを[[カーネルモジュール#ロード|ロード]]してください。
   
  +
{{Note|
{{Note|1={{pkg|linux}} 3.3.1 から、{{ic|brcmsmac}} ドライバーは {{ic|bcma}} モジュールに依存するようになっています。従って、{{ic|bcma}} モジュールを[[Kernel_modules#ブラックリスト|ブラックリスト]]に入れてはいけません。}}
 
  +
* {{ic|brcmfmac}} は新しいチップセットをサポートしており、AP モードや P2P モード、ハードウェア暗号化などもサポートしています。
 
{{Note|[http://wireless.kernel.org/en/users/Drivers/brcm80211 wireless.kernel.org] によれば brcm80211 SSB backplane を使っている古い PCI/PCI-E チップサポートしていません。}}
+
* {{ic|brcmsmac}} BCM4313, BCM43224, BCM43225 などの古いチップセットしかサポートしていません。
  +
* {{pkg|linux}} 3.3.1 から、{{ic|brcmsmac}} ドライバーは {{ic|bcma}} モジュールに依存するようになっています。従って、{{ic|bcma}} モジュールを[[カーネルモジュール#ブラックリスト|ブラックリスト]]に入れてはいけません。
  +
* [https://wireless.kernel.org/en/users/Drivers/brcm80211 wireless.kernel.org] によれば brcm80211 は SSB backplane を使っている古い PCI/PCI-E チップをサポートしていません。}}
   
 
=== b43/b43legacy ===
 
=== b43/b43legacy ===
44行目: 50行目:
   
 
==== b43/b43legacy カーネルモジュールのロード ====
 
==== b43/b43legacy カーネルモジュールのロード ====
あなたの使っているデバイスを [http://wireless.kernel.org/en/users/Drivers/b43#Known_PCI_devices こちら] で検索してどちらのモジュールが必要なのか確認してください。[http://wireless.kernel.org/en/users/Drivers/b43/devices ここ] でコンピュータの機種で検索することもできます。問題が発生しないようにもう片方のモジュールはブラックリストに入れます ({{ic|b43}} または {{ic|b43legacy}})。ブラックリスト化の方法は、[[カーネルモジュール#ブラックリスト]] を参照。
+
あなたの使っているデバイスを [https://wireless.kernel.org/en/users/Drivers/b43#Known_PCI_devices こちら] で検索してどちらのモジュールが必要なのか確認してください。[https://wireless.kernel.org/en/users/Drivers/b43/devices ここ] でコンピュータの機種で検索することもできます。問題が発生しないようにもう片方のモジュールはブラックリストに入れます ({{ic|b43}} または {{ic|b43legacy}})。ブラックリスト化の方法は、[[カーネルモジュール#ブラックリスト]] を参照。
   
[[AUR|AUR]] から {{AUR|b43-firmware}} {{AUR|b43-firmware-legacy}} のどちらか適切なをインストールしてください。
+
[[AUR]] から {{AUR|b43-firmware}}, {{aur|b43-firmware-classic}}, {{AUR|b43-firmware-legacy}}{{Broken package link|パッケージが存在しません}} のどか適切なパッケージをインストールしてください。
  +
  +
{{Note|
  +
* BCM4306 rev.3, BCM4311, BCM4312 は ''b43-firmware'' だと問題が発生します。{{aur|b43-firmware-classic}} を使って下さい。
  +
* BCM4331 は ''b43-firmware-classic'' だと問題が発生します。{{aur|b43-firmware}} を使って下さい。
  +
}}
   
 
b43 によってサポートされているデバイスの低電圧版を使っている場合、特別なファームウェアをインストールする必要があります。低電圧版のチップを使っているのかどうかは {{ic|<nowiki>lspci | grep Broadcom | grep LP-PHY</nowiki>}} を実行することですぐに確認できます。ファームウェアのインストールは、下で説明しているように [http://downloads.openwrt.org/sources/broadcom-wl-4.178.10.4.tar.bz2 適切なパッケージ] をダウンロードして {{ic|b43-fwcutter}} を使うか、[https://github.com/dbb/scripts/blob/master/b43-lp-installer このインストールスクリプト]を使用することで可能です。
 
b43 によってサポートされているデバイスの低電圧版を使っている場合、特別なファームウェアをインストールする必要があります。低電圧版のチップを使っているのかどうかは {{ic|<nowiki>lspci | grep Broadcom | grep LP-PHY</nowiki>}} を実行することですぐに確認できます。ファームウェアのインストールは、下で説明しているように [http://downloads.openwrt.org/sources/broadcom-wl-4.178.10.4.tar.bz2 適切なパッケージ] をダウンロードして {{ic|b43-fwcutter}} を使うか、[https://github.com/dbb/scripts/blob/master/b43-lp-installer このインストールスクリプト]を使用することで可能です。
   
 
LP-PHY ファームウェアをインストールするには、以下を実行:
 
LP-PHY ファームウェアをインストールするには、以下を実行:
{{bc|<nowiki>curl -LO http://downloads.openwrt.org/sources/broadcom-wl-4.178.10.4.tar.bz2
+
$ curl -LO http://downloads.openwrt.org/sources/broadcom-wl-4.178.10.4.tar.bz2
tar xjf broadcom-wl-4.178.10.4.tar.bz2
+
$ tar xjf broadcom-wl-4.178.10.4.tar.bz2
cd broadcom-wl-4.178.10.4/linux
+
$ cd broadcom-wl-4.178.10.4/linux
b43-fwcutter -w /lib/firmware wl_apsta.o</nowiki>}}
+
# b43-fwcutter -w /lib/firmware wl_apsta.o
   
 
ファームウェアをインストールしたら、デバイスを設定することができるようになります。
 
ファームウェアをインストールしたら、デバイスを設定することができるようになります。
   
{{Note|1=b43 モジュールがロードされて機能しているようなのにデバイスにアクセスできないときは、おそらく {{ic|bcma}} モジュールを[[Kernel_modules#ブラックリスト|ブラックリスト化]]する必要があります。[[#カーネルをアップグレードした後に Wi-Fi カードが動作しなくなった又は認識されなくなった (brcmsmac)|下のトラブルシューティング]]を見て下さい。それで問題が解決しない場合、b43 を使うように {{ic|CONFIG_B43_BCMA_EXTRA}} オプションを設定してカーネルを再コンパイルしなくてはなりません。このオプションはモジュール間での競合状態を解決するために導入されたもので BCM4322, BCM43224, BCM43225 チップセットのカードでは必須です。}}
+
{{Note|1=b43 モジュールがロードされて機能しているようなのにデバイスにアクセスできないときは、おそらく {{ic|bcma}} モジュールを[[カーネルモジュール#ブラックリスト|ブラックリスト化]]する必要があります。[[#カーネルをアップグレードした後に Wi-Fi カードが動作しなくなった又は認識されなくなった (brcmsmac)|下のトラブルシューティング]]を見て下さい。それで問題が解決しない場合、b43 を使うように {{ic|CONFIG_B43_BCMA_EXTRA}} オプションを設定してカーネルを再コンパイルしなくてはなりません。このオプションはモジュール間での競合状態を解決するために導入されたもので BCM4322, BCM43224, BCM43225 チップセットのカードでは必須です。}}
   
 
=== broadcom-wl ===
 
=== broadcom-wl ===
 
{{Warning|このドライバーは長年の尽力により成熟しており現在はほとんど問題なく動くようになっていますが、このドライバーは2つのオープンソースドライバーがあなたの使っているデバイスをサポートしていないときにだけ使うことが推奨されています。サポートされているデバイスのリストについてはプロジェクトの [http://linuxwireless.org/en/users/Drivers/b43/#Supported_devices b43] のページを参照してください。}}
 
{{Warning|このドライバーは長年の尽力により成熟しており現在はほとんど問題なく動くようになっていますが、このドライバーは2つのオープンソースドライバーがあなたの使っているデバイスをサポートしていないときにだけ使うことが推奨されています。サポートされているデバイスのリストについてはプロジェクトの [http://linuxwireless.org/en/users/Drivers/b43/#Supported_devices b43] のページを参照してください。}}
  +
{{ic|broadcom-wl}} ドライバーを使いたい人のために、[[Arch User Repository|AUR]] には {{AUR|broadcom-wl}} という名前でパッケージが存在します。[[DKMS|DKMS]] を使いたい場合は {{AUR|broadcom-wl-dkms}} があります。
 
  +
制限ライセンスのドライバーは以下のパッケージで使うことができます:
  +
* 標準パッケージ: {{Pkg|broadcom-wl}}
  +
* [[DKMS]] パッケージ: {{Pkg|broadcom-wl-dkms}}
  +
  +
{{Tip|{{Pkg|broadcom-wl}} を使用する場合、カーネルをアップグレードするたびに無線が使えなくなり、パッケージをアンインストールしてから再インストールする必要があります。{{Pkg|broadcom-wl-dkms}} を使うことでその手間を省くことができます。}}
   
 
==== wl カーネルモジュールのロード ====
 
==== wl カーネルモジュールのロード ====
90行目: 106行目:
   
 
{{Note|Broadcom Corporation BCM4311 802.11b/g WLAN [14e4:4311] は {{ic|b43}} と {{ic|ssb}} をブラックリスト化しても動作しません。}}
 
{{Note|Broadcom Corporation BCM4311 802.11b/g WLAN [14e4:4311] は {{ic|b43}} と {{ic|ssb}} をブラックリスト化しても動作しません。}}
  +
  +
==== broadcom-wl をモニターモードに設定 ====
  +
  +
broadcom-wl をモニターモードに設定するには {{ic|/proc/brcm_monitor0)}} を 1 に設定してください:
  +
  +
# echo 1 > /proc/brcm_monitor0
  +
  +
{{ic|prism0}} という名前の新しいネットワークインターフェイスが作成されます。
  +
  +
モニターモードで使うときは新しく作成されたネットワークインターフェイスを使うようにしてください。
   
 
== トラブルシューティング ==
 
== トラブルシューティング ==
  +
 
=== Wi-Fi カードが存在しないかのように扱われる ===
 
=== Wi-Fi カードが存在しないかのように扱われる ===
   
99行目: 126行目:
   
 
カーネルが {{ic|brcmsmac}} モジュールの代わりに {{ic|bcma}} モジュールを使用することで起こります。解決方法は {{ic|bcma}} モジュールをブラックリストに入れることです。方法は、[[カーネルモジュール#ブラックリスト]] を見て下さい。
 
カーネルが {{ic|brcmsmac}} モジュールの代わりに {{ic|bcma}} モジュールを使用することで起こります。解決方法は {{ic|bcma}} モジュールをブラックリストに入れることです。方法は、[[カーネルモジュール#ブラックリスト]] を見て下さい。
{{Note|This affects only Linux kernels 3.0, 3.1, and 3.2. Since kernel 3.3, the {{ic|brcmsmac}} module actually uses {{ic|bcma}}, so {{ic|bcma}} needs to be unblacklisted or the Wi-Fi interface will not appear.}}
+
{{Note|上記の設定が必要なのは Linux カーネル 3.0, 3.1, 3.2 だけです。カーネル 3.3 からは、{{ic|brcmsmac}} モジュールは {{ic|bcma}} を使用するため、{{ic|bcma}} のブラックリストを解除しないと Wi-Fi インターフェイスが使えません。}}
   
 
=== Wi-Fi カードが動作しない又は認識されない (broadcom-wl) ===
 
=== Wi-Fi カードが動作しない又は認識されない (broadcom-wl) ===
 
適切なモジュールがロードされているか確認してください。不要なモジュールが自動的にロードされないように {{ic|brcm80211}}, {{ic|b43}}, {{ic|ssb}} カーネルモジュールをブラックリスト化させる必要があるかもしれません。ブラックリストの方法については、[[カーネルモジュール#ブラックリスト]] を参照。
 
適切なモジュールがロードされているか確認してください。不要なモジュールが自動的にロードされないように {{ic|brcm80211}}, {{ic|b43}}, {{ic|ssb}} カーネルモジュールをブラックリスト化させる必要があるかもしれません。ブラックリストの方法については、[[カーネルモジュール#ブラックリスト]] を参照。
   
  +
{{Note|{{ic|brcm80211}} ドライバーをブラックリストに入れる必要はないかもしれません。2011年6月20日現在、デフォルトで {{ic|wl}} ドライバーの前に {{ic|brcm80211}} モジュールがロードされるため、{{ic|wl}} は使用されません。}}
{{Note|You may not have to blacklist the {{ic|brcm80211}} driver; although as of 2011-06-20, it will still default to loading the {{ic|brcm80211}} module before the {{ic|wl}} driver, which prevents {{ic|wl}} from being used.}}
 
   
 
モジュールの依存関係が更新されたか確認:
 
モジュールの依存関係が更新されたか確認:
130行目: 157行目:
 
enabled, active
 
enabled, active
   
このメッセージは {{ic|/etc/systemd/journald.conf}} の {{ic|MaxLevelConsole}} を設定するなど、通常の方法で消すことはできません。メッセージを消すためには、{{ic|dmesg}} がコンソールにメッセージを表示するレベルを低く設定する必要があります。シンプルな [[systemd|systemd]] サービスを作ることでこの設定を起動時に行うことが可能です。
+
このメッセージは {{ic|/etc/systemd/journald.conf}} の {{ic|MaxLevelConsole}} を設定するなど、通常の方法で消すことはできません。メッセージを消すためには、{{ic|dmesg}} がコンソールにメッセージを表示するレベルを低く設定する必要があります。シンプルな [[systemd]] サービスを作ることでこの設定を起動時に行うことが可能です。
   
 
{{ic|/etc/systemd/system/}} に {{ic|brcms_suppression.service}} というような名前のファイルを作成してください:
 
{{ic|/etc/systemd/system/}} に {{ic|brcms_suppression.service}} というような名前のファイルを作成してください:
153行目: 180行目:
 
=== インターフェイスは表示されるのに接続ができない ===
 
=== インターフェイスは表示されるのに接続ができない ===
   
以下を[[Kernel parameters|カーネルコマンドライン]]に追加:
+
以下を[[カーネルコマンドライン]]に追加:
 
b43.allhwsupport=1
 
b43.allhwsupport=1
   
160行目: 187行目:
 
{{ic|b43}} ドライバーの電源管理は BCM43228 チップ (やその他の Broadcom チップセット) で想定に少しだけ誤差があって、カーネルログに "(Reason: 3=DEAUTH_LEAVING)" を残して切断してしまうことがあります。電源管理を無効化することで解決します。一時的に修正するには、root で次を実行: {{ic|iw <interface> set power_save off}}。
 
{{ic|b43}} ドライバーの電源管理は BCM43228 チップ (やその他の Broadcom チップセット) で想定に少しだけ誤差があって、カーネルログに "(Reason: 3=DEAUTH_LEAVING)" を残して切断してしまうことがあります。電源管理を無効化することで解決します。一時的に修正するには、root で次を実行: {{ic|iw <interface> set power_save off}}。
   
このコマンドで解決した場合は、[[udev|udev]] ルールを新しく追加することで修正を永続的にできます:
+
このコマンドで解決した場合は、[[udev]] ルールを新しく追加することで修正を永続的にできます:
   
 
{{hc|/etc/udev/rules.d/70-b43.rules|2=
 
{{hc|/etc/udev/rules.d/70-b43.rules|2=
166行目: 193行目:
 
}}
 
}}
   
  +
=== Asus PCE-AC88 のファームウェアが見つからない ===
=== 雑多なノート ===
 
  +
  +
{{ic|brcmfmac4366c-pcie.bin}} ファームウェアを展開する方法は [https://ubuntuforums.org/showthread.php?t=2337200&p=13618497#post13618497] を見てください。
  +
  +
=== 一部のルーターで接続が不安定 ===
   
  +
問題が解決しない場合、{{Pkg|linux-lts}} をインストールしたり[[パッケージのダウングレード|ドライバーのバージョンを下げて]]みてください。
[[Talk:Broadcom wireless]] を見て下さい。
 

2023年7月10日 (月) 09:57時点における最新版

関連記事

この記事では Broadcom のワイヤレスネットワークデバイスをインストール・設定する方法を説明しています。

イントロダクション

GNU/Linux における自社製品の Wi-Fi カードのサポートについて Broadcom は(悪い意味で)有名でした。最近になるまで、ほとんどの Broadcom のチップは全くサポートがなかったり、ユーザー自身がファームウェアを弄る必要があったのです。当時はリバースエンジニアリングによるドライバー (brcm4xxx, b43 など) によって限られた数のワイヤレスチップだけがサポートされていました。リバースエンジニアリングの b43 ドライバーは 2.6.24 からカーネルに入りました。

2008年の8月に、Broadcom は GNU/Linux で Broadcom の無線ハードウェアをサポートする 802.11 Linux STA ドライバー を公式にリリースします。それらは制限的なライセンスのドライバーでしたが、Broadcom は将来もっとオープンなアプローチを目指すことを約束しました。なお、このドライバーは隠蔽された ESSID では動作しません。

2010年9月、Broadcom は彼らのハードウェアのための完全にオープンソースなドライバーを 最終的にリリース しました。このドライバー、brcm80211 はカーネル 2.6.37 から含まれています。2.6.39 のリリース時に、これらのドライバーは brcmsmacbrcmfmac に名前が変更されています。

執筆時点で、Broadcom Wi-Fi チップセットを使っているユーザーには3つの選択肢が存在します:

ドライバー 説明
brcm80211 オープンソースのカーネルドライバー (推奨)
b43 リバースエンジニアリングによるカーネルドライバー
broadcom-wl プロプライエタリな Broadcom STA ドライバー

ドライバーの選択

まず、あなたの使っているカードの PCI-ID を確認してください。コンソールに次のコマンドを入力 (大文字小文字の違いに気をつけて下さい):

$ lspci -vnn -d 14e4:

それから、あなたのカードを b43 でサポートされている デバイスのリストでサポートされているデバイスのリスト を見て確認してください。

インストール

brcm80211

brcm80211 ドライバーはカーネルに含まれています。PCI カードには brcmsmac、SDIO デバイスには brcmfmac という名前が付けられています。

これらのドライバーは起動時に自動的にロードされるためユーザーがやらなくてはならない操作はありません。ドライバーが自動的にロードされない場合は、手動でドライバーをロードしてください。

ノート:
  • brcmfmac は新しいチップセットをサポートしており、AP モードや P2P モード、ハードウェア暗号化などもサポートしています。
  • brcmsmac は BCM4313, BCM43224, BCM43225 などの古いチップセットしかサポートしていません。
  • linux 3.3.1 から、brcmsmac ドライバーは bcma モジュールに依存するようになっています。従って、bcma モジュールをブラックリストに入れてはいけません。
  • wireless.kernel.org によれば brcm80211 は SSB backplane を使っている古い PCI/PCI-E チップをサポートしていません。

b43/b43legacy

このドライバーは 2.6.24 からカーネルにマージされています。

b43/b43legacy カーネルモジュールのロード

あなたの使っているデバイスを こちら で検索してどちらのモジュールが必要なのか確認してください。ここ でコンピュータの機種で検索することもできます。問題が発生しないようにもう片方のモジュールはブラックリストに入れます (b43 または b43legacy)。ブラックリスト化の方法は、カーネルモジュール#ブラックリスト を参照。

AUR から b43-firmwareAUR, b43-firmware-classicAUR, b43-firmware-legacyAUR[リンク切れ: パッケージが存在しません] のどれか適切なパッケージをインストールしてください。

ノート:
  • BCM4306 rev.3, BCM4311, BCM4312 は b43-firmware だと問題が発生します。b43-firmware-classicAUR を使って下さい。
  • BCM4331 は b43-firmware-classic だと問題が発生します。b43-firmwareAUR を使って下さい。

b43 によってサポートされているデバイスの低電圧版を使っている場合、特別なファームウェアをインストールする必要があります。低電圧版のチップを使っているのかどうかは lspci | grep Broadcom | grep LP-PHY を実行することですぐに確認できます。ファームウェアのインストールは、下で説明しているように 適切なパッケージ をダウンロードして b43-fwcutter を使うか、このインストールスクリプトを使用することで可能です。

LP-PHY ファームウェアをインストールするには、以下を実行:

$ curl -LO http://downloads.openwrt.org/sources/broadcom-wl-4.178.10.4.tar.bz2
$ tar xjf broadcom-wl-4.178.10.4.tar.bz2
$ cd broadcom-wl-4.178.10.4/linux
# b43-fwcutter -w /lib/firmware wl_apsta.o

ファームウェアをインストールしたら、デバイスを設定することができるようになります。

ノート: b43 モジュールがロードされて機能しているようなのにデバイスにアクセスできないときは、おそらく bcma モジュールをブラックリスト化する必要があります。下のトラブルシューティングを見て下さい。それで問題が解決しない場合、b43 を使うように CONFIG_B43_BCMA_EXTRA オプションを設定してカーネルを再コンパイルしなくてはなりません。このオプションはモジュール間での競合状態を解決するために導入されたもので BCM4322, BCM43224, BCM43225 チップセットのカードでは必須です。

broadcom-wl

警告: このドライバーは長年の尽力により成熟しており現在はほとんど問題なく動くようになっていますが、このドライバーは2つのオープンソースドライバーがあなたの使っているデバイスをサポートしていないときにだけ使うことが推奨されています。サポートされているデバイスのリストについてはプロジェクトの b43 のページを参照してください。

制限ライセンスのドライバーは以下のパッケージで使うことができます:

ヒント: broadcom-wl を使用する場合、カーネルをアップグレードするたびに無線が使えなくなり、パッケージをアンインストールしてから再インストールする必要があります。broadcom-wl-dkms を使うことでその手間を省くことができます。

wl カーネルモジュールのロード

他の使用可能なモジュールが存在しない場合、wl モジュールを手動でロードする必要があります。wl モジュールをロードする前に、b43 など他のモジュールを取り除いて下さい、おそらく自動的にロードされています:

# rmmod b43

ssb がロードされている場合も、アンロードしてください:

# rmmod ssb
ノート: ssb のアンロードが失敗すると無線インターフェイスが作られなくなることがあります。

wl モジュールをロード:

# modprobe wl

wl モジュールは lib80211 または lib80211_crypt_tkip を自動的にロードします。lsmod でロードされているか確認してください。ロードされていない場合は、2つのモジュールのどちらかを追加してください:

# modprobe lib80211

または:

# modprobe lib80211_crypt_tkip

Broadcom から直接ドライバーをインストールしたときは、依存関係を更新する必要があるかもしれません:

# depmod -a

起動時にモジュールがロードされるようにする方法は、カーネルモジュールを見て下さい。

/etc/modprobe.d/modprobe.conf で使わないモジュールを (干渉しないように) ブラックリストに入れることができます。モジュールをブラックリスト化する方法は、カーネルモジュール#ブラックリスト を見て下さい。

ノート: Broadcom Corporation BCM4311 802.11b/g WLAN [14e4:4311] は b43ssb をブラックリスト化しても動作しません。

broadcom-wl をモニターモードに設定

broadcom-wl をモニターモードに設定するには /proc/brcm_monitor0) を 1 に設定してください:

# echo 1 > /proc/brcm_monitor0

prism0 という名前の新しいネットワークインターフェイスが作成されます。

モニターモードで使うときは新しく作成されたネットワークインターフェイスを使うようにしてください。

トラブルシューティング

Wi-Fi カードが存在しないかのように扱われる

Broadcom BCM43241 などの新しいカードを使っているユーザーは lspci や lsusb でカードの情報が何も表示されないという問題に遭遇することがあります。

カーネルをアップグレードした後に Wi-Fi カードが動作しなくなった又は認識されなくなった (brcmsmac)

カーネルが brcmsmac モジュールの代わりに bcma モジュールを使用することで起こります。解決方法は bcma モジュールをブラックリストに入れることです。方法は、カーネルモジュール#ブラックリスト を見て下さい。

ノート: 上記の設定が必要なのは Linux カーネル 3.0, 3.1, 3.2 だけです。カーネル 3.3 からは、brcmsmac モジュールは bcma を使用するため、bcma のブラックリストを解除しないと Wi-Fi インターフェイスが使えません。

Wi-Fi カードが動作しない又は認識されない (broadcom-wl)

適切なモジュールがロードされているか確認してください。不要なモジュールが自動的にロードされないように brcm80211, b43, ssb カーネルモジュールをブラックリスト化させる必要があるかもしれません。ブラックリストの方法については、カーネルモジュール#ブラックリスト を参照。

ノート: brcm80211 ドライバーをブラックリストに入れる必要はないかもしれません。2011年6月20日現在、デフォルトで wl ドライバーの前に brcm80211 モジュールがロードされるため、wl は使用されません。

モジュールの依存関係が更新されたか確認:

# depmod -a
  • ip addr で無線インターフェイスが表示されることを確認。
  • iwconfigip addr でデバイスが表示されるようにするにはマシンを再起動する必要があるかもしれません。
  • 最近カーネルをアップグレードしていた場合は、新しくインストールしたカーネルで broadcom-wl パッケージを再ビルドしてモジュールを更新する必要があります。

インターフェイスが取り替わる (broadcom-wl)

broadcom-wl ドライバーのユーザーは Ethernet と Wi-Fi のインターフェイスが変わってしまう問題が起こることがあります。解決方法は ネットワーク#デバイス名 を見て下さい。

b43 ドライバーと Linux 3.8+

b43 ドライバーは Linux 3.8 から重大な問題を抱えています、すなわちアクセスポイントを表示したり接続することができません。

解決方法: 上記を参照して、最新の broadcom-wl ドライバー (バージョン 6+) を試してみて下さい。

コンソールのメッセージを少なくする

起動中に、以下のような無駄に長くてうっとおしいメッセージが断続的に流れることがあります:

phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 0 (implement)
phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 1 (implement)
enabled, active

このメッセージは /etc/systemd/journald.confMaxLevelConsole を設定するなど、通常の方法で消すことはできません。メッセージを消すためには、dmesg がコンソールにメッセージを表示するレベルを低く設定する必要があります。シンプルな systemd サービスを作ることでこの設定を起動時に行うことが可能です。

/etc/systemd/system/brcms_suppression.service というような名前のファイルを作成してください:

brcms_suppression.service

[Unit]
Description=Broadcom console message suppression script

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/bin/sh -c 'dmesg -n 3'

[Install]
WantedBy=multi-user.target

他の systemd サービスと同じように、次のコマンドで有効にします:

# systemctl enable brcms_suppression

インターフェイスは表示されるのに接続ができない

以下をカーネルコマンドラインに追加:

b43.allhwsupport=1

b43 が応答しない

b43 ドライバーの電源管理は BCM43228 チップ (やその他の Broadcom チップセット) で想定に少しだけ誤差があって、カーネルログに "(Reason: 3=DEAUTH_LEAVING)" を残して切断してしまうことがあります。電源管理を無効化することで解決します。一時的に修正するには、root で次を実行: iw <interface> set power_save off

このコマンドで解決した場合は、udev ルールを新しく追加することで修正を永続的にできます:

/etc/udev/rules.d/70-b43.rules
ACTION=="add", SUBSYSTEM=="net", ATTR{address}=="your_mac_address", RUN+="/usr/bin/iw dev %k set power_save off"

Asus PCE-AC88 のファームウェアが見つからない

brcmfmac4366c-pcie.bin ファームウェアを展開する方法は [1] を見てください。

一部のルーターで接続が不安定

問題が解決しない場合、linux-lts をインストールしたりドライバーのバージョンを下げてみてください。