|
| 1 | +.. _ug_ble_controller: |
| 2 | + |
| 3 | +Bluetooth LE Controller |
| 4 | +####################### |
| 5 | + |
| 6 | +When you develop a Bluetooth Low Energy (LE) application, you must include a Bluetooth LE Controller. |
| 7 | +A Bluetooth LE Controller is the layer of the Bluetooth stack that handles the physical layer packets and all associated timing. |
| 8 | +It implements the Link Layer, which is the low-level, real-time protocol that controls the Bluetooth LE communication. |
| 9 | + |
| 10 | +The |NCS| contains two implementations of a Bluetooth LE Controller: |
| 11 | + |
| 12 | +* `nRF Bluetooth LE Controller`_ |
| 13 | +* `Zephyr Bluetooth LE Controller`_ |
| 14 | + |
| 15 | +The nRF Bluetooth LE Controller is implemented by Nordic Semiconductor. |
| 16 | +The Zephyr Bluetooth LE Controller is an open source Link Layer developed in the `Zephyr Project`_, to which Nordic Semiconductor is a contributor. |
| 17 | + |
| 18 | +Both Link Layers integrate with the Zephyr Bluetooth LE Host, which completes the full Bluetooth LE protocol stack solution in the |NCS|. |
| 19 | +It is possible to select either Bluetooth LE Controller for application development. |
| 20 | +See `Usage in samples`_ for more information. |
| 21 | + |
| 22 | + |
| 23 | +nRF Bluetooth LE Controller |
| 24 | +*************************** |
| 25 | + |
| 26 | +The :ref:`nRF Bluetooth LE Controller <nrfxlib:ble_controller>` is designed for nRF52 and nRF53 Series devices. |
| 27 | +It provides the same implementation of the Link Layer that is available as part of Nordic Semiconductor's SoftDevices. |
| 28 | +The nRF Bluetooth LE Controller is developed, tested, and supported by Nordic Semiconductor. |
| 29 | + |
| 30 | +The nRF Bluetooth LE Controller is distributed as a set of precompiled, linkable libraries that can be found in the `nrfxlib`_ repository. |
| 31 | +There are different variants of the libraries that support different feature sets. |
| 32 | +Which variant you should choose depends on the chip that you are using, the features that you need, and the amount of available memory. |
| 33 | + |
| 34 | +Nordic's Bluetooth LE 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). |
| 35 | +See the :ref:`nRF Bluetooth LE Controller documentation <nrfxlib:ble_controller>` for a detailed list of supported features. |
| 36 | + |
| 37 | + |
| 38 | +Zephyr Bluetooth LE Controller |
| 39 | +****************************** |
| 40 | + |
| 41 | +The `Zephyr Project`_ has a full, open source, :ref:`Bluetooth Low Energy stack <zephyr:bluetooth-arch>`, which includes the Zephyr Bluetooth LE Controller. |
| 42 | +This Bluetooth LE Controller is designed with an upper and lower implementation to make it possible to support multiple hardware platforms. |
| 43 | +It is developed by the Zephyr community and provided as open source. |
| 44 | + |
| 45 | +To use Zephyr's Bluetooth LE Controller in your application, include a :ref:`Controller-only build <zephyr:bluetooth-build-types>` of the Bluetooth LE stack. |
| 46 | + |
| 47 | +Zephyr's Bluetooth LE Controller supports most of the standard Bluetooth LE features, except for Advertising Extensions. |
| 48 | +See the :ref:`Zephyr documentation <zephyr:bluetooth-overview>` for a detailed list of supported features. |
| 49 | + |
| 50 | + |
| 51 | +Usage in samples |
| 52 | +**************** |
| 53 | + |
| 54 | +Most :ref:`Bluetooth LE samples <ble_samples>` in the |NCS| can use either Bluetooth LE Controller. |
| 55 | +An exception is the :ref:`ble_llpm` sample, which requires the nRF Bluetooth LE Controller that supports LLPM. |
| 56 | + |
| 57 | +By default, all samples except for the :ref:`ble_llpm` sample are currently configured to use Zephyr's Bluetooth LE Controller. |
| 58 | +To use the nRF Bluetooth LE Controller instead, set :option:`CONFIG_BT_LL_NRFXLIB_DEFAULT` to ``y`` in the :file:`prj.conf` file (see :ref:`configure_application`) and make sure to build from a clean build directory. |
0 commit comments