「Broadcom ワイヤレス」の版間の差分
29行目: | 29行目: | ||
まず、あなたの使っているカードの [[Wikipedia:PCI_configuration_space|PCI-ID]] を確認してください。コンソールに次のコマンドを入力 (大文字小文字の違いに気をつけて下さい): |
まず、あなたの使っているカードの [[Wikipedia:PCI_configuration_space|PCI-ID]] を確認してください。コンソールに次のコマンドを入力 (大文字小文字の違いに気をつけて下さい): |
||
− | $ lspci -vnn |
+ | $ lspci -vnn -d 14e4: |
それから、あなたのカードを [https://wireless.wiki.kernel.org/en/users/Drivers/b43#list_of_hardware b43 でサポートされている デバイスのリスト] と [https://wireless.wiki.kernel.org/en/users/Drivers/brcm80211#supported_chips でサポートされているデバイスのリスト] を見て確認してください。 |
それから、あなたのカードを [https://wireless.wiki.kernel.org/en/users/Drivers/b43#list_of_hardware b43 でサポートされている デバイスのリスト] と [https://wireless.wiki.kernel.org/en/users/Drivers/brcm80211#supported_chips でサポートされているデバイスのリスト] を見て確認してください。 |
||
50行目: | 50行目: | ||
あなたの使っているデバイスを [http://wireless.kernel.org/en/users/Drivers/b43#Known_PCI_devices こちら] で検索してどちらのモジュールが必要なのか確認してください。[http://wireless.kernel.org/en/users/Drivers/b43/devices ここ] でコンピュータの機種で検索することもできます。問題が発生しないようにもう片方のモジュールはブラックリストに入れます ({{ic|b43}} または {{ic|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}})。ブラックリスト化の方法は、[[カーネルモジュール#ブラックリスト]] を参照。 |
||
− | [[AUR]] から {{AUR|b43-firmware}} |
+ | [[AUR]] から {{AUR|b43-firmware}}, {{aur|b43-firmware-classic}}, {{AUR|b43-firmware-legacy}} のどれか適切なパッケージをインストールしてください。 |
+ | |||
+ | {{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 このインストールスクリプト]を使用することで可能です。 |
||
62行目: | 67行目: | ||
ファームウェアをインストールしたら、デバイスを設定することができるようになります。 |
ファームウェアをインストールしたら、デバイスを設定することができるようになります。 |
||
− | {{Note|1=b43 モジュールがロードされて機能しているようなのにデバイスにアクセスできないときは、おそらく {{ic|bcma}} モジュールを[[ |
+ | {{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]] を使いたい場合は {{AUR|broadcom-wl-dkms}} があります。 |
{{ic|broadcom-wl}} ドライバーを使いたい人のために、[[Arch User Repository|AUR]] には {{AUR|broadcom-wl}} という名前でパッケージが存在します。[[DKMS]] を使いたい場合は {{AUR|broadcom-wl-dkms}} があります。 |
||
+ | |||
+ | {{Tip|{{AUR|broadcom-wl}} を使用する場合、カーネルをアップグレードするたびに無線が使えなくなり、パッケージをアンインストールしてから再インストールする必要があります。{{AUR|broadcom-wl-dkms}} を使うことでその手間を省くことができます。}} |
||
==== wl カーネルモジュールのロード ==== |
==== wl カーネルモジュールのロード ==== |
||
134行目: | 141行目: | ||
enabled, active |
enabled, active |
||
− | このメッセージは {{ic|/etc/systemd/journald.conf}} の {{ic|MaxLevelConsole}} を設定するなど、通常の方法で消すことはできません。メッセージを消すためには、{{ic|dmesg}} がコンソールにメッセージを表示するレベルを低く設定する必要があります。シンプルな [[ |
+ | このメッセージは {{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}} というような名前のファイルを作成してください: |
||
164行目: | 171行目: | ||
{{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]] ルールを新しく追加することで修正を永続的にできます: |
{{hc|/etc/udev/rules.d/70-b43.rules|2= |
{{hc|/etc/udev/rules.d/70-b43.rules|2= |
||
ACTION=="add", SUBSYSTEM=="net", ATTR{address}=="''your_mac_address''", RUN+="/usr/bin/iw dev %k set power_save off" |
ACTION=="add", SUBSYSTEM=="net", ATTR{address}=="''your_mac_address''", RUN+="/usr/bin/iw dev %k set power_save off" |
||
}} |
}} |
||
− | |||
− | === 雑多なノート === |
||
− | |||
− | [[en2:Talk:Broadcom wireless|Talk:Broadcom wireless]] を見て下さい。 |
2015年11月12日 (木) 16:28時点における版
関連記事
この記事では 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 のリリース時に、これらのドライバーは brcmsmac
と brcmfmac
に名前が変更されています。
執筆時点で、Broadcom Wi-Fi チップセットを使っているユーザーには3つの選択肢が存在します:
ドライバー | 説明 |
---|---|
brcm80211 | オープンソースのカーネルドライバー |
b43 | リバースエンジニアリングによるカーネルドライバー |
broadcom-wl | プロプライエタリな Broadcom STA ドライバー |
ドライバーの選択
まず、あなたの使っているカードの PCI-ID を確認してください。コンソールに次のコマンドを入力 (大文字小文字の違いに気をつけて下さい):
$ lspci -vnn -d 14e4:
それから、あなたのカードを b43 でサポートされている デバイスのリスト と でサポートされているデバイスのリスト を見て確認してください。
インストール
brcm80211
brcm80211
ドライバーはカーネルに含まれています。PCI カードには brcmsmac
、SDIO デバイスには brcmfmac
という名前が付けられています。
これらのドライバーは起動時に自動的にロードされるためユーザーがやらなくてはならない操作はありません。ドライバーが自動的にロードされない場合は、手動でドライバーをロードしてください。
b43/b43legacy
このドライバーは 2.6.24 からカーネルにマージされています。
b43/b43legacy カーネルモジュールのロード
あなたの使っているデバイスを こちら で検索してどちらのモジュールが必要なのか確認してください。ここ でコンピュータの機種で検索することもできます。問題が発生しないようにもう片方のモジュールはブラックリストに入れます (b43
または b43legacy
)。ブラックリスト化の方法は、カーネルモジュール#ブラックリスト を参照。
AUR から b43-firmwareAUR, b43-firmware-classicAUR, b43-firmware-legacyAUR のどれか適切なパッケージをインストールしてください。
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
ファームウェアをインストールしたら、デバイスを設定することができるようになります。
broadcom-wl
broadcom-wl
ドライバーを使いたい人のために、AUR には broadcom-wlAUR という名前でパッケージが存在します。DKMS を使いたい場合は broadcom-wl-dkmsAUR があります。
wl カーネルモジュールのロード
他の使用可能なモジュールが存在しない場合、wl
モジュールを手動でロードする必要があります。wl
モジュールをロードする前に、b43
など他のモジュールを取り除いて下さい、おそらく自動的にロードされています:
# rmmod b43
ssb
がロードされている場合も、アンロードしてください:
# rmmod 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
で使わないモジュールを (干渉しないように) ブラックリストに入れることができます。モジュールをブラックリスト化する方法は、カーネルモジュール#ブラックリスト を見て下さい。
トラブルシューティング
Wi-Fi カードが存在しないかのように扱われる
Broadcom BCM43241 などの新しいカードを使っているユーザーは lspci や lsusb でカードの情報が何も表示されないという問題に遭遇することがあります。
カーネルをアップグレードした後に Wi-Fi カードが動作しなくなった又は認識されなくなった (brcmsmac)
カーネルが brcmsmac
モジュールの代わりに bcma
モジュールを使用することで起こります。解決方法は bcma
モジュールをブラックリストに入れることです。方法は、カーネルモジュール#ブラックリスト を見て下さい。
Wi-Fi カードが動作しない又は認識されない (broadcom-wl)
適切なモジュールがロードされているか確認してください。不要なモジュールが自動的にロードされないように brcm80211
, b43
, ssb
カーネルモジュールをブラックリスト化させる必要があるかもしれません。ブラックリストの方法については、カーネルモジュール#ブラックリスト を参照。
モジュールの依存関係が更新されたか確認:
# depmod -a
ip addr
で無線インターフェイスが表示されることを確認。iwconfig
やip 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.conf
の MaxLevelConsole
を設定するなど、通常の方法で消すことはできません。メッセージを消すためには、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"