bluetooth-lowenergybleno

Why must bluetoothd be stopped while using Bluetooth Low Energy?


I have implemented a BLE peripheral. The device is based on Ubuntu OS.

My application runs under Node.js. It uses bleno (https://github.com/noble/bleno) to advertise its BLE service.

According to the read-me file at the site, in order to offer BLE services, daemon bluetoothd must be stopped and optionally disabled.

This statement seems to be true as my app works as expected only when this daemon has been stopped.

I am curious as to why must bluetoothd daemon be stopped. I couldn't find any explanation on the net.


Solution

  • BlueZ with bluetoothd is the built-in Bluetooth system for Linux that is the default. KDE and Gnome user utilities use this. There is also an API at https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/doc/gatt-api.txt for GATT.

    Now, bleno is a "hack" that implements a Bluetooth host itself and therfore needs to completely take over the hci controller. In order not to interfere with bluetoothd, bluetoothd must be stopped.