.. _bluetooth: Bluetooth ######### Zephyr comes integrated with a feature-rich and higly configurable Bluetooth stack: * Bluetooth 4.2 compliant * Bluetooth Controller support (LE Link Layer) * Currently supports Nordic Semconductor nRF51 and nRF52 * Generic Access Profile (GAP) with all possible roles * Peripheral & Central * Observer & Broadcaster * GATT (Generic Attribute Profile) * Server (to be a sensor) * Client (to connect to sensors) * Pairing support, including the Secure Connections feature from Bluetooth 4.2 * IPSP/6LoWPAN for IPv6 connectivity over Bluetooth LE * IPSP node sample application in ``samples/bluetooth/ipsp`` * Clean HCI driver abstraction * 3-Wire (H:5) & 5-Wire (H:4) drivers available * Local controller support also as an HCI driver * Raw HCI interface to run Zephyr as a Controller instead of a full Host stack * Possible to export HCI over a physical transport * ``samples/bluetooth/hci_uart`` sample for HCI over UART * ``samples/bluetooth/hci_usb`` sample for HCI over USB * Verified with multiple popular controllers * Highly configurable * Features, buffer sizes/counts, stack sizes, etc. Source tree layout ================== The stack is split up as follows in the source tree: ``subsys/bluetooth/host`` The host stack. This is where the HCI command & event handling as well as connection tracking happens. The implementation of the core protocols such as L2CAP, ATT & SMP is also here. ``subsys/bluetooth/controller`` Bluetooth Controller implementation. Implements the controller-side of HCI, the Link Layer as well as access to the radio transceiver. ``include/bluetooth/`` Public API header files. These are the header files applications need to include in order to use Bluetooth functionality. ``drivers/bluetooth/`` HCI transport drivers. Every HCI transport needs its own driver. E.g. the two common types of UART transport protocols (3-Wire & 5-Wire) have their own drivers. ``samples/bluetooth/`` Sample Bluetooth code. This is a good reference to get started with Bluetooth application development. ``tests/bluetooth/`` Test applications. These applications are used to verify the functionality of the Bluetooth stack, but are not necessary the best source for sample code (see ``samples/bluetooth`` instead). ``doc/subsystems/bluetooth/`` Extra documentation, such as PICS documents. Further reading =============== More information on the stack and its usage can be found in the `wiki `_ and the following subsections: .. toctree:: :maxdepth: 1 ../../api/bluetooth.rst devel.rst qualification.rst