Comment 21 for bug 1955916

Revision history for this message
Ed (edd-robbins) wrote (last edit ):

The problem is that the USB ID for this chip is not in the btusb module. Many people report the same problem elsewhere, though it seems most want to try and use a strange module from a random BT dongle manufacturers website, which is just crazy. The proper thing to do is to add the USB ID to drivers/bluetooth/btusb.c.

However, I am a bit lazy, so instead I just modified the driver in place, writing over the ID of another realtek chip with this one (VID 0x2550 PID 0x8761), then strip the module to remove the signature:

sudo -s
cp /lib/modules/`uname -r`/kernel/drivers/bluetooth/btusb.ko btusb.ko.orig
xxd /lib/modules/`uname -r`/kernel/drivers/bluetooth/btusb.ko | sed 's/ca04 0540/5025 6187/g' | xxd -r > btusb.ko.mod
strip --strip-debug btusb.ko.mod
mv btusb.ko.mod /lib/modules/`uname -r`/kernel/drivers/bluetooth/btusb.ko

Don't forget to also download firmware:

wget -O /lib/firmware/rtl_bt/rtl8761b_config.bin https://raw.githubusercontent.com/Realtek-OpenSource/android_hardware_realtek/rtk1395/bt/rtkbt/Firmware/BT/rtl8761b_config
wget -O /lib/firmware/rtl_bt/rtl8761b_fw.bin https://raw.githubusercontent.com/Realtek-OpenSource/android_hardware_realtek/rtk1395/bt/rtkbt/Firmware/BT/rtl8761b_fw

You have to disable secure boot to load the modified module, if you didn't have it disabled already, and reboot. If already disabled you can probably just do:

modprobe -r btusb && modprobe btusb

You also need at least kernel 5.8 I believe.

Hopefully the USB ID will be added to the kernel soon, as it's pretty silly having to do this!