BluetoothのUSBドングルなんて、どれも同じでCSR社製のチップが載っているんだろうとばかり思っていました。
なので、せっかくだからBluetooth5.0のUSBドングルを買うことにしたらドハマり。
ファームウェアがアタッチされません。
dmsgを見てみると。
$ dmsg | grep hci (中略) [151448.550512] bluetooth hci0: Direct firmware load for rtl_bt/rtl8761bu_fw.bin failed with error -2 [151448.550540] Bluetooth: hci0: RTL: firmware file rtl_bt/rtl8761bu_fw.bin not found
当然hciconfigもdownに
$ hciconfig hci0: Type: Primary Bus: USB BD Address: 00:00:00:00:00:00 ACL MTU: 0:0 SCO MTU: 0:0 DOWN RX bytes:42 acl:0 sco:0 events:4 errors:0 TX bytes:12 acl:0 sco:0 commands:4 errors:0
この解決策のいとぐちはこちらのブログにありました。
ここからリンクされている元記事
kernel 5.8以降でrtl_btのドライバが提供されており、RTL8761Aのファームウェアは多くのLinux distributionで提供済みですが、RTL8761Bのファームウェアはないので、GitHubからダウンロードしてね。とのこと。
で、落としてきて拡張子.binをつけて/lib/firmware/rtl_btに移動するのは良いのですが、私が購入したのはRTL8761BUのようで、ダウンロードして拡張子を変えて/lib/firmware/rtl_btに放り込むだけではNGです。
この解決方法はこんなところに書いてありました。
なんのことはない、シンボリックリンクを張れと。
一応一連のコマンドを載せます。
$ curl -O https://raw.githubusercontent.com/Realtek-OpenSource/android_hardware_realtek/rtk1395/bt/rtkbt/Firmware/BT/rtl8761b_config $ curl -O https://raw.githubusercontent.com/Realtek-OpenSource/android_hardware_realtek/rtk1395/bt/rtkbt/Firmware/BT/rtl8761b_fw $ mv rtl8761b_config rtl8761b_config.bin $ mv rtl8761b_fw rtl8761b_fw.bin $ sudo cp rtl8761b_config.bin /lib/firmware/rtl_bt $ sudo cp rtl8761b_fw.bin /lib/firmware/rtl_bt $ cd /lib/firmware/rtl_bt $ sudo ln -s rtl8761b_config.bin rtl8761bu_config.bin $ sudo ln -s rtl8761b_fw.bin rtl8761bu_fw.bin
これでhciconfig hci0 upをすると、めでたくbluetoothドングルが有効になります。