maurossi/linux

UART BCM hci0 Bluetooth permission issue on newer kernels

Closed this issue · 1 comments

Ever since the hci_uart_bcm driver got ported to serdev it no longer can be initialized with Bluez' btattach binary (as it now gets auto-attached via the kernel instead of requiring the user to initialize it in the userspace).

This by itself isn't a problem, however, the auto-initialized hci0 interface is now exclusively owned by root because of it, preventing non-root applications from opening bluetooth sockets or, in any other way than enumerating bluetooth adapters (which works regardless of permissions), interacting with the hci0 device.

This issue is most critical in android-x86, where it completely nukes Bluetooth support for UART-based Broadcom devices like the BCM4356 chip. Is there a known workaround for this issue or a way to set the hci0 interface's permissions after it got auto-enumerated?

This issue has been resolved in AOSP Android (and desktop linux variants) by providing additional sepolicies to grant the now missing bind privileges and providing a new higher-level AF_BLUETOOTH socket based HAL (which they so dubbed "Passthrough" HAL).

Nougat or older Android versions need this HAL backported to function on the new driver.