The MPOW Bluetooth 5 dongle (Model: BH456A) does not work out of the box on Ubuntu 20.04 (kernel 5.4.0-42).
Patch the bluetooth kernel module and copy the firmware binaries to
Copy the fimware
MPOW hosts a linux driver on their homepage. Download it via:
Extract the contents
tar xvf mpow_MPBH456AB_driver+for+Linux.tgz
and copy the firmware files to the appropriate system directory
SRCDIR="20200610_LINUX_BT_DRIVER/rtkbt-firmware/lib/firmware" sudo cp $SRCDIR/rtl8761bu_fw /lib/firmware/rtl_bt/rtl8761b_fw.bin sudo cp $SRCDIR/rtl8761bu_config /lib/firmware/rtl_bt/rtl8761b_config.bin
Patch the bluetooth kernel module
This patch fixed a bug in the bluetooth module wrongly identifying the bluetooth chip as another version. For reference, I added the patch to this gist.
To fix this, get the kernel source
git clone --depth 1 --single-branch --branch master git://kernel.ubuntu.com/ubuntu/ubuntu-focal.git
for your ubuntu version.
master for whatever version you are on if its different.
Then apply the patch with
patch -p 1 < 2-1-1-Bluetooth-btrtl-Add-support-for-RTL8761B.diff
and fix possible conflicts.
Then its time to build the bluetooth module.
First copy the old driver
sudo cp -r /lib/modules/$(uname -r)/kernel/drivers/bluetooth /lib/modules/$(uname -r)/kernel/drivers/bluetooth_bak
Inside the cloned repository first get the current kernels config
make oldconfig make prepare make scripts
and build the bluetooth module
cd drivers/bluetooth make -C /lib/modules/$(uname -r)/build M=$(pwd) modules
and copy the
ko module files to the systems module dir which we backed up before.
sudo cp *.ko /lib/modules/$(uname -r)/kernel/drivers/bluetooth
This will overwrite the existing modules.
make install didn't work for me because of a missing certification error.
Probably the official Ubuntu kernel is signed.
I don't have secure boot activated, so for we unsigned drivers work fine.
Now reboot and everything should be fine.
I have got an MPOW BH456A as well however it came with a driver mini disc containing the rtl8761bu firmware files. The dongle actually worked with the 5.4.72 lts kernel (arch) but broke with the next iteration. Now I wonder if I can just adapt your code to load the approptiate firmware files. However I am not sure about how to change lines 17 and 30 of your patch. Can you provide some insight into what the values mean and maybe how I'd have to change those? Thanks in advance.