中身がbroadcomチップだという理由で買ったbluetooth USBドングル。Linuxで動かす手順。試したのはUbuntu15とArch現行最新。
まず単純にUSBドングルを差し込む。journalctl -f
で眺めて、下のようなエラーが出ると思う。気持ちが悪いのでこれをやっつける。
Bluetooth: hci0: BCM: patch brcm/BCM20702A0-0a5c-21e8.hcd not found
この、Firmwareの読み込みに失敗したというメッセージが出ている場合は、手動でファームウェアを用意する。broadcom が配っているはずのものなのだけど探した範囲では見つけられなかった。その代りに dropbox からダウンロードしろとか、ちょっと使うのが怖い方法ばかりが出てくる。
実は firmware は Windows 版ドライバに入っている hex ファイルを変換して得ることができる。
まず lsusb
で USB ドングルの Vendor ID, Product ID を調べる。私の場合 0a5c 21e8
だった。
Windows に移動する(もともと Windows 用なので)。ドライバーをインストールしておく。私の場合はThinkPadのプリインストールがC:\Program Files\ThinkPad\Bluetooth Software\bin
にあった。インストールした bcm20702 系ドライバの入った bcbtums-win8x64-brcm.inf
ファイル見つけ出して、中を見る 。ずらずらーとエントリがある中に、対象の ID が見つかるはず。
%BRCM20702.DeviceDesc%=RAMUSB21E8, USB\VID_0A5C&PID_21E8 ; 20702A1 dongles
:
[RAMUSB21E8.CopyList]
bcbtums.sys
BCM20702A1_001.002.014.0889.0896.hex
というわけで、BCM20702A1_001.002.014.0889.0896.hex
が目標のファイル。これをhex2hcd
で変換する。bluez 5.28 以降で付属するほか、単体では https://github.com/jessesung/hex2hcd で見つかる。
hex2hcd BCM20702A1_001.002.014.0889.0896.hex BCM20702A0-0a5c-21e8.hcd
ファームウェアの置き場所は /lib/firmware/brcm/
固定で、ファイル名はエラーメッセージの通りのものにする。
USB を抜き差しすれば、今度は正常にパッチが当たって、認識されるようになるはず。