Fast Pair Help

Verifying Fast Pair

Fast Pair quickly identifies Bluetooth devices near an Android mobile device and lets users connect devices with a quick tap on a notification. This document describes how to verify that Fast Pair is working correctly. The examples in this document use a Google Pixel 2 as a model Android device to test Fast Pair headsets with.

Enabling Google Play services notifications

Fast Pair requires Google Play services notifications to be enabled. If the notifications are disabled, Fast Pair notifications used to connect the Bluetooth device to your phone will not appear.

Google Play services notifications are enabled by default. If notifications are disabled, you can enable them in Settings > Apps & notifications > Google Play services > Notifications.

Debug model ID

Register your device in the console to receive a model ID. After registration, the ID will be in debug mode until it is approved for production use. To enable notifications for a debug mode ID, ensure that developer mode is on for your Android device and go to Settings > Google > Devices > > Include debug results.

Fast Pair UI Flows

The UI flows below illustrate the pairing flow when a Bluetooth headset is registered with its model ID and there is an associated companion app linked. If the headset does not have a companion app, then the pairing will still complete normally.

The initial pairing flows show when a Fast Pair device is in pairing mode (discoverabe) and is going to pairing with a phone with a registered Google account.

The subsequent pairing flows show when a Fast Pair device is not in pairing mode (not discoverable). In subsequent pairing, the Fast Pair device has already been paired with a phone with a registered Google account and you are trying to pair the Fast Pair device with another phone that is logged into the same Google account.

Initial Pairing

Subsequent Pairing

Shorten BLE connection interval

To improve building GATT connection performance, the Provider is expected to make the connection interval as short as possible. The expected optimal value is 7.5 ms which is applied to most Seekers.

BLE advertisement and headset connection state

Whether a Fast Pair headset advertises the model ID or account data depends on the headset's BR/EDR discoverable mode, not the connected or disconnected state. Refer to the Fast Pair Service Spec from the links below:

  • "When the Provider device is in BR/EDR discoverable (that is, in pairing mode), it shall advertise Fast Pair Model ID Data over BLE." - link
  • "When not discoverable (that is, not in pairing mode), the Provider shall advertise Fast Pair Account Data" - link

Testing and debugging Fast Pair

This document explains how to test and debug a Fast Pair device with an Android device. The examples in the document use a Google Pixel 2 for testing.

Fast Pair test guideline

Requirements

  • Two Android 6.x or higher phones
    • Connected to the internet and have Bluetooth and Location turned on
    • Logged into the same Google Account
  • Fast Pair-enabled Bluetooth device

Test case 1: First-time pairing

Setup
  • Make sure the Bluetooth device has not paired with the phone before. If the devices have paired before, go to Bluetooth settings on the phone and select Forget Device. If needed, toggle airplane mode on and off to help reset Bluetooth states.
  • Make sure the Bluetooth device has not associated with the Google Account on the phone before.
  • Enable pairing mode on the Bluetooth device.
  • Place the Bluetooth device within 60 cm (24 in) of the Android phone.
Expected behavior

When the Android phone detects the Fast Pair-enabled Bluetooth device, an initial pairing notification appears.

Tap the notification to start Fast Pairing.

When pairing completes, the Android device displays a Device connected notification. If the Bluetooth headset device has a companion app, then tapping on the notification will take you to the Play Store to download the app.

If pairing fails, then the Android device displays an Unable to connect notification.

Test case 2: Pairing a Google-account associated device with a new phone

Setup
  • Make sure the Bluetooth device has not paired with the phone before. If the devices have paired before, go to Bluetooth settings on the phone and select Forget Device. If needed, toggle airplane mode on and off to help reset Bluetooth.
  • Make sure the Bluetooth device has been associated with the Google account registered on the device. You can check for a previous association by doing the following:
    • On the Android device that was used for the initial pairing, go to Settings > Google > Devices > Saved devices. The paired Bluetooth device should appear under the account.

NOTE: Fast Pair will turn on Automatically save devices after users click the initial pairing notification the first time.

  • Check the second Android phone for a subsequent pairing. If the paired device synced to the second phone, then a subsequent pairing notification will appear in Settings > Google > Devices > Saved devices. If the paired device does not appear under Saved devices after 20 minutes, there may be an issue with your test account. Try registering new test accounts to your devices and try again.
    • If registering new test accounts does not work, try running Test Case 1 on another device that is signed into the original Google Account.
  • Place the Bluetooth device within 60 cm (24 in) of the Android phone.
Expected behavior

When the Android phone detects the Fast Pair-enabled Bluetooth device, a pairing notification for a previously-associated device appears.

Tap the notification to start subsequent pairing.

When the fast pair completes, the Android device displays a Device connected notification.

If fast pairing fails, then the Android device displays an Unable to connect notification.

Debugging with a bug report

Before reproducing the bug

Before starting testing and debugging, make sure you have enabled Bluetooth HCI snoop log for debugging. For instructions on enabling Bluetooth HCI snoop logs, see “Debugging with logs” on Verifying and Debugging Bluetooth.

To make logging easier, run the following commands after every device reboot, before you begin testing. These commands turn on logging and let you grab the bug report.

$ adb logcat -G 16M
$ adb shell setprop log.tag.NearbyMessages VERBOSE
$ adb shell setprop log.tag.NearbyDiscovery VERBOSE
$ adb shell setprop log.tag.FastPair VERBOSE

Leave the phone next to the Bluetooth device for a few minutes before generating the bug report zip file.

After reproducing the bug

Run $ adb bugreport to generate a zip file that should contain all of the data. The zip file generation may take several minutes.

Depending on the Android version, run one of the following commands to get btsnoop_hic.log:

  • For Android 8.x and higher: shell $ adb pull data/misc/bluetooth/logs logs
  • For Android 7.x: shell $ adb pull sdcard/btsnoop_hci.log

Advertising other protocols alongside Fast Pair

Some devices may want to support additional features on top of Fast Pair, such as Google Assistant or Eddystone, that require additional advertisement space. In those cases, there are two options depending on how many bytes are currently being advertised and their contents:

  1. Move some data to the scan response.
  2. Rotate advertisements at a set interval.

Moving data to scan response

Moving data such as manufacturer name, tx power or other details to the scan response is the preferred option as that data will always be available to anyone scanning around the device. Scan response allows you to double your packet size with the downside that it may be advertised less frequently than the main packet information, meaning slightly longer discovery time.

Scan response is best suited for information outside of the service data where Fast Pair needs to be included at. See the advertising section of the spec for specific information about Fast Pair's advertising requirements.

Rotating advertisements

If both the primary and scan response packets no longer have room for data, another option can be to rotate the advertisement data so that scanners can obtain it all over some length of time.

While the device is in pairing mode and advertising a model ID, Fast Pair advertisments should make up the majority of the duty cycle. To reduce the chances of Fast Pair missing your advertisements, the advertising window should be at least 2 seconds long, and the intervals between these advertisements should be no more than 4. Please note, this will severely limit compatibility and reliability of Fast Pair on older Android devices, as well as increase the time it takes Fast Pair to show the initial pairing notification.

While advertising a bloom filter, these windows and intervals can be relaxed further. However, if you support optional Fast Pair features (such as battery advertisements), these might also be hindered by aggressively relaxing the Fast Pair advertising duty cycle.

The rotation of these advertisements will be tested during the Fast Pair certification process. If a rotating scheme is used, be sure that advertisements can still be scanned for in a timely manner, otherwise certification may be delayed.