Bluetooth LE Controller
When you develop a Bluetooth® Low Energy (LE) application, you must include a Bluetooth® LE Controller. A Bluetooth LE Controller is the layer of the Bluetooth stack that handles the physical layer packets and all associated timing. It implements the Link Layer, which is the low-level, real-time protocol that controls the Bluetooth LE communication.
The nRF Connect SDK contains two implementations of a Bluetooth LE Controller:
The SoftDevice Controller is implemented by Nordic Semiconductor. The Zephyr Bluetooth LE Controller is an open source Link Layer developed in Zephyr, to which Nordic Semiconductor is a contributor.
Both Link Layers integrate with the Zephyr Bluetooth Host, which completes the full Bluetooth LE protocol stack solution in the nRF Connect SDK. It is possible to select either Bluetooth LE Controller for application development. See Usage in samples for more information.
The SoftDevice Controller is designed for nRF52 and nRF53 Series devices. It provides the same implementation of the Link Layer that is available as part of Nordic Semiconductor’s SoftDevices. The SoftDevice Controller is developed, tested, and supported by Nordic Semiconductor.
The SoftDevice Controller is distributed as a set of precompiled, linkable libraries that can be found in the sdk-nrfxlib repository. There are different variants of the libraries that support different feature sets. Which variant you should choose depends on the chip that you are using, the features that you need, and the amount of available memory.
Nordic’s SoftDevice Controller supports an extensive standard feature set from the Bluetooth® 5.2 specification and a number of extensions for high-performance applications like Low Latency Packet mode (LLPM). See the SoftDevice Controller documentation for a detailed list of supported features.
Zephyr has a full, open source, Bluetooth Low Energy stack, which includes the Zephyr Bluetooth LE Controller. This Bluetooth LE Controller is designed with an upper and lower implementation to make it possible to support multiple hardware platforms. It is developed by the Zephyr community and provided as open source.
To use Zephyr’s Bluetooth LE Controller in your application, include a Controller-only build of the Bluetooth LE stack.
Zephyr’s Bluetooth LE Controller supports most of the standard Bluetooth LE features. See the Zephyr documentation for a detailed list of supported features.
By default, all samples are currently configured to use SoftDevice Controller.
To use the Zephyr Bluetooth LE Controller instead, set
y in the
prj.conf file (see Configuring your application) and make sure to build from a clean build directory.
If your Bluetooth application requires the LE Secure Connections pairing and you want to use the Zephyr Bluetooth LE Controller, make sure to enable the
CONFIG_BT_TINYCRYPT_ECC option as the ECDH cryptography is not supported by this Bluetooth LE Controller.