Google Fast Pair Service (GFPS)
The Google Fast Pair Service (Fast Pair for short) implements a Bluetooth® Low Energy (LE) GATT Service required for Google Fast Pair integration with the nRF Connect SDK.
Service UUID
The Fast Pair service uses UUID of 0xFE2C.
Characteristics
The Fast Pair GATT characteristics are described in detail in the Fast Pair GATT Characteristics documentation. The implementation in the nRF Connect SDK follows these requirements.
The Fast Pair service also contains additional GATT characteristics under the following conditions:
The Additional Data GATT characteristic is enabled when an extension requires it. Currently, only the Personalized Name extension (
CONFIG_BT_FAST_PAIR_PN) requires this characteristic.The Beacon Actions GATT characteristic when the Find Hub Network (FHN) extension is enabled (
CONFIG_BT_FAST_PAIR_FHN). The characteristic is described in the Fast Pair Find Hub Network extension documentation.
Configuration
The Fast Pair Service is enabled with CONFIG_BT_FAST_PAIR Kconfig option set in the main application image.
With the CONFIG_BT_FAST_PAIR Kconfig option enabled, the following Kconfig options are available for this service:
CONFIG_BT_FAST_PAIR_GATT_SERVICE_MODEL_ID- The option adds the Model ID characteristic to the Fast Pair GATT service.CONFIG_BT_FAST_PAIR_REQ_PAIRING- The option enforces the requirement for Bluetooth pairing and bonding during the Fast Pair Procedure. See the Procedure without Bluetooth pairing for more details.CONFIG_BT_FAST_PAIR_SUBSEQUENT_PAIRING- The option adds support for the Fast Pair subsequent pairing feature.CONFIG_BT_FAST_PAIR_STORAGE_USER_RESET_ACTION- The option enables user reset action that is executed together with the Fast Pair factory reset operation. See the Custom user reset action for more details.CONFIG_BT_FAST_PAIR_STORAGE_ACCOUNT_KEY_MAX- The option configures maximum number of stored Account Keys.CONFIG_BT_FAST_PAIR_CRYPTO_OBERONandCONFIG_BT_FAST_PAIR_CRYPTO_PSA- These options are used to select the cryptographic backend for Fast Pair. The Oberon backend is used by default.CONFIG_BT_FAST_PAIR_BOND_MANAGER- The option enables the Fast Pair bond management functionality. See Fast Pair bond management functionality for more details.CONFIG_BT_FAST_PAIR_PN- The option enables the Fast Pair Personalized Name extension.CONFIG_BT_FAST_PAIR_STORAGE_PN_LEN_MAX- The option specifies the maximum length of a stored Fast Pair Personalized Name.
CONFIG_BT_FAST_PAIR_BN- The option enables the Fast Pair Battery Notification extension.CONFIG_BT_FAST_PAIR_FHN- The option enables the Fast Pair Find Hub Network extension.CONFIG_BT_FAST_PAIR_FHN_DULT- The option enables the Detecting Unwanted Location Trackers (DULT) support in the FHN extension (see DULT integration):CONFIG_BT_FAST_PAIR_FHN_DULT_MANUFACTURER_NAME- The option configures the manufacturer name parameter.CONFIG_BT_FAST_PAIR_FHN_DULT_MODEL_NAME- The option configures the model name parameter.CONFIG_BT_FAST_PAIR_FHN_DULT_ACCESSORY_CATEGORY- The option configures the accessory category parameter.CONFIG_BT_FAST_PAIR_FHN_DULT_FIRMWARE_VERSION_MAJOR,CONFIG_BT_FAST_PAIR_FHN_DULT_FIRMWARE_VERSION_MINORandCONFIG_BT_FAST_PAIR_FHN_DULT_FIRMWARE_VERSION_REVISION- These options configure the firmware version parameter.CONFIG_BT_FAST_PAIR_FHN_DULT_MOTION_DETECTOR- The option enables the DULT motion detector functionality support in the FHN extension (see Interacting with the motion detector from DULT).
There are following advertising configuration options for the FHN extension (see FHN extension):
CONFIG_BT_FAST_PAIR_FHN_TX_POWER- The option sets the TX power (dBm) in the Bluetooth LE controller for FHN advertising and connections.CONFIG_BT_FAST_PAIR_FHN_TX_POWER_CORRECTION_VAL- The value of this option is added to the TX power readout from the Bluetooth LE controller to calculate the calibrated TX power reported in the Read Beacon Parameters response.CONFIG_BT_FAST_PAIR_FHN_MAX_CONN- The option configures a maximum number of FHN connections. This option is bounded by theCONFIG_BT_MAX_CONNand cannot exceed its value.CONFIG_BT_FAST_PAIR_FHN_ECC_SECP160R1andCONFIG_BT_FAST_PAIR_FHN_ECC_SECP256R1- These options are used to select the elliptic curve for calculating the FHN advertising payload. The secp160r1 elliptic curve is enabled by default.
There are following battery configuration options for the FHN extension (see Battery level indication and Battery information with DULT):
CONFIG_BT_FAST_PAIR_FHN_BATTERY_LEVEL_LOW_THR- The option configures the threshold percentage value for entering the low battery state as defined in the FHN extension.CONFIG_BT_FAST_PAIR_FHN_BATTERY_LEVEL_CRITICAL_THR- The option configures the threshold percentage value for entering the critically low battery state as defined in the FHN extension.CONFIG_BT_FAST_PAIR_FHN_BATTERY_DULT- The option configures the FHN module to pass the battery information to the DULT module and to support its mechanism for providing battery information to the connected peers. You can only use this option when theCONFIG_BT_FAST_PAIR_FHN_DULTKconfig option is enabled.
There are following read mode configuration options for the FHN extension (see Using the read mode callbacks and managing the read mode state):
CONFIG_BT_FAST_PAIR_FHN_READ_MODE_FHN_RECOVERY_TIMEOUT- The option configures the Ephemeral Identity Key (EIK) recovery mode timeout in minutes.
There are following ringing configuration options for the FHN extension (see Using the ringing callbacks and managing the ringing state):
CONFIG_BT_FAST_PAIR_FHN_RING_COMP_NONE,CONFIG_BT_FAST_PAIR_FHN_RING_COMP_ONE,CONFIG_BT_FAST_PAIR_FHN_RING_COMP_TWO, andCONFIG_BT_FAST_PAIR_FHN_RING_COMP_THREE- These options are used to select the set of ringing components. The option with no ringing component is enabled by default.CONFIG_BT_FAST_PAIR_FHN_RING_VOLUME- The option enables ringing volume support.CONFIG_BT_FAST_PAIR_FHN_RING_REQ_TIMEOUT_DULT_BT_GATT- The option configures the ringing timeout for connected peers that use DULT-based ringing mechanism. You can only use this option when theCONFIG_BT_FAST_PAIR_FHN_DULTKconfig option is enabled.CONFIG_BT_FAST_PAIR_FHN_RING_REQ_TIMEOUT_DULT_MOTION_DETECTOR- The option configures the ringing timeout for ringing requests from the DULT motion detector. You can only use this option when theCONFIG_BT_FAST_PAIR_FHN_DULT_MOTION_DETECTORKconfig option is enabled.
There are following beacon clock service configuration options for the FHN extension (see Beacon clock service):
CONFIG_BT_FAST_PAIR_FHN_CLOCK_NVM_UPDATE_TIME- The option configures the time interval (in minutes) of periodic beacon clock writes to the non-volatile memory.CONFIG_BT_FAST_PAIR_FHN_CLOCK_NVM_UPDATE_RETRY_TIME- The option configures the retry time (in seconds) when the beacon clock write to the non-volatile memory fails.
CONFIG_BT_FAST_PAIR_FHN_PF- The option enables the Precision Finding support in the FHN extension (see Precision Finding).
CONFIG_BT_FAST_PAIR_USE_CASE_UNKNOWN,CONFIG_BT_FAST_PAIR_USE_CASE_INPUT_DEVICE,CONFIG_BT_FAST_PAIR_USE_CASE_LOCATOR_TAG, andCONFIG_BT_FAST_PAIR_USE_CASE_MOUSE- These options are used to select the Fast Pair use case and configure the Fast Pair library according to the Fast Pair Device Feature Requirements for the chosen use case. TheCONFIG_BT_FAST_PAIR_USE_CASE_UNKNOWNKconfig option is used by default.CONFIG_BT_FAST_PAIR_ADV_MANAGER- The option enables the Fast Pair Advertising Manager module. See the Configuration section to learn more about the remaining Kconfig options of this module.
See the Kconfig help for details.
Override of default Kconfig values
To simplify the configuration process, the GFPS modifies the default values of related Kconfig options to meet the Fast Pair requirements. The service also enables some of the functionalities using Kconfig select statement.
Bluetooth privacy
The service selects Bluetooth privacy (CONFIG_BT_PRIVACY).
During not discoverable advertising, the Resolvable Private Address (RPA) rotation must be done together with the Fast Pair payload update. Because of this, the RPA cannot be rotated by Zephyr in the background.
During discoverable advertising session, the Resolvable Private Address (RPA) rotation must not happen. Therefore, consider the following points:
Make sure that your advertising session is shorter than the value in the
CONFIG_BT_RPA_TIMEOUToption.Call the
bt_le_oob_get_local()function to trigger RPA rotation and reset the RPA timeout right before advertising starts.
Note
If you use the FHN extension, and your Provider is provisioned as an FHN beacon, do not use the bt_le_oob_get_local() function.
For more details, see the Setting up Bluetooth LE advertising section of the Fast Pair integration guide.
Bluetooth Security Manager Protocol (SMP)
The service selects the Kconfig options CONFIG_BT_SMP, CONFIG_BT_SMP_APP_PAIRING_ACCEPT, and CONFIG_BT_SMP_ENFORCE_MITM.
The Fast Pair specification requires support for Bluetooth® Low Energy pairing and enforcing Man-in-the-Middle (MITM) protection during the Fast Pair procedure.
Firmware Revision characteristic
The Fast Pair specification requires enabling GATT Device Information Service and the Firmware Revision characteristic for selected Fast Pair use cases (for example, the input device use case).
For this reason, the relevant use case Kconfig options (for example, the CONFIG_BT_FAST_PAIR_USE_CASE_INPUT_DEVICE Kconfig option) select the CONFIG_BT_DIS and CONFIG_BT_DIS_FW_REV Kconfig options.
If the target project uses Zephyr’s application version management, the default value of the CONFIG_BT_DIS_FW_REV_STR Kconfig option is set according to the versioning information found in the VERSION file.
Otherwise, it is set to 0.0.0+0.
MTU configuration
The Fast Pair specification suggests using ATT maximum transmission unit (MTU) value of 83 if possible.
Because of this requirement, the default values of the following Kconfig options are modified by the GFPS Kconfig:
Tip
When using nRF53 Series devices, this part of the configuration cannot be automatically updated for the network core and you must manually align it. The listed options must be set on the network core to the default values specified by the GFPS Kconfig options.
Security re-establishment
By default, the Fast Pair service disables the automatic security re-establishment request as a peripheral (CONFIG_BT_GATT_AUTO_SEC_REQ).
This allows a Fast Pair Seeker to control the security re-establishment.
Partition Manager (deprecated)
Note
The Partition Manager script is a component in the nRF Connect SDK and is responsible for handling the memory partitioning at build time.
This functionality is in the process of being deprecated and replaced by Zephyr’s default devicetree-based memory partitioning. It is recommended that all new designs using Nordic devices, excluding the nRF91 Series devices, are built with DTS instead of Partition Manager. Partition Manager will be removed from the nRF Connect SDK by the end of 2026 from the main branch.
For more information on how to configure partitions using DTS and how to migrate your existing configuration to DTS, see the Release notes page.
The only exception from these migration guidelines in the context of the Fast Pair sample support is the nRF53 Series DFU configuration with MCUboot in the overwrite mode (for example, the nrf5340dk/nrf5340/cpuapp board target in the Bluetooth Fast Pair: Locator tag sample).
This particular configuration is not yet deprecated, as the DTS alternative is not yet available.
The Fast Pair provisioning data is preprogrammed to a dedicated flash memory partition.
Settings
The GFPS uses Zephyr’s Settings to store Account Keys and the Personalized Name.
With the FHN extension enabled, it additionally stores the Owner Account Key, the EIK and the Beacon Clock.
Because of this, the GFPS selects the CONFIG_SETTINGS Kconfig option.
Bluetooth LE extended advertising for the FHN extension
The FHN extension (see CONFIG_BT_FAST_PAIR_FHN) selects the CONFIG_BT_EXT_ADV Kconfig option.
The extension uses the Bluetooth LE Extended Advertising Zephyr API to support simultaneous broadcast of multiple advertising sets.
In the simplest scenario, you should have the following two advertising sets in your application:
The application-specific advertising set with the Fast Pair payload.
The FHN advertising set for the FHN extension.
For more details regarding the advertising policy of the FHN extension, see the Setting up Bluetooth LE advertising section of the Fast Pair integration guide.
DULT module for the FHN extension
The CONFIG_BT_FAST_PAIR_FHN_DULT Kconfig option of the FHN extension selects the CONFIG_DULT Kconfig option to enable the DULT module.
The FHN extension implementation also acts as middleware between the user application and the DULT module.
The DULT module integration is required for small and not easily discoverable accessories.
The CONFIG_BT_FAST_PAIR_FHN_DULT Kconfig option is enabled by default.
The CONFIG_BT_FAST_PAIR_FHN_DULT_MOTION_DETECTOR Kconfig option of the FHN extension selects the CONFIG_DULT_MOTION_DETECTOR Kconfig option to enable the motion detector feature of the DULT module.
With this option enabled, the FHN extension passes the DULT motion detector callbacks from the DULT module to application.
To learn more about the DULT motion detector, see Interacting with the motion detector.
The CONFIG_BT_FAST_PAIR_FHN_BATTERY_DULT Kconfig option of the FHN extension selects the CONFIG_DULT_BATTERY Kconfig option to enable the battery support in the DULT module.
With this option enabled, the FHN extension passes the battery information also to the DULT module.
For more details on the DULT module, see the Detecting Unwanted Location Trackers (DULT) module documentation.
Implementation details
The implementation uses BT_GATT_SERVICE_DEFINE to statically define and register the Fast Pair GATT service.
The Fast Pair service automatically handles all requests received from the Fast Pair Seeker except for operations on the Beacon Actions characteristic that is part of the FHN extension.
For more details, see the Setting up GATT service section of the Fast Pair integration guide.
Bluetooth authentication
The Bluetooth pairing is handled using a set of Bluetooth authentication callbacks (bt_conn_auth_cb).
The pairing flow and the set of Bluetooth authentication callbacks in use depend on whether the connected peer follows the Fast Pair pairing flow:
If the peer follows the Fast Pair pairing flow, the Fast Pair service calls the
bt_conn_auth_cb_overlay()function to automatically overlay the Bluetooth authentication callbacks. The function is called while handling the Key-based Pairing request. Overlying callbacks allow the GFPS to take over Bluetooth authentication during the Fast Pair Procedure and perform all of the required operations without interacting with the application.If the peer does not follow the Fast Pair pairing flow, normal Bluetooth LE pairing and global Bluetooth authentication callbacks are used.
API documentation
include/bluetooth/fast_pair/fast_pair.hsubsys/bluetooth/fast_pairFast Pair UUID API
include/bluetooth/fast_pair/uuid.hsubsys/bluetooth/fast_pairFHN extension
include/bluetooth/fast_pair/fhn/fhn.hsubsys/bluetooth/fast_pair/fhnFHN Precision Finding
include/bluetooth/fast_pair/fhn/pf/pf.hsubsys/bluetooth/fast_pair/fhn/pfFHN Precision Finding for Bluetooth LE Channel Sounding
include/bluetooth/fast_pair/fhn/pf/ble_cs.hsubsys/bluetooth/fast_pair/fhn/pf