This is the documentation for the latest (main) development branch of Zephyr. If you are looking for the documentation of previous releases, use the drop-down menu on the left and select the desired version.


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