Detecting Unwanted Location Trackers (DULT)

The Detecting Unwanted Location Trackers (DULT) library implements a set of functionalities required for Detecting Unwanted Location Trackers (DULT) integration with the nRF Connect SDK. The implementation is based on the official DULT specification, which lists a set of best practices and protocols for products with built-in location tracking capabilities. Following the specification improves the privacy and safety of individuals by preventing the location tracking products from tracking users without their knowledge or consent.

Accessory non-owner service (ANOS)

The DULT library implements the accessory non-owner service (ANOS), which is a GATT service that uses the accessory non-owner characteristic to communicate with other devices. The ANOS uses UUID of 15190001-12F4-C226-88ED-2AC5579F2A85. The accessory non-owner characteristic manages the DULT Accessory Information and the DULT Non-owner controls defined in the DULT specification.

Configuration

Set the CONFIG_DULT Kconfig option to enable the module. This Kconfig option depends on the CONFIG_BT option that enables the Bluetooth® stack.

The following Kconfig options are also available for this module:

See the Kconfig help for details.

Note

The CONFIG_DULT_MOTION_DETECTOR_TEST_MODE option selects the CONFIG_DULT_TEST option, which enables the test-only layer of the DULT module. Do not enable it in a production build.

Implementation details

The implementation uses BT_GATT_SERVICE_DEFINE to statically define and register the ANOS. Because of that, the ANOS is still present in the GATT database after the DULT subsystem is disabled. With the CONFIG_DULT_API_VARIANT_V1 Kconfig option, GATT operations on the ANOS are rejected until the DULT subsystem is enabled. With the CONFIG_DULT_API_VARIANT_V2 Kconfig option, operations can also be served in the pre-association window for the DULT user that claimed the Bluetooth connection, subject to the access policy. For more details, see the Handling multiple accessory-locating networks and Customizing the access policy to the accessory non-owner service sections of the DULT integration guide.

The ANOS handles all requests received from the outer world. In case of an application input needed to handle a GATT operation, the DULT subsystem calls the appropriate registered application callback. For more details, see the Integration steps section of the DULT integration guide.

With the CONFIG_DULT_API_VARIANT_V2 Kconfig option, the module keeps a slot table sized by the CONFIG_DULT_USER_MAX Kconfig option. Each slot holds the per-user state, which is why callbacks, the battery level, and the near-owner state survive the dult_reset() function call and are only cleared by the dult_user_unregister() function call.

API documentation

Header files: include/dult/dult.h, include/dult/bt.h, include/dult/multi_user.h, include/dult/test.h
Source files: subsys/dult
Detecting Unwanted Location Trackers
Detecting Unwanted Location Trackers - Bluetooth
Detecting Unwanted Location Trackers - Multi-user coexistence
Detecting Unwanted Location Trackers - test functionality