Hearable Controls

Hearable controls on Fast Pair aim to provide better access controls for important Hearable features on Android. A new message group Hearable controls inside Message Stream has been added to achieve this.

Message Group Name Value
Hearable control 0x08

Active noise control

Active noise control is becoming a prominent feature for premium headphones. On the Seeker side, Fast Pair will have the UI and logic to set, get and save the state, and the state will be stored on the Provider side. It is mandatory for provider to send Session Nonce when event stream is connected. To achieve this, below message codes are defined:

Message Code Name Value Sender Responder MAC ACK
Get ANC state 0x11 Seeker Provider N N
Set ANC state 0x12 Seeker Provider Y Y
Notify ANC state 0x13 Provider Seeker N N

When a Seeker connects to a Provider, or when a Provider receives a "Get ANC state" message, the Provider can Notify the ANC state to let the Seeker know its ANC capability and its stored state. The message is as follow:

Byte Data Type Description Value
0 uint8 Hearable control 0x08
1 uint8 Notify ANC state 0x13
2 - 3 uint16 Additional data length 0x04
4 - 7 ANC control data varies
ANC control data
Byte Data Type Description Value
0 uint8 Version code varies,0x02 for this version
1 Flags UI toggles
Each mode is enabled (1) or disabled (0) according to the value of its flag bit, as follows:
Bit 0 (MSB): transparent
Bit 1: Reserved (Set bit to 0)
Bit 2: off
Bit 3: Reserved (Set bit to 0)
Bit 4: ANC
varies
2 Flags Settable toggles
Any or all of the UI toggle bits above may also be set here, to indicate which are currently enabled.
varies
3 Flags Current state
Only one bit can be set
varies

The Seeker will show the toggle UI according to the ANC control data.

Example 1: The Provider supports 3-way ANC: transparent - off - ANC & buds are on-head, all modes are settable now, and current state is off:

Byte Data Type Description Value
0 uint8 Version code 0x01
1 Flags UI toggles 0b10101000
2 Flags Settable toggles 0b10101000
3 Flags Current state 0b00100000

Example 2: The Provider supports 3-way ANC: transparent - off - ANC, only one bud is on-head now or no buds is on-head, so no modes are settable, and the current state is off:

Byte Data Type Description Value
0 uint8 Version code 0x01
1 Flags UI toggle 0b10101000
2 Flags Settable toggle 0b00000000
3 Flags Current state 0b00100000

If the user switches the toggle, the Seeker will set the current state to the Provider as follow:

Byte Data Type Description Value
0 uint8 Hearable control 0x08
1 uint8 Set ANC state 0x12
2 - 3 uint16 Additional data length varies, 0x04 or 0x14
4 uint8 Seeker Version code varies, 0x01 or 0x02
5 Flags ANC Settable modes (UI toggle) varies
6 Flags ANC Enabled modes (Settable toggle) varies
7 Flags New ANC mode index (New state) varies
8 - 23 Reserved varies

The byte 4 - 7 is actually ANC control data sent from Seeker side. If additional length value is set as 0x14, the reserved bytes 8-23 would be present and on receipt of these bytes, the provider should ignore them. If additional length value is set as 0x04, there are no reserved bytes present.

When a Provider receives a "Set ANC state" message, it should Acknowledge, and Notify ANC state to all connected Seekers. If the user changes the setting via headset gesture or companion application, the Provider should also send notification to all connected Seekers.