Broadcom Bluetooth
この記事では、主に BCM20702、BCM4354、および BCM4356 チップセットベースの Broadcom Bluetooth 4.x デバイスの詳細なセットアップについて解説します。これらの bluetooth チップセットは、USB ドングルやハイブリッド WIFI+Bluetooth 組み込みチップセット等を含む、さまざまなデバイスでも使用されています。
ハードウェア
対応デバイスのほぼ完全な一覧は上流で確認できます。
デバイス | モデル | 状態 | Vendor ID / Product ID | カーネルドライバ | カーネルバージョン | 備考 |
---|---|---|---|---|---|---|
USB ドングル | Asus BT-400 USB | Works | 0b05:17cb
|
btbcm | 4.2 | ファームウェアが必要です |
USB ドングル | Targus ACB75AU | Works | 0a5c:21e8
|
btbcm | 3.4+ | ファームウェア brcm/BCM20702A1-0a5c-21e8.hcd が必要です |
セキュリティの考慮事項
近年 Bluetooth スタック内で、CVE-2018-5383、CVE-2019-9506 (KNOB)、CVE-2020-10135 (BIAS) 等の、複数の脆弱性が発見されました。Broadcom は消費者向けデバイスのための活発なサポートを停止しているため、このソフトウェアを活用するシステムはセキュリティリスクに晒されるかもしれません。リポジトリメンテナはセキュリティパッチを提供できないので、先に進む前にリスク評価を行っておくのが賢明です。
インストール
カーネル
Broadcom Bluetooth デバイスは btbcm
カーネルモジュールを必要とします。これは次のカーネルオプションでビルドすることができます:
[*] Networking support --->
<M> Bluetooth subsystem support --->
Bluetooth device drivers --->
<M> HCI USB driver
[*] Broadcom protocol support
[*] Broadcom protocol support
ファームウェア
Broadcom Bluetooth スタックは、Windows ドライバとともに提供される外部のファームウェアを必要とする場合がほとんどです。次のコマンドによって、ファームウェアを確認することができます:
user $
dmesg | grep -i bluetooth
Bluetooth: hci1: BCM: chip id 63 Bluetooth: hci1: BCM20702A Bluetooth: hci1: BCM20702A1 (001.002.014) build 0000 bluetooth hci1: Direct firmware load for brcm/BCM20702A1-0b05-17cb.hcd failed with error -2 Bluetooth: hci1: BCM: Patch brcm/BCM20702A1-0b05-17cb.hcd not found
幸運なことに、sys-firmware/broadcom-bt-firmware パッケージを利用することで、Broadcom Bluetooth のための最新のファームウェアファイルをインストールすることができます:
root #
emerge --ask sys-firmware/broadcom-bt-firmware
インストール後はファームウェアを適用するために、Bluetooth デバイスを再接続するか、システムを再起動してください。再起動後、出力は次のようになっているはずです:
user $
dmesg | grep -i bluetooth
Bluetooth: hci1: BCM: chip id 63 Bluetooth: hci1: BCM20702A Bluetooth: hci1: BCM20702A1 (001.002.014) build 0000 Bluetooth: hci1: BCM20702A1 (001.002.014) build 1467 Bluetooth: hci1: Broadcom Bluetooth Device
構成設定
カーネルオプションを有効化して、ファームウェアのインストールが完了したら、Bluetooth の記事に進んでください。
トラブルシューティング
カーネルが BCM.hcd または BCM<CHIPSET>.hcd を要求している
VID/PID がカーネルドライバ内でまだ定義されていないことにより、btbcm がデバイスを正しく識別できないことがあります:
user $
dmesg | grep -i bluetooth
Bluetooth: hci1: BCM: chip id 63 Bluetooth: hci1: BCM20702A Bluetooth: hci1: BCM20702A1 (001.002.014) build 0000 bluetooth hci1: Direct firmware load for brcm/BCM.hcd failed with error -2 Bluetooth: hci1: BCM: Patch brcm/BCM.hcd not found
この場合は、lspci または lsusb コマンドによって手動で VID/PID を取得できるでしょう:
user $
lsusb
... Bus 003 Device 005: ID 0b05:17cb ASUSTek Computer, Inc. Broadcom BCM20702A0 Bluetooth ...
ここでは、0b05:17cb
が VID/PID です。次に、 デバイスリストを確認して、適切なファームウェアを選択してください。その後、ファームウェアファイルをカーネルが要求する名前の場所にコピーするだけです:
root #
cd /lib/firmware/brcm
root #
cp BCM20702A1-0b05-17cb.hcd BCM.hcd
その後、デバイスを再挿入するか、システムを再起動してください。
ファームウェアをインストールしたが、まだデバイスが動作しない
一部の Bluetooth コントローラ (例えば、BCM4354 と BCM4356) は WiFi チップセット (これは BCM43XX 802.11ac Wireless Network Adapter または generic Broadcom PCIE Wireless であるかもしれません) と統合されています。これらのデバイスは、WiFi 向けと Bluetooth 向けの 2 種類のファームウェアを必要とします。WiFi ファームウェアが無いと Bluetooth も初期化されず、正しく動作しないでしょう。WiFi 向けのファームウェアはすでにカーネルに含まれていますが、正しい NVRAM を配置するために追加の作業が必要になるかもしれません。
出力例は次のようなものです (brcm/brcmfmac4356-pcie.txt がロードされていることに注意してください - これがカスタマイズされた NVRAM です):
user $
dmesg
usbcore: registered new interface driver brcmfmac brcmfmac 0000:02:00.0: firmware: direct-loading firmware brcm/brcmfmac4356-pcie.bin brcmfmac 0000:02:00.0: firmware: direct-loading firmware brcm/brcmfmac4356-pcie.txt Bluetooth: hci0: BCM: chip id 101 Bluetooth: hci0: N360-11 Bluetooth: hci0: BCM4354A2 (001.003.015) build 0000 bluetooth hci0: firmware: direct-loading firmware brcm/BCM4354A2-13d3-3485.hcd
関連項目
- Bluetooth — Bluetooth コントローラーとデバイスの設定・使用について説明します。