Raspberry PiでBluetooth 5.0ドングル(rtl8761bu)を使う

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

この解決策のいとぐちはこちらのブログにありました。

maku.blog

ここからリンクされている元記事

linuxreviews.org

kernel 5.8以降でrtl_btのドライバが提供されており、RTL8761Aのファームウェアは多くのLinux distributionで提供済みですが、RTL8761Bのファームウェアはないので、GitHubからダウンロードしてね。とのこと。
で、落としてきて拡張子.binをつけて/lib/firmware/rtl_btに移動するのは良いのですが、私が購入したのはRTL8761BUのようで、ダウンロードして拡張子を変えて/lib/firmware/rtl_btに放り込むだけではNGです。

この解決方法はこんなところに書いてありました。

forums.linuxmint.com

なんのことはない、シンボリックリンクを張れと。

一応一連のコマンドを載せます。

$ 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ドングルが有効になります。