Quality of Service module

The Quality of Service (QoS) module provides the QoS information through the Bluetooth® GATT service. The module can be used only by nRF Desktop peripheral with the SoftDevice Link Layer (CONFIG_BT_LL_SOFTDEVICE).

The module is made available in case the peripheral is meant to be paired with a third-party dongle. In such case, the vendor can use the Quality of Service data provided by the nRF Desktop peripheral to improve the link quality.


There is no need to enable the Quality of Service module if you want to pair the peripheral device with the nRF Desktop dongle. The dongle does not depend on the service provided by the Quality of Service module on peripheral devices.

For more information about the format of the Quality of Service data, see the Bluetooth LE Quality of Service module documentation.

Module events

Source Module

Input Event

This Module

Output Event

Sink Module

Bluetooth LE Quality of Service module



Source modules for module_state_event



Sink modules for module_state_event


See the Overview: Firmware architecture for more information about the event-based communication in the nRF Desktop application and about how to read this table.


The module requires the basic Bluetooth® configuration, as described in Bluetooth in nRF Desktop.

The module is enabled with CONFIG_DESKTOP_QOS_ENABLE option. The module is available on the peripheral devices only and requires the Bluetooth LE Quality of Service module to be enabled.

Implementation details

The module uses BT_GATT_SERVICE_DEFINE to define a custom GATT Service. The UUID of the service is located in the module source file, qos.c. For more information about GATT, see Zephyr’s Generic Attribute Profile (GATT) documentation.

The module uses the Quality of Service data read from the SoftDevice Link Layer. This data is delivered in the form of a ble_qos_event event by the Bluetooth LE Quality of Service module. This is the same data that is used by the nRF Desktop dongle to avoid congested RF channels.