| .. _bluetooth-overview: |
| |
| Overview |
| ######## |
| |
| .. contents:: |
| :local: |
| :depth: 2 |
| |
| Since its inception, Zephyr has had a strong focus on Bluetooth and, in |
| particular, on Bluetooth Low Energy (BLE). Through the contributions of |
| several companies and individuals involved in existing open source |
| implementations of the Bluetooth specification (Linux's BlueZ) as well as the |
| design and development of BLE radio hardware, the protocol stack in Zephyr has |
| grown to be mature and feature-rich, as can be seen in the section below. |
| |
| Supported Features |
| ****************** |
| |
| Zephyr comes integrated with a feature-rich and highly configurable |
| Bluetooth stack. |
| |
| * Bluetooth 5.0 compliant (ESR10) |
| |
| * Highly configurable |
| |
| * Features, buffer sizes/counts, stack sizes, etc. |
| |
| * Portable to all architectures supported by Zephyr (including big and |
| little endian, alignment flavors and more) |
| |
| * Support for all combinations of Host and Controller builds: |
| |
| * Controller-only (HCI) over UART, SPI, and USB physical transports |
| * Host-only over UART, SPI, and IPM (shared memory) |
| * Combined (Host + Controller) |
| |
| * Bluetooth-SIG qualified |
| |
| * Controller on Nordic Semiconductor hardware |
| * Conformance tests run regularly on all layers |
| |
| * Bluetooth Low Energy Controller support (LE Link Layer) |
| |
| * Unlimited role and connection count, all roles supported |
| * Concurrent multi-protocol support ready |
| * Intelligent scheduling of roles to minimize overlap |
| * Portable design to any open BLE radio, currently supports Nordic |
| Semiconductor nRF51 and nRF52, as well as proprietary radios |
| * Supports little and big endian architectures, and abstracts the hard |
| real-time specifics so that they can be encapsulated in a hardware-specific |
| module |
| * Support for Controller (HCI) builds over different physical transports |
| |
| * Bluetooth Host support |
| |
| * Generic Access Profile (GAP) with all possible LE 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 |
| |
| * Non-volatile storage support for permanent storage of Bluetooth-specific |
| settings and data |
| |
| * Bluetooth mesh support |
| |
| * Relay, Friend Node, Low-Power Node (LPN) and GATT Proxy features |
| * Both Provisioning bearers supported (PB-ADV & PB-GATT) |
| * Highly configurable, fits as small as 16k RAM devices |
| |
| * IPSP/6LoWPAN for IPv6 connectivity over Bluetooth LE |
| |
| * IPSP node sample application |
| |
| * Basic Bluetooth BR/EDR (Classic) support |
| |
| * Generic Access Profile (GAP) |
| * Logical Link Control and Adaptation Protocol (L2CAP) |
| * Serial Port emulation (RFCOMM protocol) |
| * Service Discovery Protocol (SDP) |
| |
| * Clean HCI driver abstraction |
| |
| * 3-Wire (H:5) & 5-Wire (H:4) UART |
| * SPI |
| * Local controller support as a virtual HCI driver |
| |
| * Verified with multiple popular controllers |