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 /lib/firmware
.
MPOW hosts a linux driver on their homepage. Download it via:
wget https://mpow.s3-us-west-1.amazonaws.com/mpow_MPBH456AB_driver+for+Linux.tgz
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
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.
Change 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.
Running 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.
Seems like kernel version 5.8 implements the change :)
So hopefully this guide wont be necesarry for much longer!
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/drivers/bluetooth/btrtl.c?h=linux-5.8.y