Bluetooth: HCI SPI


Expose Zephyr Bluetooth Controller support over SPI to another device/CPU using the Zephyr SPI HCI transport protocol (similar to BlueNRG).


  • A board with SPI slave, GPIO and BLE support.

Building and Running

In order to use this application, you need a board with a Bluetooth controller and SPI slave drivers, and a spare GPIO to use as an interrupt line to the SPI master. Currently, only the legacy SPI API is supported by this sample application.

You then need to ensure that your Application Configuration provides the Kconfig values defining these peripherals:

  • BT_CTLR_TO_HOST_SPI_DEV_NAME: name of the SPI device on your board, which interfaces in slave mode with the BT HCI SPI driver.
  • BT_CTLR_TO_HOST_SPI_IRQ_DEV_NAME: name of the GPIO device which contains the interrupt pin to the SPI master.
  • BT_CTLR_TO_HOST_SPI_IRQ_PIN: pin number on the GPIO device to use as an interrupt line to the SPI master.

You can then build this application and flash it onto your board in the usual way; see Supported Boards for board-specific building and flashing information.

You will also need a separate chip acting as BT HCI SPI master. This application is compatible with the HCI SPI master driver provided by Zephyr’s Bluetooth HCI driver core; see the help associated with the BT_SPI configuration option for more information.

Refer to Bluetooth for general Bluetooth information, and to Providing Bluetooth to 96b_carbon for instructions specific to the 96Boards Carbon board.