Broadcom ワイヤレス
関連記事
この記事では Broadcom のワイヤレスネットワークデバイスをインストール・設定する方法を説明しています。
目次
- 1 イントロダクション
- 2 ドライバーの選択
- 3 インストール
- 4 トラブルシューティング
- 4.1 Wi-Fi カードが存在しないかのように扱われる
- 4.2 カーネルをアップグレードした後に Wi-Fi カードが動作しなくなった又は認識されなくなった (brcmsmac)
- 4.3 Wi-Fi カードが動作しない又は認識されない (broadcom-wl)
- 4.4 インターフェイスが取り替わる (broadcom-wl)
- 4.5 b43 ドライバーと Linux 3.8+
- 4.6 コンソールのメッセージを少なくする
- 4.7 インターフェイスは表示されるのに接続ができない
- 4.8 b43 が応答しない
- 4.9 Asus PCE-AC88 のファームウェアが見つからない
- 4.10 一部のルーターで接続が不安定
イントロダクション
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
- DKMS パッケージ: broadcom-wl-dkms
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
で使わないモジュールを (干渉しないように) ブラックリストに入れることができます。モジュールをブラックリスト化する方法は、カーネルモジュール#ブラックリスト を見て下さい。
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
モジュールをブラックリストに入れることです。方法は、カーネルモジュール#ブラックリスト を見て下さい。
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"
Asus PCE-AC88 のファームウェアが見つからない
brcmfmac4366c-pcie.bin
ファームウェアを展開する方法は [1] を見てください。
一部のルーターで接続が不安定
問題が解決しない場合、linux-lts をインストールしたりドライバーのバージョンを下げてみてください。