In Classic Bluetooth, when a Central wants audio it just says “I want an audio connection” — no further detail. BLE Audio changes this completely. Context Types let devices describe what kind of audio they are sending or willing to receive, enabling smart stream management across complex multi-device scenarios.
1. Why Context Types Are Needed
|
Classic Audio (A2DP / HFP)
📱 Phone: “I want an audio connection”
🎧 Headset: “OK, connecting…”
No context. Works OK for single-purpose profiles (A2DP = music, HFP = calls). Breaks when mixed use cases appear.
|
BLE Audio (BAP + Context Types)
📱 Phone: “I want a Conversational stream (incoming call)”
🎧 Hearing Aid: “Ringtone is currently UNAVAILABLE — I’m in a private meeting”
Stream request rejected silently before any Isochronous Stream is set up. User’s current audio is undisturbed.
|
2. All 12 Context Types (2-octet bitfield)
| Bit | Context Type | Description & Use Case |
|---|---|---|
| 0 | Unspecified | Catch-all for any use case not explicitly listed. Every Acceptor must support this. When set Available = Acceptor accepts anything not explicitly blocked. Gives phone full control (like A2DP/HFP). |
| 1 | Conversational | Human-to-human conversation: cellular calls, VoIP, landline, PTT. Bidirectional stream expected (microphone + speaker). |
| 2 | Media | Audio content — radio, TV, music playback. Typically one-way. Equivalent to A2DP’s content type. |
| 3 | Game | Gaming audio — mix of effects, music, in-game voice. Low latency is critical. Often combined with Conversational for voice chat. |
| 4 | Instructional | Satnav directions, announcements, user guidance. Often higher priority than other types — may interrupt music. |
| 5 | Voice Assistants | Man-machine voice recognition (Alexa, Google Assistant, Siri). Bidirectional speech. Distinct from Instructional. |
| 6 | Live | Live audio where Bluetooth stream and ambient sound are heard together (e.g., live concert, hearing aid pass-through). Strict low-latency requirement — Presentation Delay ≤ 20ms. |
| 7 | Sound Effects | UI sounds: keyboard clicks, touch feedback, app-specific sounds. |
| 8 | Notifications | Attention-seeking sounds: new message arrival, app alerts. |
| 9 | Ringtone | Only for INBAND ringtones (custom ringtone audio streamed from phone). Out-of-band ringtones (locally generated in earbud) use CCP/TBS signalling — no audio stream needed. |
| 10 | Alerts | Machine-generated event alerts: battery critical, doorbell, kitchen appliance complete, stopwatch alarm. |
| 11 | Emergency Alarm | Highest priority. Smoke detector, fire alarm — cannot be blocked by other context settings. |
| 12–15 | RFU | Reserved for future use. |
Supporting Ringtone does NOT imply supporting Conversational. An extension bell for a deaf user only needs Ringtone to alert about an incoming call — no bidirectional voice stream required. Context Types are fully independent.
3. How Context Types Control Stream Setup
|
📱
Initiator
(Phone / Laptop)
|
1. ASCS Write on ACL link
“Stream type: Conversational (bit 1)” →→→→→→→→→→→→
ACL (existing connection) — no ISO stream yet
←←←←←←←←←←←←
2a. REJECT: Context unavailable
— OR — 2b. ACCEPT: proceed to CIS setup |
🦻
Acceptor
(Hearing Aid)
Available_Audio_Contexts
= Media | Conversational (Ringtone = BLOCKED) |
4. Availability — Where Context Types Are Exposed
| Characteristic (PACS) | Meaning | Changes? |
|---|---|---|
| Supported_Audio_Contexts | All Context Types the device hardware can ever handle. Set at manufacture. Read-only. | No — fixed |
| Available_Audio_Contexts | Context Types currently accepting new streams RIGHT NOW. Can change dynamically. E.g., set Ringtone=unavailable during a private conversation. | Yes — runtime |
Context Types also appear in Streaming_Audio_Contexts LTV inside codec configuration metadata — this labels an active stream with its current use case and can be updated mid-stream (e.g., when satnav interrupts music, the stream context changes from Media → Instructional without tearing down the stream).
5. BlueZ: PACS — Exposing Context Types
In BlueZ, the PACS (Published Audio Capabilities Service) is exposed through the org.bluez.Media1 interface. Context types are embedded in the PAC record metadata.
