Bluetooth on Orange Pi 5 + with RTL8852BE doesn't work

Creating a bug report/issue

trying to enable bluetooth on an Orange Pi 5+ with the RTL8852BE wifi+bt module fails to load correctly. When I enable bluetooth in dietpi-config it reports that bluetooth is “On” however when I run hcitool dev it doesn’t show any devices.

Required Information

  • DietPi version | G_DIETPI_VERSION_CORE=9 G_DIETPI_VERSION_SUB=3 G_DIETPI_VERSION_RC=0 G_GITBRANCH='master' G_GITOWNER='MichaIng'

  • Distro version | bookworm

  • Kernel version | Linux dietpi 6.1.43-vendor-rk35xx #1 SMP Sat Apr 27 18:12:21 UTC 2024 aarch64 GNU/Linux

  • Architecture | arm64

  • SBC model | Orange Pi 5 Plus (aarch64) or (EG: RPi3)

  • Power supply used | 5V@4A USB C

  • SD card used | N/A (Samsung 970 EVO Plus)

Additional Information (if applicable)

  • Kernel updated to 6.1.43-vendor-rk35xx through troubleshooting but this also happened on 5.10.160-legacy-rk35xx

Steps to reproduce

  1. enable bluetooth in dietpi-config
  2. hcitool dev shows no devices

Expected behaviour

bluetooth should be enabled and device visible

Actual behaviour

bluetooth device is not visible

Extra details

Enabling bluetooth shows an error at the end

[FAILED] bluetooth enable | Exited with error

however this has been identified as a visual bug only (Orange Pi 5+ should we have switched kernel? - #48 by MichaIng)

Please check for related kernel errors:

dmesg -l 0,1,2,3
dmesg | grep 8852

I think the firmware is missing. Please try with the full firmware package:

apt install armbian-firmware-full
modprobe rtw89_8852be

That one is huge. If it works, I’ll add a patch to have this added to our armbian-firmware package.

EDIT: Ah, and with Linux 6.1, the driver itself is missing, I think. Here a commit from Armbian to add it: net: wireless: realtek: Sync rtw89 driver from linux6.2 · orangepi-xunlong/linux-orangepi@96b2d28 · GitHub
Armbian still misses this update: linux-rockchip/drivers/net/wireless/realtek/rtw89/Kconfig at cdbd7566a3a017d407c8a9a9af176c7ca46c8c69 · armbian/linux-rockchip · GitHub
If really the firmware update does not work yet/the driver does not exist, I’ll try to apply the commit as patch for our builds.

EDIT2: Lol, I forgot that I applied this patch already, so the driver is there :smile:: rk35xx-vendor: update rtw89 via patch for RTL8852BE support · MichaIng/build@ad4e77c · GitHub

dmesg -l 0,1,2,3
...
[22157.464026] Bluetooth: hci0: RTL: firmware file rtl_bt/rtl8852bu_fw.bin not found
dmesg | grep rtl8852
[22157.462496] Bluetooth: hci0: RTL: loading rtl_bt/rtl8852bu_fw.bin
[22157.464004] bluetooth hci0: Direct firmware load for rtl_bt/rtl8852bu_fw.bin failed with error -2
[22157.464026] Bluetooth: hci0: RTL: firmware file rtl_bt/rtl8852bu_fw.bin not found

after installing armbian-firmware-full it still wasn’t showing up in hcitool dev but when I checked rfkill it showed

ID TYPE      DEVICE          SOFT      HARD
 0 bluetooth bt_default   blocked unblocked
 1 wlan      phy0       unblocked unblocked

so I used rfkill unblock 0 which resulted in rfkill showing a new bluetooth ID that was still blocked

ID TYPE      DEVICE          SOFT      HARD
 0 bluetooth bt_default unblocked unblocked
 1 wlan      phy0       unblocked unblocked
 2 bluetooth hci0         blocked unblocked

…so rfkill unblock 2

and now it seems to be working!

#hcitool dev
Devices:
	hci0	40:9C:...
1 Like

Great. Since we do not pre-install rfkill and remove all software blocks from our images, it should then work OOTB, once the firmware was added.

For myself:

Thanks so much for your help!

Is there anything I need to do in terms of reverting my changes before updating when these changes take effect in a future release (namely the armbian-firmware-full package and the kernel update)? I probably installed rfkill in my troubleshooting so I guess I can remove that at least.

No need to revert anything. I’ll inform you once an armbian-firmware package with those additional blobs is in our repo, then you could free up some disk space with

apt install armbian-firmware

which replaces the -full package.