xref: /btstack/README.md (revision 43a197a7caea9356e35ab5095c560d5258d7cad3)
19cd88577SMatthias Ringwald**_Note: Major API Changes. For older projects, you may use the [v0.9 branch](https://github.com/bluekitchen/btstack/tree/v0.9).
2287b4054SMatthias RingwaldPlease see [Migration notes](https://github.com/bluekitchen/btstack/blob/master/doc/manual/docs/appendix/migration.md)_**
3490a6e27SMatthias Ringwald
42d04a09aSmilamikica# Welcome to BTstack
52d04a09aSmilamikica
6bac2979aSMilanka RingwaldBTstack is [BlueKitchen's](http://bluekitchen-gmbh.com) implementation of the official Bluetooth stack.
7bac2979aSMilanka RingwaldIt is well suited for small, resource-constraint devices
82d04a09aSmilamikicasuch as 8 or 16 bit embedded systems as it is highly configurable and comes with an ultra small memory footprint.
92d04a09aSmilamikicaA minimal configuration for an SPP server on a MSP430 can run in 32 kB FLASH and only 4 kB of RAM.
102d04a09aSmilamikica
11*43a197a7SMatthias RingwaldTargeting 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.
122d04a09aSmilamikica
132d04a09aSmilamikicaOn smaller embedded systems, a minimal run loop implementation allows to use BTstack without a Real Time OS (RTOS).
142d04a09aSmilamikicaIf a RTOS is already provided, BTstack can be integrated and run as a single thread.
152d04a09aSmilamikica
162d04a09aSmilamikicaOn larger systems, BTstack provides a daemon that connects to a Bluetooth module.
172d04a09aSmilamikicaMultiple applications can communicate with this daemon over different inter-process communication methods.
182d04a09aSmilamikica
19*43a197a7SMatthias RingwaldBTstack supports the Central and the Peripheral Role of Bluetooth 4.2 Low Energy specification.
20*43a197a7SMatthias RingwaldIt can be configured to run as either single-mode stack or a dual-mode stack.
212d04a09aSmilamikica
22*43a197a7SMatthias RingwaldBTstack is free for non-commercial use. However, for commercial use, <a href="mailto:[email protected]">tell us</a> a bit about your project to get a quote.
23*43a197a7SMatthias Ringwald
24*43a197a7SMatthias Ringwald#### Supported Protocols and Profiles
25*43a197a7SMatthias Ringwald
26*43a197a7SMatthias Ringwald**Protocols:** L2CAP, RFCOMM, SDP, BNEP, ATT, SM (incl. LE Secure Connections).
27*43a197a7SMatthias Ringwald
28*43a197a7SMatthias Ringwald**Profiles** GAP, IOP, HFP, HSP, SPP, PAN, GATT.
29*43a197a7SMatthias Ringwald
30*43a197a7SMatthias Ringwald**Coming next** A2DP, AVRCP, HID, HOGP, BLE Mesh, and more.
31*43a197a7SMatthias Ringwald
326d9dc928SMatthias RingwaldIt has been qualified with the the Bluetooth SIG for GAP, IOP, HFP, HSP, SPP, PAN profiles and
33*43a197a7SMatthias RingwaldGATT, SM of the Bluetooth 4.2 LE Central and Peripheral roles (QD ID 25340). For information on MFi/iAP2 support, please <a href="mailto:[email protected]">contact us</a>.
342d04a09aSmilamikica
35*43a197a7SMatthias Ringwald#### Documentation: [HTML](http://bluekitchen-gmbh.com/btstack/develop/), [PDF](http://bluekitchen-gmbh.com/btstack_develop.pdf)
36439fcdeaSmilamikica
37*43a197a7SMatthias Ringwald#### Discussion and Community Support: [BTstack Google Group](http://groups.google.com/group/btstack-dev)
382d04a09aSmilamikica
39b1b4c413SMatthias Ringwald
402fe24f3eSMatthias Ringwald## Evaluation Platforms
41bac2979aSMilanka Ringwald
42cd07fdb2SMilanka Ringwald#### Embedded Platforms:
430776193fSMatthias RingwaldStatus               | Platform
440776193fSMatthias Ringwald--------------       | ------
453f8e63e4SMatthias Ringwald[<img src="http://buildbot.bluekitchen-gmbh.com/btstack/badge.png?builder=port-ez430-rf2560-develop">](https://buildbot.bluekitchen-gmbh.com/btstack/builders/port-ez430-rf2560-develop)                       | [EZ430-RF256x Bluetooth Evaluation Tool for MSP430](http://www.ti.com/tool/ez430-rf256x)
463f8e63e4SMatthias Ringwald[<img src="http://buildbot.bluekitchen-gmbh.com/btstack/badge.png?builder=port-msp-exp430f5438-cc2564b-develop">](https://buildbot.bluekitchen-gmbh.com/btstack/builders/port-msp-exp430f5438-cc2564b-develop) | [MSP430F5438 Experimenter Board for MSP430](http://www.ti.com/tool/msp-exp430f5438) with [Bluetooth CC2564 Module Evaluation Board](http://www.ti.com/tool/cc2564modnem)
473f8e63e4SMatthias Ringwald[<img src="http://buildbot.bluekitchen-gmbh.com/btstack/badge.png?builder=port-msp430f5229lp-cc2564b-develop">](https://buildbot.bluekitchen-gmbh.com/btstack/builders/port-msp430f5229lp-cc2564b-develop)     | [MSP-EXP430F5529LP LaunchPad](http://www.ti.com/ww/en/launchpad/launchpads-msp430-msp-exp430f5529lp.html#tabs) with [Bluetooth CC2564 Module Evaluation Board](http://www.ti.com/tool/cc2564modnem) and [EM Adapter BoosterPack](http://www.ti.com/tool/boost-ccemadapter) with additional 32768Hz quartz oscillator
483f8e63e4SMatthias Ringwald[<img src="http://buildbot.bluekitchen-gmbh.com/btstack/badge.png?builder=port-stm32-f103rb-nucleo-develop">](https://buildbot.bluekitchen-gmbh.com/btstack/builders/port-stm32-f103rb-nucleo-develop)         | [STM32 Nucleo development board NUCLEO-F103RB](http://www.st.com/web/catalog/tools/FM116/SC959/SS1532/LN1847/PF259875) with [Bluetooth CC2564 Module Evaluation Board](http://www.ti.com/tool/cc2564modnem) and [EM Adapter BoosterPack](http://www.ti.com/tool/boost-ccemadapter) with additional 32768Hz quartz oscillator
493f8e63e4SMatthias Ringwald[<img src="http://buildbot.bluekitchen-gmbh.com/btstack/badge.png?builder=port-pic32-harmony-develop">](https://buildbot.bluekitchen-gmbh.com/btstack/builders/port-pic32-harmony-develop)                     | [Microchip's PIC32 Bluetooth Audio Development Kit](http://www.microchip.com/Developmenttools/ProductDetails.aspx?PartNO=DV320032)
503f8e63e4SMatthias Ringwald[<img src="http://buildbot.bluekitchen-gmbh.com/btstack/badge.png?builder=port-wiced-develop">](https://buildbot.bluekitchen-gmbh.com/btstack/builders/port-wiced-develop)                                     | [RedBear Duo](https://github.com/redbear/WICED-SDK) with Broadcom BCM43438 A1
510776193fSMatthias Ringwald
52cd07fdb2SMilanka Ringwald
53cd07fdb2SMilanka Ringwald#### Other Platforms:
540776193fSMatthias RingwaldStatus               | Platform
550776193fSMatthias Ringwald--------------       | ------
56273591abSMatthias Ringwald[<img src="http://buildbot.bluekitchen-gmbh.com/btstack/badge.png?builder=port-posix-h4-develop">](https://buildbot.bluekitchen-gmbh.com/btstack/builders/port-posix-h4-develop) | posix: Unix-based system connected to Bluetooth module via serial port
57273591abSMatthias Ringwald[<img src="http://buildbot.bluekitchen-gmbh.com/btstack/badge.png?builder=port-libusb-develop">](https://buildbot.bluekitchen-gmbh.com/btstack/builders/port-libusb-develop)     | libusb: Unix-based system with dedicated USB Bluetooth dongle
58f62ec7adSMatthias Ringwald[<img src="http://buildbot.bluekitchen-gmbh.com/btstack/badge.png?builder=port-daemon-develop">](https://buildbot.bluekitchen-gmbh.com/btstack/builders/.. | windows-h4: Win32-based system connected to Bluetooth module via serial port
59f62ec7adSMatthias Ringwald.. | windwos-winusb: Win32-based system with dedicated USB Bluetooth dongle
60f62ec7adSMatthias Ringwaldport-daemon-develop)     | daemon: TCP and Unix domain named socket client-server architecture supporting multiple clients
613f8e63e4SMatthias Ringwald[<img src="http://buildbot.bluekitchen-gmbh.com/btstack/badge.png?builder=java-develop">](https://buildbot.bluekitchen-gmbh.com/btstack/builders/java-develop)                   | java: Java wrapper for daemon
623f8e63e4SMatthias Ringwald[<img src="http://buildbot.bluekitchen-gmbh.com/btstack/badge.png?builder=port-ios-develop">](https://buildbot.bluekitchen-gmbh.com/btstack/builders/port-ios-develop)           | iOS: daemon for iOS jailbreak devices, C client-server API
633f8e63e4SMatthias Ringwald[<img src="http://buildbot.bluekitchen-gmbh.com/btstack/badge.png?builder=port-mtk-develop">](https://buildbot.bluekitchen-gmbh.com/btstack/builders/port-mtk-develop)           | mtk: daemon for rooted Android devices, based on Mediatek MT65xx processor, Java and C client-server API
643f8e63e4SMatthias Ringwald[<img src="http://buildbot.bluekitchen-gmbh.com/btstack/badge.png?builder=port-wiced-develop">](https://buildbot.bluekitchen-gmbh.com/btstack/builders/port-wiced-develop)       | wiced: Broadcom platforms that support the WICED SDK
65bac2979aSMilanka Ringwald
66bac2979aSMilanka Ringwald## Supported Chipsets
67273591abSMatthias Ringwald
68273591abSMatthias RingwaldChipset              | Type      | HCI Transport   | SCO over HCI (2) | BTstack folder | Comment
69273591abSMatthias Ringwald-------------------- |-----------| ----------------|------------------|----------------|---------
7094bb7abfSMatthias RingwaldBroadcom UART        | Dual mode | H4, H5          | Probably         | bcm            | Max UART baudrate 2 mbps
7194bb7abfSMatthias RingwaldBroadcom USB Dongles | Dual mode | USB             | Yes              | bcm            |
72273591abSMatthias RingwaldCSR UART             | Dual mode | H4, H5          | No (didn't work) | csr            |
73273591abSMatthias RingwaldCSR USB Dongles      | Dual mode | USB             | Yes              | csr            |
74273591abSMatthias RingwaldEM 9301              | LE        | SPI             | n.a.             | em9301         | Custom HCI SPI implementation
75273591abSMatthias RingwaldNordic nRF           | LE        | H4              | n.a.             |                | Requires custom HCI firmware
76273591abSMatthias RingwaldSTM STLC2500D        | Classic   | H4              | No (didn't try)  | stlc2500d      | Custom deep sleep management not supported
77273591abSMatthias RingwaldToshiba TC35661      | Dual mode | H4              | No (didn't try)  | tc3566         | HCI version not tested.
78273591abSMatthias RingwaldTI CC256x, WL183x    | Dual mode | H4, H5, eHCILL  | Yes              | cc256x         | Also WL185x, WL187x, and WL189x
79273591abSMatthias Ringwald
80273591abSMatthias Ringwald[More infos on supported chipsets](https://bluekitchen-gmbh.com/btstack/develop/chipsets/)
8140276177SMatthias Ringwald
8240276177SMatthias Ringwald## Source Tree Overview
8340276177SMatthias RingwaldPath				| Description
8440276177SMatthias Ringwald--------------------|---------------
8540276177SMatthias Ringwaldchipset             | Support for individual Bluetooth chipsets
8640276177SMatthias Ringwalddoc                 | Sources for BTstack documentation
87b3d63497SMatthias Ringwaldexample             | Example applications available for all ports
8840276177SMatthias Ringwaldplatform            | Support for special OSs and/or MCU architectures
897a33c82fSMatthias Ringwaldport                | Complete port for a MCU + Chipset combinations
9040276177SMatthias Ringwaldsrc                 | Bluetooth stack implementation
9140276177SMatthias Ringwaldtest                | Unit and PTS tests
9240276177SMatthias Ringwaldtool                | Helper tools for BTstack
93