What you’ll take away
- A phone can help a receiver join while the broadcast audio travels directly from the source to the receiver.
- Compare the requested and reported stream sets; matching counts alone can hide a different selection.
- A raw encryption-status zero may mean the receiver has not yet determined encryption, rather than confirmed open audio.
- The same BIS indices use different bit positions in the documented BASS field and Zephyr API.
- A QR scan, control request or reception report establishes its own stage; record the reporting device, time and actual output.
A broadcast name is the beginning of the investigation
A conference room appears in a phone's broadcast list. You select it, yet the headphones remain quiet. That observation leaves several questions open: did the headphones receive the joining information, find the broadcast, receive the intended streams and turn their contents into sound? A name on the phone answers none of those questions by itself. Bluetooth LE Audio separates information used to discover a broadcast from the streams carrying its audio. Its Basic Audio Profile, or BAP, describes that separation. [1] The useful task is to identify the last stage for which you actually have evidence.
We will follow an invented listening setup with a room transmitter, a phone and headphones. All stream assignments, status snapshots and numbers below are teaching examples, not results from tested equipment. The explanation uses BAP 1.0.3 and Broadcast Audio Scan Service, or BASS, 1.0.1, alongside dated official implementation documentation. [1][2] You do not need a diagnostic screen to benefit from it. Even an ordinary support question improves when 'it connected' becomes 'the phone listed the broadcast, but I have not confirmed reception on the headphones.' That is a specific observation someone can investigate.
A discovered broadcast, a requested receiver configuration and an audible output are different observations. The first establishes that some selection information reached the discovering device. It does not establish successful periodic-advertising synchronization at another receiver, reception of the desired isochronous streams or presentation of decoded audio. BAP distinguishes broadcast announcements, configuration and broadcast-stream synchronization. [1] Treating a user-interface label as proof of the entire path discards these boundaries and makes a silent-output symptom unnecessarily ambiguous.
This article develops an original three-device fixture: a room Broadcast Source, a phone acting as an assistant, and a headphone receiver. Its assignments and state snapshots are hypothetical, with no radio test, product certification or measured timing implied. Normative references are BAP v1.0.3 and BASS v1.0.1; Zephyr references describe the exact latest-documentation snapshot retrieved on 7 November 2026. [1][2][4][5][7] The goal is to interpret evidence at the correct interface. A partially completed join can be explained without pretending that every consumer application exposes the same internal fields.
The phone can help without carrying the audio
In the assisted arrangement, the room transmitter sends the audio directly to the headphones. The phone helps the listener choose a broadcast and gives the headphones information needed to join it. Bluetooth SIG's joining explanation distinguishes this from ordinary pairing between the broadcaster and each listener. It also describes receivers that can choose broadcasts without a phone. [3] Think of the phone as helping with the selection rather than assume that every sound packet must travel through it. Those are different jobs, even if one physical device can perform several jobs in another setup.
BAP names the receiving role Broadcast Sink. The phone's helping role is Broadcast Assistant, while the Scan Delegator accepts the assistance; the latter can be part of the headphone device. The assistant has a control connection to that device. [1] Consequently, a phone being connected to the headphones can prove something about their control relationship without proving that the room's audio is arriving. Equally, removing the phone from a drawing of the audio path is not advice to disconnect it: a product may still use it for controls or later changes. Draw and check each relationship separately.
For this fixture, distinguish the source-to-sink audio plane from the assistant-to-delegator control plane. Bluetooth SIG's account of assisted joining has the receiver consume the transmitter's broadcast directly; the assistant supplies selection information instead of becoming an obligatory audio relay. Joining the broadcast is not a dedicated pairing transaction between the source and every receiver. [3] That architectural distinction does not prohibit other connections or collocated roles. It identifies which relationship carries the audio under discussion.
BAP assigns the Broadcast Assistant a GATT client role and the Scan Delegator a GATT server role. A receiver can combine Broadcast Sink and Scan Delegator functions. The Broadcast Source role itself has no GATT role requirement. [1] Therefore, a successful control connection is not evidence of reception over the distinct broadcast path. This is also why an assistant's location and radio observations must not be silently substituted for the sink's. Product behavior when the assistant disconnects depends on its wider design; the diagram establishes a data-flow boundary, not a universal disconnection procedure.
Announcements describe what the receiver can follow
A broadcast needs to make itself findable and describe the audio it offers. BAP uses extended advertising for discovery and periodic advertising for information associated with the broadcast. Within that information, the BASE structure describes the audio arrangement; BIGInfo provides information used to synchronize with the group of audio streams. [1] The names are technical, but their roles are familiar: first find the offering, then learn what is available and how to follow it. Reading the description is still different from receiving the content it describes.
Imagine a display that has announced an upcoming talk while its audio streams are not currently available. A receiver could follow the periodic announcements and still have no talk to play. BAP explicitly allows it to remain synchronized to that advertising while waiting for audio to become available. [1] That case is more informative than declaring the whole Bluetooth link either working or broken. The discovery path can work while the audio path is not ready. A useful status description names what has arrived, instead of combining every stage into a single green indicator.
The relevant BAP hierarchy separates extended advertisements, periodic advertisements and Broadcast Isochronous Streams, or BISes, within a Broadcast Isochronous Group, or BIG. BASE carries the audio configuration, including subgroup organization; BIGInfo enables synchronization to the broadcast transport. [1] Configuration information and transport synchronization information serve different purposes. Neither should be confused with the actual stream payload, and merely possessing one category does not establish that the receiver has completed every subsequent operation.
This distinction produces a simple counterexample to the inference 'periodic advertising synchronized, therefore audio received.' BAP permits a sink or delegator to remain synchronized to the periodic advertising when the audio stream is unavailable, awaiting a later opportunity. [1] In our hypothetical room, an announcement can therefore be observable before usable talk audio exists. The counterexample does not need an invented timeout or packet-loss rate. It follows from the separate availability states and tells the reader why a diagnostic should distinguish announcement reception from BIS synchronization.
A join request and its result are separate records
BASS lets an assistant provide source information and request changes in the receiver's behavior. It also lets the receiver expose its state. Accepting an Add Source operation does not mean that every requested stream has already arrived: the standard separately describes attempts, synchronization results and failures. [2] This is the same everyday distinction as asking for two files and checking which files actually arrived. The request records the intention. The report records what the receiver says happened at a particular time.
For an original example, suppose our receiver accepts a request for streams numbered 1 and 3 from a known unencrypted broadcast. In snapshot A, it reports periodic-advertising synchronization and reception of stream 1 only. In snapshot B, it reports streams 1 and 3. The requested set is unchanged, but the observations differ. Snapshot A is incomplete for that request; snapshot B confirms the requested stream set, not the entire listening experience. We have not yet checked how those streams are decoded, assigned to outputs or played. Keeping that final distinction prevents a transport report from being mistaken for a listening test.
BASS separates its Broadcast Audio Scan Control Point from Broadcast Receive State. An accepted Add Source operation establishes or updates source-related state and can initiate synchronization attempts; the receive-state fields report outcomes. [2] Treat command acceptance as a control-plane event. It is not equivalent to the assertion that all requested BISes are synchronized, that encrypted content is usable, or that samples have reached an output. The state model contains more information than a single success flag.
Define a hypothetical requested BIS set Q = {1, 3} for a broadcast already established to be unencrypted. Snapshot A has periodic advertising synchronized and received set R = {1}; snapshot B has the same advertising state and R = {1, 3}. In A, Q minus R is {3}; in B, it is empty. This set difference evaluates fulfillment of the selected transport request. It does not evaluate decoding or playback. The snapshots are deliberately not assigned durations or probabilities: no deadline, retry mechanism or performance measurement has been supplied.
Stream count is not listener count
A broadcast may contain alternative presentations, and a presentation can need more than one stream. BAP organizes streams into subgroups intended to be decoded and presented together. [1] Our invented room offers presentation A as two complementary stereo channels: stream 1 is left and stream 3 is right. Presentation B is a complete mono commentary in stream 2. These assignments are made for this example; stream numbers do not carry those meanings automatically. The configuration is what tells a receiver how to interpret them.
There are three streams in this example but two listening choices. A listener choosing presentation A needs its two declared channels; a listener choosing presentation B chooses the single commentary stream. Counting three streams does not tell us there are three listeners, three speakers in the room or three independent programmes. Nor does receiving stream 1 satisfy the stated two-channel presentation. The bookkeeping becomes clearer when you write the desired presentation first and then list the streams required for it. That order avoids collecting whatever stream happens to appear first and assuming it is the intended content.
BAP's BASE hierarchy groups BISes into subgroups representing streams intended for simultaneous presentation. [1] Define our original BIG with three BISes and two subgroups: A contains BIS 1 and BIS 3, assigned complementary left and right channels; B contains BIS 2, assigned a self-contained mono commentary. Each BIS belongs to exactly one subgroup. These are hypothetical configuration choices, not intrinsic meanings of the BIS indices or a reproduction of a source document's example.
The BIG therefore has three transport streams but two offered presentations. Selecting A creates a required set {1, 3}; selecting B creates {2}. The number of streams is not the receiver population, nor does it by itself count complete programmes. This distinction also prevents a partial-set observation from being called full stereo reception. Under the stated assignment, R = {1} lacks the right-channel stream required by A. What a particular device does with that incomplete input is a separate rendering policy, so the example does not promise silence, automatic duplication or any other fallback.
Ask whether the received set matches the chosen presentation
Suppose a receiver can handle two streams at once. That capacity would be enough for our two-stream presentation A, but it would not prove that A has been selected or received. A receiver following streams 1 and 2 also has two streams, yet one belongs to a different presentation. Equal counts hide different contents. This is why the useful check is the actual set of stream numbers and their declared meaning, not just a badge saying 'two streams active.' Our example specifies the receiver's capacity as an assumption, not a feature claimed for real headphones.
There is a second useful comparison. If the person selected mono commentary B and the receiver reports stream 2, the requested set is complete even though only one stream is active. More streams would not automatically improve that choice. BAP's grouping and the separate stream-selection interface in Zephyr show why selection needs that context. [1][7] For the listener, the practical record is concise: which presentation was chosen, which streams it requires, and which are being received. That record explains more than either a stream total or the broadcast's name alone.
Let a fictional receiver have capacity C = 2 concurrent BISes. For presentation A, the cardinality of Q is 2, so the capacity constraint is satisfied. That necessary resource check is not a selection or reception proof. A report R = {1, 2} also has cardinality 2, but Q minus R is {3}, while R minus Q is {2}. One required stream is absent and another presentation's stream is present. The correct comparison is between sets under the declared BASE configuration, not between their cardinalities.
Conversely, a user selecting B has Q = {2}; R = {2} fulfills that requested set with one stream. Receiving an additional stream is not inherently better. BAP's subgroup organization and Zephyr's explicit BIS-selection argument support keeping presentation meaning separate from stream allocation. [1][7] These finite cases are analytical fixtures, not claims that a controller permits every arbitrary combination or that a receiver implements a particular fallback. They establish the narrower point: capacity, requested membership and observed membership answer different questions.
An encrypted broadcast adds another condition
An encrypted broadcast needs a usable Broadcast_Code at the receiver. BASS distinguishes a code being needed, a supplied code being rejected and the receiver decrypting the stream. [2] Entering something into a phone therefore does not, by itself, prove that the receiver can use the audio. The value has to reach the relevant receiver and work for the intended broadcast. This does not require a separate audio pairing between every listener and the room transmitter; it is another condition on consuming the broadcast.
A subtle detail matters when reading raw status. BASS uses zero in BIG_Encryption for an unencrypted stream, but also specifies zero when the receiver has not yet determined whether encryption is present. [2] Zero without that context is not proof of an open broadcast. In our teaching snapshots, keep 'known unencrypted' separate from 'not yet known.' Similarly, a decrypting report tells us more than a code-entry confirmation, but does not certify sound at the ear. Looking for the next missing piece of evidence is more useful than repeatedly entering a code when the real uncertainty lies elsewhere.
Treat encryption state as a separate dimension of receiver status. BASS v1.0.1 defines BIG_Encryption states for a required code, active decryption and a detected incorrect code. [2] The relevant assertion is not merely that the assistant stored a value or issued a control operation. The receiver must have a usable Broadcast_Code for the encrypted stream it is attempting to consume. This shared broadcast mechanism must not be conflated with creating a source-to-listener unicast audio connection.
BIG_Encryption also illustrates why field labels need their surrounding state. Section 3.2.1.7 assigns zero both to an unencrypted BIS and to the case where encryption has not yet been determined. [2] Consequently, the predicate 'known open' cannot safely be replaced by 'field equals zero' without additional discovery context. Our finite model keeps unknown distinct from known unencrypted, even if a raw field collapses them. A decrypting state resolves the key-related condition more specifically, but still leaves decoding, channel routing and output behavior outside what that field alone establishes.
A QR code can select a broadcast and carry its code
The Broadcast Audio URI specification describes selection information that can be represented in a QR code or another medium. It can also include the Broadcast_Code for encrypted audio. [6] A scan can therefore save typing and help pick the intended presentation. It does not carry the continuing audio performance inside the printed squares. In our room, the receiver still needs the actual radio streams after the phone has read the sign. A successful scan and successful listening are observations at different boundaries.
Now imagine that the same sign, including its broadcast code, is visible to everyone entering the room. The people reading it have been given the same joining material. Encryption alone has not created a distinct entitlement for each visitor. That conclusion follows from our stated distribution choice; it is not a claim about breaking encryption. A second practical limitation is freshness: a printed sign cannot change a stored value when the broadcaster changes it. [6] Use the venue's intended joining method, and distinguish selecting the right broadcast from deciding who should receive its access information.
BAU v1.0 defines an out-of-band representation that assists broadcast selection; its QR representation can include a Broadcast_Code for encrypted audio. [6] The URI is selection and configuration material, not an alternative carrier for the ongoing stream payload. Depending on the supplied information and implementation, it can guide a selection among scanned sources rather than replace scanning. This distinction keeps a successful QR parse from being treated as proof of transport synchronization.
Consider an original access-distribution case: one publicly visible sign contains the same correct code for every reader. Those readers have equivalent access to that disclosed value. No per-person authorization scheme follows merely from encrypting the broadcast. This is a logical limitation of the chosen distribution policy, not a cryptographic attack or a universal privacy assessment. Static media also cannot track a changing advertised value automatically, a limitation BAU discusses. [6] Identity checks, code distribution and synchronization are separate design questions; the article does not infer authenticated venue identity from a familiar name or printed symbol.
The same two streams can have different numeric masks
Technical interfaces sometimes represent selected streams as checked positions in a number. The position is worth checking. In BASS's request field, position zero corresponds to stream 1. In the retrieved Zephyr broadcast-sink API, the bit position uses the stream index itself, so stream 1 uses position one. [2][7] These are two descriptions at different interfaces. A number copied unchanged can therefore describe a different selection or be invalid at the other interface. The stream labels have stayed the same; the numbering convention has changed.
For our selected streams 1 and 3, BASS uses positions zero and two, with values 1 and 4: the result is 5. Zephyr's API uses positions one and three, with values 2 and 8: the result is 10. Both can represent the same intended pair when used in their proper interface. For BASS, this example concerns presentation A's subgroup; presentation B is not requested. These are original arithmetic checks, not commands to paste into a device. A larger mask does not mean more streams, higher sound quality or more listeners. It may simply mean a different encoding.
BASS Table 3.5 maps bits 0 through 30 of each subgroup's BIS_Sync request field to BIS indices 1 through 31. The retrieved Zephyr bt_bap_broadcast_sink_sync interface instead documents an indexes_bitfield using the BIS index as the bit position. [2][7] Do not assume that the application API's numeric mask is the wire representation of the BASS field. These interfaces encode a selection at different boundaries, and their indexing conventions are explicitly different.
For our Q = {1, 3}, the BASS request for subgroup A is 2^0 + 2^2 = 5, or binary 0101. Subgroup B is not requested and has zero. The Zephyr API representation is 2^1 + 2^3 = 10, or binary 1010. Both selected masks have two set bits. A translation preserves the selected indices, not the raw integer. The example deliberately uses ordinary explicit selections; it does not reinterpret special all-ones field values, supply a complete BASS command or establish runtime capability. Zephyr also requires multiple stream objects when multiple BISes are selected. [7]
Discovery policy is different from support for a feature
The Zephyr assistant sample makes a useful distinction visible. Its retrieved documentation describes selecting the first discovered sink and then the first discovered source by default, with optional name filters. [4] That is the policy of a demonstration application. It does not establish that the first broadcast is the one a person intended. In our room example, two visible sources could both be valid but carry different content. A correct implementation of a first-found rule can still make the wrong choice for a listener's purpose.
Capability is another question. Zephyr's sink sample documents an extra ISO-feature configuration for a named controller and board family. [5] The point is not that every reader should apply that setting; it is that a general radio label does not describe the complete receiving arrangement. Ask about broadcast reception and the supported joining method for the actual device and software. A codec feature, an assistant function and a broadcast sink are different capabilities. Evidence for one should not quietly become evidence for all three. Our earlier codec article covers the separate question of changing playback paths when a microphone opens.
Selection policy can be evaluated independently of protocol validity. In the retrieved Zephyr assistant sample, the default procedure chooses the first suitable discovered sink and then the first discovered broadcast source, with optional name filtering. [4] A conforming discovery result can therefore feed a policy that does not encode the listener's intended programme. Our two-source room case requires no protocol failure: both advertisements can be valid while first-found ordering selects the undesired content.
Implementation capability is likewise narrower than a marketing label. The retrieved sink sample documents a specific ISO configuration requirement for its nrf52-series/Zephyr-controller case. [5] This is a scoped illustration of stack and controller requirements, not a setup prescription for arbitrary headphones. The Zephyr pages are mutable latest documentation captured at retrieval, rather than an assertion about every release. Record whether the actual product supports the needed broadcast role, selection method and audio configuration. Codec support alone does not establish an implemented assistant, sink or complete user-facing join path.
A report belongs to a device and a moment
Consider three more invented observations. Receiver A reports the whole selected set from a known open broadcast, but its output is muted. Receiver B follows an encrypted broadcast and reports that a code is required. Receiver C was receiving the selected pair earlier but now reports only stream 1. Calling all three cases 'connected but silent' discards the information needed to tell them apart. A needs an output check in our stated scenario; B has an unresolved code condition; C has lost part of the previously observed set.
BASS includes updates for losing synchronization to a stream. [2] An old successful report is therefore not a promise about the next minute. The device matters too: the phone's discovery observation belongs to the phone, while the headphone's reception report belongs to the headphones. Do not replace one with the other merely because they are nearby. For a useful support record, keep the observation time, reporting device, selected presentation and reported state together. That small amount of context stops a stale or misplaced success indicator from obscuring the current problem.
Model three independent diagnostic fixtures without assigning probabilities. A has the full requested set and known unencrypted audio, but a stipulated muted output. B has an unresolved code-required state for encrypted content. C previously had Q = {1, 3} and now reports R = {1}. The predicates differ: output enabled is false in A, usable access material remains unresolved in B, and current requested-set fulfillment is false in C. These are distinct explanations under the stated facts, not a ranking of common failures.
BASS defines receive-state changes when BIS synchronization is lost. [2] Treat a state report as timestamped evidence, not a permanent certificate. Also retain its observer: assistant discovery and sink reception are observations at different devices. Physical proximity does not make their records interchangeable. A diagnostic note should therefore bind source selection, desired presentation, reported streams, encryption knowledge and output observation to the relevant device and time. This preserves enough structure to ask a precise next question without inventing a universal reception radius, timeout or product-specific recovery procedure.
Keep a short record of what each stage established
A useful investigation starts with the listener's intention: which broadcast and which presentation? Next record who discovered it, whether the receiver was asked to join, and what reception evidence is actually available. If a code is involved, record its status rather than exposing the code in a screenshot or support note. Finally, distinguish received content from audible output. The standards and implementation examples support these separate questions, but they do not require every consumer interface to display the same internal detail. [1][2][7] Unknown is a more accurate entry than an assumed success.
That record changes the next conversation. 'The phone lists Room A; the receiver reports only stream 1 of the requested pair' points to a different boundary from 'the receiver reports the pair and the output is muted.' A QR scan, a familiar name and a successful control request each provide useful evidence when kept in their proper place. None needs to be dismissed, and none needs to stand in for the whole experience. Follow the evidence from intended selection to actual reception and output, preserving what remains uncertain at each step.
Use a compact evidence record with separate fields for intended source and presentation, discovering device, requested receiver state, observed stream membership, encryption knowledge and output observation. BAP, BASS and the selected Zephyr interface expose different parts of that chain. [1][2][7] Preserve unknown values instead of turning absent telemetry into false certainty. In particular, do not collapse requested and reported membership, raw zero and known unencrypted, or an API mask and a BASS wire mask.
The resulting diagnosis is a statement about an interface boundary. Missing BIS 3 from Q = {1, 3} identifies an incomplete selected transport set. A complete set with a stipulated muted output identifies a later condition. A visible source without a receiver report establishes only the earlier discovery observation. These conclusions follow from the original fixtures and their declared assumptions; they are not measured reliability results. The method remains useful when a consumer product exposes fewer details, because it distinguishes what its interface actually tells you from what would still need to be checked.
Sources & further reading
Explore the references behind this guide. External pages may change after our review.
- Basic Audio ProfileBluetooth SIG · Accessed 7 Nov 2026
- Broadcast Audio Scan ServiceBluetooth SIG · Accessed 7 Nov 2026
- Explained: How to join an Auracast™ broadcast | Bluetooth® Technology WebsiteBluetooth SIG · Accessed 7 Nov 2026
- Basic Audio Profile (BAP) Broadcast Audio Assistant — Zephyr Project DocumentationZephyr Project · Accessed 7 Nov 2026
- Basic Audio Profile (BAP) Broadcast Audio Sink — Zephyr Project DocumentationZephyr Project · Accessed 7 Nov 2026
- Broadcast Audio Uniform Resource IdentifierBluetooth SIG · Accessed 7 Nov 2026
- Zephyr API Documentation: BAP Broadcast Sink APIsZephyr Project · Accessed 7 Nov 2026
Article updated 7 Nov 2026.
Found something we should revisit?
Good explanations get better with thoughtful feedback.