Device information
Providers can notify a Seeker about device information via the message stream.
Message Group Name | Value |
---|---|
Device information event | 0x03 |
Device Information Code Name | Value |
---|---|
Model ID | 0x01 |
BLE address updated | 0x02 |
Battery updated | 0x03 |
Remaining battery time | 0x04 |
Active components request | 0x05 |
Active components response | 0x06 |
(Deprecated)Capabilities | 0x07 |
Platform type | 0x08 |
Firmware version | 0x09 |
Current FMDN ephemeral identifier | 0x0B |
Model ID
Model ID information (for
Retroactively Writing AccountKey) should be
sent to the Seeker when RFCOMM connects. For example, 0x03010003AABBCC
would be:
- 0x03: Device information event
- 0x01: Model ID value
- 0x0003: Additional data, length 3
- 0xAABBCC: Additional data, model ID
BLE address
BLE address information (for
Retroactively Writing AccountKey) , if
available, should also be sent to the Seeker when RFCOMM connects and whenever
the address is rotated. For example, 0x03020006AABBCCDDEEFF
would be:
- 0x03: Device information event
- 0x02: BLE address value
- 0x0006: Additional data, length 6
- 0xAABBCCDDEEFF: Additional data, BLE address
Battery updated
For Providers that support battery notifications,
battery information can also be sent via RFCOMM. When RFCOMM connects or the
battery value changes, an update should be sent. The additional data section of
the packet should contain identical data to bytes s + 2, s + 3, s + 4 when
advertising battery data over BLE. For example,0x0303000357417F
would be:
- 0x03: Device information event
- 0x03: Battery value
- 0x0003: Additional data, length 3
- 0x57417F: Additional data, battery values
- 0x57: Left bud value, not charging, 87% battery
- 0x41: Right bud value, not charging, 65% battery
- 0x7F: Case value, not charging, unknown battery
Providers can also update remaining battery time (if known), For example,
0x03040001F0
would be:
- 0x03: Device information event
- 0x04: Remaining battery time
- 0x0001: Additional data, length 1 (could be 2 for uint16 if needed.)
- 0xF0: Additional data, remaining battery time in minutes, 240 minutes
Active components
Seekers may sometimes desire to know which components are currently active, meaning that an action can be taken on them (see Device actions). When the Provider receives a request containing the active components request code (0x05), a response should be returned within 1 second indicating the Provider's current state. The response will use the active components response code (0x06) and contain additional data indicating which components are available.
For a Provider with a single component, the additional data should be set to 0x00 if it is not available. An example of this might be a low power mode where media playback will not be performed. Otherwise, additional data should be set to 0x01.
For headsets with multiple components (for example, a left and right bud), each bit in the additional data represents whether that component is active. An example of an inactive component might be a bud which is in the case and not in use. Specifically for the left and right bud case:
- 0x00 (0b00000000): Neither bud active
- 0x01 (0b00000001): Right bud active, left inactive
- 0x02 (0b00000010): Left bud active, right inactive
- 0x03 (0b00000011): Both buds active
Platform Type
Providers may want to perform differently based on the platform that they are connected to. Fast Pair is currently only performed through Android, but support may be expanded in the future.
The message will contain a first byte identifying platform type in the additional data:
Platform Name | Value |
---|---|
Android | 0x01 |
The second byte will be customized per platform. In Android, it will refer to the SDK version. For example, Android Pie will have a value of 28 (0x1C).
Firmware version
The provider's firmware version as a string in utf-8 encoding. It's the same information as in the Firmware revision characteristic.
Current FMDN Ephemeral Identifier
Providers that advertise FMDN frames should report the current FMDN Ephemeral Identifier (EID) with their current clock value to sync with the Seeker in case of a clock drift (for example, due to drained battery).
For example:
- 0x03: Device information event
- 0x0B: Current FMDN ephemeral identifier message
- 0x0018: Additional data, length 24 or 36 bytes
- 0x13F9EA80: Additional data (clock value; 4 bytes)
- 0x1122334455667788990011223344556677889900: Additional data (current EID; 20 or 32 bytes)