Welcome to BTstack
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.
Discussion and Community Support: BTstack Google Group
Supported Protocols and Profiles
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.
|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|
|Dialog Semiconductor DA14581, DA14585||LE||H4, SPI||n.a.||da14581||Official HCI firmware used|
|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|
Source Tree Overview
|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|