BTstack is BlueKitchen's implementation of the official Bluetooth stack. It is well suited for small, resource-constraint devices such as 8 or 16 bit embedded systems as it is highly configurable and comes with an ultra small memory footprint.
Targeting a variety of platforms is as simple as providing the necessary UART, CPU, and CLOCK implementations. BTstack is currently capable of connecting to Bluetooth-modules via: (H2) HCI USB, (H4) HCI UART + TI's eHCILL, and (H5) HCI Three-Wire UART.
On smaller embedded systems, a minimal run loop implementation allows to use BTstack without a Real Time OS (RTOS). If a RTOS is already provided, BTstack can be integrated and run as a single thread.
On larger systems, BTstack provides a server that connects to a Bluetooth module. Multiple applications can communicate with this server over different inter-process communication methods. As sockets are used for client/server communication, it's easy to interact via higher-level level languages, e.g. there's already a Java binding for use in desktop environments.
BTstack supports the Central and the Peripheral Role of Bluetooth 5 Low Energy specification incl. LE Secure Connections, LE Data Channels, and LE Data Length Extension. It can be configured to run as either single-mode stack or a dual-mode stack.
BTstack is free for non-commercial use. However, for commercial use, tell us a bit about your project to get a quote.
Third-party libraries (FOSS): List of used libraries and their licenses
Discussion and Community Support: BTstack Google Group
Protocols: L2CAP (incl. LE Data Channels), RFCOMM, SDP, BNEP, AVDTP, AVCTP, ATT, SM (incl. LE Secure Connections).
Profiles: GAP, IOP, HFP, HSP, SPP, PAN, A2DP, AVRCP incl. Browsing, GATT.
Beta Stage: HID, HOGP, PBAP.
In Development: BLE Mesh and more.
It has been qualified with the Bluetooth SIG (QDID 110883) for GAP, IOP, HFP, HSP, SPP, PAN, A2DP, AVRCP profiles and GATT, SM of the Bluetooth 5 specification. For information on MFi/iAP2 support, please contact us.
Status | Port | Platform |
---|---|---|
posix-h4 | Unix-based system connected to Bluetooth module via H4 over serial port | |
No build server | posix-h4-da14581 | Unix-based system connected to Dialog Semiconductor DA14581 via H4 over serial port |
No build server | posix-h4-da14585 | Unix-based system connected to Dialog Semiconductor DA14585 via H4 over serial port |
No build server | posix-h5 | Unix-based system connected to Bluetooth module via H5 over serial port |
No build server | posix-h5-bcm | Unix-based system connected to Broadcom/Cypress Bluetooth module via H5 over serial port |
libusb | Unix-based system with dedicated USB Bluetooth dongle | |
No build server | libusb-intel | Unix-based system with Intel Wireless 8260/8265 Controller |
No build server | windows-h4 | Win32-based system connected to Bluetooth module via serial port |
No build server | windows-winusb | Win32-based system with dedicated USB Bluetooth dongle |
No build server | windows-winusb-intel | Win32-based system with Intel Wireless 8260/8265 Controller |
No build server | raspi | Raspberry Pi 3 or Raspberry Pi Zero W with built-in BCM4343 Bluetooth/Wifi Controller |
daemon | TCP and Unix domain named socket client-server architecture supporting multiple clients | |
java | Java wrapper for daemon | |
mtk | daemon for rooted Android devices, based on Mediatek MT65xx processor, Java and C client-server API | |
ios | daemon for iOS jailbreak devices, C client-server API | |
No build server | freertos | FreeRTOS: Run BTstack on a dedicated thread, not thread-safe. |
Chipset | Type | HCI Transport | SCO over HCI | BTstack folder | Comment |
---|---|---|---|---|---|
Atmel ATWILC3000 | LE | H4 | n.a. | atwilc3000 | Firmware size: 60 kB |
Broadcom UART | Dual mode | H4, H5 | Probably | bcm | Max UART baudrate 2 mbps |
Broadcom USB Dongles | Dual mode | USB | Yes | bcm | |
CSR UART | Dual mode | H4, H5, BCSP | No (didn't work) | csr | |
CSR USB Dongles | Dual mode | USB | Yes | csr | |
Cypress CYW20704 | Dual mode | H4, H5, USB | Probably | bcm | |
Cypress CYW20819 | Dual mode | H4, H5, USB | Probably | bcm | Keep CTS high during power cycle |
Cypress PSoC 4 | LE | H4 | n.a. | HCI Firmware part of PSoC Creator kit examples | |
Dialog Semiconductor DA14581, DA14585 | LE | H4, SPI | n.a. | da14581 | Official HCI firmware used |
Dialog Semiconductor DA1469x | LE | H4, SPI | n.a | HCI Firmware part of DA1469x SDK | |
Espressif ESP32 | Dual mode | VHCI | Not yet | SoC with Bluetooth and Wifi | |
EM 9301, 9304 | LE | SPI | n.a. | em9301 | Custom HCI SPI implementation |
Intel Dual Wireless 8260, 8265 | Dual mode | USB | Probably | intel | Firmware size: 400 kB |
Nordic nRF | LE | H4 | n.a. | Requires custom HCI firmware | |
STM STLC2500D | Classic | H4 | No (didn't try) | stlc2500d | Custom deep sleep management not supported |
Toshiba TC35661 | Dual mode | H4 | No | tc3566 | |
TI CC256x, WL183x | Dual mode | H4, H5, eHCILL | Yes | cc256x | Also WL185x, WL187x, and WL189x |
More infos on supported chipsets
Path | Description |
---|---|
chipset | Support for individual Bluetooth chipsets |
doc | Sources for BTstack documentation |
example | Example applications available for all ports |
platform | Support for special OSs and/or MCU architectures |
port | Complete port for a MCU + Chipset combinations |
src | Bluetooth stack implementation |
test | Unit and PTS tests |
tool | Helper tools for BTstack |