Share via


Bluetooth Classic audio accessories (BR/EDR transport)

Advanced Audio Distribution Profile (A2DP)

Windows users often have Bluetooth headsets in order to play high-quality music. In Bluetooth, this is often handled with the Advanced Audio Distribution Profile (A2DP). Windows supports the mandatory low-complexity Sub-band codec (SBC) along with the low-complexity Advanced Audio Codec (AAC LC) and Qualcomm® aptX™ codecs.

Audio accessories:

  • Shall support A2DP version 1.3 or newer
  • Should support the AAC LC audio codec
  • May support the aptX™ audio codec

For more information about supported audio codecs, see Bluetooth Classic Audio.

Audio/Video Remote Control Profile (AVRCP)

Windows users with Bluetooth audio accessories often want to control their audio without having to manipulate their Windows system. This is often handled in Bluetooth with the Audio/Visual Remote-Control Protocol (AVRCP). Supported operations often include repeat, shuffle, notifications, play, pause, volume (including absolute volume Service Discovery Protocol (SDP) records), browsing, and metadata. For accessories targeting Windows, generally the accessory is the controller and the Windows system is the target.

Audio accessories shall implement AVRCP 1.6.2 or newer for both controller (CT) and target (TG) roles.

AVRCP – Service Discovery Protocol (SDP)

Audio accessories:

  • Shall define 2 separate service records in the SDP server for AVRCP CT and TG roles.
  • Shall indicate support of at least Category 2 in the Supported Features attribute of the TG SDP service record.

AVRCP – Volume

Audio accessories:

  • Shall implement the Absolute Volume feature of AVRCP 1.6.2 Table 3.1 row 16 for the TG role.
  • Shall adjust audible speaker volume when receiving SetAbsoluteVolume PDU. The Windows system sends this PDU when the user manipulates volume UI and expects the audible volume to change.
  • Shall fully mute the speaker when the AVRCP volume is 0. At minimum level, users expect audio to be completely silenced.
  • Shall properly support receiving the GetCapabilities PDU. The Windows system sends this PDU to check that the EVENT_VOLUME_CHANGED PDU is supported.
  • Shall complete the Volume Change Notification (do send the EVENT_VOLUME_CHANGED PDU) when the volume changes locally on the speaker accessory.
  • When the SCO channel is connected,
    • Audio accessories shall indicate local speaker volume changes to the Windows system using the HFP Remote Volume feature.
    • Audio accessories shall not complete the Volume Change Notification.
  • When Windows changes volume remotely with the SetAbsoluteVolume command, audio accessories shall not complete the Volume Change Notification (do not send the EVENT_VOLUME_CHANGED PDU). See AVRCP 1.6.2 section 6.13.3.

AVRCP – Play and pause

Audio accessories shall register for EVENT_PLAYBACK_STATUS_CHANGED notifications and shall use the INTERIM and CHANGED responses to stay in sync with the TG's play status. Alternatively, or concurrently, audio accessories may issue the Get Play Status command to read the TG's play status before issuing a CONTROL command to toggle playback status from playing to paused or vice versa.

Hands Free Profile (HFP)

Windows users with Bluetooth headsets often want to control their communications from the headset without having to manipulate their Windows PC. The Hands-Free Profile is used for communications accessories such as headsets and automobile integration where audio, controls, and indicators are coordinated between the Audio Gateway (AG) and the Hands-Free unit (HF).

Audio accessories shall support the HF (hands-free) portion of the HFP version 1.8 or newer spec. The PC will perform the AG (Audio Gateway) portion.

In Windows 11, HFP and A2DP render endpoints, if both are supported by the accessory, are unified into a single speaker endpoint in Windows. Selection of HFP or A2DP is automatically handled by the OS based on operating conditions. For more information about endpoint unification in Windows 11, see Bluetooth Classic Audio.

Feature requirements

Feature Specification Windows Requirement Notes
Audio connection handling HFP Table 3.1*, row 3 See notes Developers should carefully follow the connection handling specifications; see the section below for details
Echo Cancellation / Noise Reduction HFP Table 3.1, row 14 should Echo cancellation is recommended for audio accessories
HF Remote audio volume control HFP Table 3.1, row 18 shall See sections below for additional notes
Wide Band Speech HFP Table 3.1, row 23 shall Developers should carefully follow the requirements, especially with regard to mSBC alignment. See sections below for additional notes.
Codec Negotiation HFP Table 3.1, row 24 and HFP Section 4.11 shall
HF Indicators HFP Table 3.1, row 25 shall Audio accessories must support the Battery Level indicator per Battery profiles and services
mSBC requirements HFP Section 5.7.4 must Developers must carefully follow the requirements. See the section below for details.

* HFP refers to the Hands-Free Profile (HFP), version 1.8. HFP Table 3.1 refers to the Hands-Free Profile (HFP), version 1.8, section 3 “Application Layer", table 3.1.

Audio connection handling

Note

The Audio Connection handling feature from HFP 1.8 Table 3.1 row 3 is mandatory; all audio accessories that support HFP-HF must support those features.

