Bluetooth Low Energy

Bluetooth Low Energy (a.k.a Bluetooth LE, BTLE, Bluetooth Smart)

Architecture of mbed BLE solution

For most developers, one of Bluetooth Smart’s biggest challenges is the complexity of the stack’s underlying controller and APIs. mbed created BLE_API to abstract these details. Using the API means that applications can take advantage of the high-level constructs and interfaces offered by BLE_API while remaining compatible with all supported underlying Bluetooth Smart platforms. This makes for portable programs, easily moved from one supported platform to another. By using BLE_API, developers also implicitly benefit from all the low-power optimizations offered by the hardware.


BLE_API, Bridges and Stacks

A Bluetooth Smart application is composed of BLE_API, bridge software, and controller-specific Bluetooth stack:

  • BLE_API is a very thin and lightweight layer of C++ interfaces and abstractions allowing users to develop portable applications for Bluetooth Smart.
  • The bridge software is specific to each vendor’s platform. It provides the instantiations for the interfaces offered by BLE_API, and helps drive the underlying controller and Bluetooth stack.
  • The Bluetooth stack implements the Bluetooth protocol, and is specific to the controller.

BLE_API is developed on Github and mirrored on

Inside BLE_API


BLE_API offers building blocks to help construct applications. These fall into two broad categories: interfaces under 'public/' to express BLE constructs such as GAP, GATT, Service, Characteristics, etc, and classes under 'services/' to offer reference implementations for many of the commonly used GATT profiles. The code under 'services/' isn't essential, but offers a useful reference and a good starting point for prototyping. Code under 'common/' encapsulates headers that need to be shared between the public interfaces and underlying bridge code.

We expect to keep adding reference implementations for the standard GATT profiles under 'services/'.

Sample mbed BLE Apps

We have examples of the BLE apps, along with documentation: