Search code examples
bluetoothbluetooth-lowenergycore-bluetoothusb-hostcontroller

BLE : Host stack - HCI - Controller


I am new to BLE/Bluetooth programmming. As known,BLE/Bluetooth is an entire module.Recently I found that, the NimBLE provides the Host Stack or Controller part of Bluetooth.https://github.com/apache/mynewt-core . Here they mention that it supports the mix and match of any host stack with any controller.

  1. So, is it that the HCI layer(through which the host stack interacts) and the Controller (lower bluetooth layer) implementation of all the modules same or is it vendor specific?

  2. If I choosse a host stack from the NimBLE, does the implementation of HCI allow me to operate with any vendor's controller or is that the HCI layer should be implemented with vendor specifications and dependent on the controller.

I assumed that the controller part of the Bluetooth /BLE module has the basic RF and communication section,which will be the same for all modules for its interoperability. I am sorry if the question is trivial.


Solution

  • Any host stack with a hci interface should work with any hci controller, as long as they both have support for the same transport method (UART, USB etc.)

    Sometimes, in particular for usb you also need a specific host driver that opens up the transport interface for the particular device. For UART some vendors requires some vendor specific setup packets being sent over UART that configures baud rate etc before hci can start.

    Also the host and controller should have a common feature set. For example you can't do much with a host that only supports Bluetooth classic and a controller that only supports BLE.

    Some hci controllers implement custom vendor commands to offer extra features over the standard commands, such as for example set custom public Bluetooth device address. A host must also support these commands in order to make use of them.