The HFP-HF accessory shall be capable of completing the Audio Connection Setup procedure initiated by the HFP-AG regardless of current call status or voice recognition activation. This includes routing audio to the HFP-HF microphone and speaker.

The HFP-HF accessory shall render A2DP audio streams to the speaker when there is no established SCO connection between the AG and the HF. This can occur when an application is using the HFP-HF accessory for audio rendering only (no microphone operation) but is also interacting with call control buttons or LEDs on the accessory.

The HFP-HF accessory should maintain the audio connection until the HFP-AG releases the audio connection or there is a user action or significant internal event on the HFP-HF accessory that requires it to release the audio connection. Note that audio connections can occur outside of the context of an active call – for example, while recording voice notes.

mSBC requirements, including frame alignment within eSCO packets

The audio accessory shall comply with mSBC requirements as described in the Hands-Free Profile (HFP) 1.8, Section 5.7.4.

The sender should align mSBC audio frames in the transmitted over-the-air eSCO packets. This means the first octet of an mSBC frame will always be at the first octet of an eSCO air packet payload. Alignment improves experience by reducing latency and impact of packet loss.

The receiver shall be able to handle unaligned mSBC frames. This implies that the parser shall scan the stream of eSCO data for sync words, which are defined in the Hands-Free Profile (HFP) 1.8, Section 5.7.2, "Synchronization Header for Transparent Data", to find the start of mSBC frames and extract those frames from the stream. Note that if the transport parser does not scan for sync words and assumes alignment, it can possibly pass invalid mSBC frames to the audio decoder that will likely reject the frames.

Note

This HFP specification clarification is HFP erratum 11949, found at https://bluetooth.atlassian.net/browse/ES-11949.

This is covered in section 3.3.1.1 of the Microsoft Teams V5 specifications from the Microsoft Teams and Skype for Business specifications.

Volume: Hands-Free Profile (HFP) + Audio/Video Remote Control Profile (AVRCP)

Users expect that their Bluetooth audio accessories provide a consistent audio level regardless of which audio service the accessory uses. This section includes information for both the Hands-Free Profile (HFP) (part of BR/EDR) and the Audio/Visual Remote-Control Protocol (AVRCP) (part of LE).

The audio accessory shall not reset volume levels between connections. When a user reconnects, they expect the volume to be the same as left from the previous connection.

Audio accessories may display a volume range whose values don’t have a 1:1 match to the underlying Bluetooth values. For example, a headset might just show volume range of low, medium, and high (fewer values than in the spec) or might show a volume as a percent value (more values than the spec).

The audio accessory shall produce a comfortable audio taper and similar sound pressure levels (SPL) across the HFP 0-15 range and AVRCP 0-127 range. For example, HFP level 8 should have a similar SPL as AVRCP level 68. This allows Windows to move audio streams between HFP/SCO and A2DP while maintaining a similar volume level for a given position in the Windows volume user interface.

Example pseudocode for converting the HFP and AVRCP values. OEM shall pick conversion functions such that converting from HFP to AVRCP and then back to HFP always recreates the original HFP value over the entire HFP range of 0 to 15. The conversion from AVRCP to HFP will remove some precision, but the conversion must be stable:

  1. For a starting AVRCP value, convert to HFP and back to AVRCP to get a lower-precision AVRCP value.
  2. Convert the lower-precision AVRCP value to HFP.
  3. The two HFP values should be the same.

Example acceptable pseudocode:

FUNCTION HfpToAvrcp(hfp)
   avrcp = (hfp*127) / 15
   avrcp = Math.Round(avrcp)
RETURN avrcp

FUNCTION AvrcpToHfp(avrcp)
   hfp = (avrcp*15) / 127
   hfp = Math.Round(hfp)
RETURN hfp

Triggering

Accessory manufacturers should note that the audio connection can be triggered by either the AG or the HF as described in HFP 4.11.

Mute HF Microphone

The HF accessory shall mute the HF microphone when receiving +VGM=0 and unmute when receiving +VGM=<nonzero value>.

HF Microphone mute action

The HF accessory shall transmit AT+VGM=0 when the user mutes the HF mic and shall transmit AT+VGM=<nonzero value> when the user unmutes the HF mic.

HF microphone mute manipulation

The HF accessory shall transmit the AT+VGM command when the user manipulates the mic mute on the accessory (e.g., mute button or gesture) regardless of HF call status, voice recognition (BVRA) activation status, SCO connection status, or AVDTP status. Users sometimes wish to manipulate and confirm mic mute status before using the mic. This allows Windows to update mic mute status UI regardless of whether the microphone is currently in use.

Mute HF speaker

The HF speaker shall fully mute on receiving +VGS=0.

User adjusts HF speaker volume

The HF accessory shall transmit AT+VGS=<value> when the user adjusts speaker volume on the HF while a SCO channel is connected. AVRCP is the preferred mechanism for controlling speaker volume. The HFP Remote Volume feature is used for speaker volume only while the SCO channel is connected.

Note

This is different than the guideline for microphone volume.

Synchronize volume and microphone UI

The HF accessory shall transmit AT+VGS and AT+VGM immediately after completing the Service Level Connection (SLC) establishment procedure. This allows Windows volume and mic UI to synchronize the accessory’s levels.