public inbox for linux-bluetooth@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH BlueZ v1] doc: Document bidirectional (Source+Sink) ASE flow in LE Audio
@ 2026-03-26 22:06 Luiz Augusto von Dentz
  2026-03-26 23:06 ` [BlueZ,v1] " bluez.test.bot
  2026-03-27 13:50 ` [PATCH BlueZ v1] " patchwork-bot+bluetooth
  0 siblings, 2 replies; 3+ messages in thread
From: Luiz Augusto von Dentz @ 2026-03-26 22:06 UTC (permalink / raw)
  To: linux-bluetooth

From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>

Add a subsection under ASCS explaining that multiple ASEs with
different directions (Source + Sink) on the same connection is the
standard bidirectional/conversational configuration.  Document the
direction indicators (Receiver Start Ready for Source ASEs only),
a typical setup sequence, and a note that this is normal behavior.

This provides LLM context so automated trace analysis does not
misinterpret bidirectional streams as an error.
---
 doc/btmon-le-audio.rst | 49 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 49 insertions(+)

diff --git a/doc/btmon-le-audio.rst b/doc/btmon-le-audio.rst
index db909ac38e47..50ee11879bb2 100644
--- a/doc/btmon-le-audio.rst
+++ b/doc/btmon-le-audio.rst
@@ -141,6 +141,55 @@ ASE Control Point commands:
      - Release
      - Tear down ASE (any → Releasing → Idle)
 
+Bidirectional Streams (Source + Sink)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+A device may expose multiple ASEs with different directions. In the
+conversational (telephony) use case, the remote device typically has at
+least one **Sink** ASE (receives audio, e.g., speaker) and one
+**Source** ASE (sends audio, e.g., microphone). Both ASEs share the
+same CIG and often the same CIS, using the bidirectional capability of
+Connected Isochronous Streams.
+
+**Direction indicators in btmon traces:**
+
+- The ``Receiver Start Ready`` command is only sent for **Source**
+  ASEs (ASEs that send audio toward the local device). The server
+  issues this command to indicate it is ready to transmit.
+- The ``Receiver Stop Ready`` command likewise applies to Source ASEs.
+- **Sink** ASEs transition directly from Enabling to Streaming
+  without ``Receiver Start Ready``.
+
+**Typical bidirectional setup sequence** (two ASEs on one CIS)::
+
+    Config Codec  ASE ID=1 (Sink)    → Codec Configured
+    Config Codec  ASE ID=3 (Source)  → Codec Configured
+    Config QoS    ASE ID=1           → QoS Configured (CIG=X, CIS=Y)
+    Config QoS    ASE ID=3           → QoS Configured (CIG=X, CIS=Y)
+    Enable        ASE ID=1           → Enabling → Streaming (immediate)
+    Enable        ASE ID=3           → Enabling
+    CIS Established (Success)
+    Setup ISO Data Path  Input  (Host→Controller, for Sink)
+    Setup ISO Data Path  Output (Controller→Host, for Source)
+    Receiver Start Ready ASE ID=3   → Streaming
+
+Both ASEs may reach Streaming at different times. The Sink ASE can
+start receiving audio as soon as CIS is established, while the Source
+ASE waits for the ``Receiver Start Ready`` handshake.
+
+.. note::
+
+   **This is normal behavior.** Seeing one Source ASE and one Sink
+   ASE on the same connection is the standard bidirectional
+   (conversational) configuration. It is **not** an error or
+   misconfiguration. Both directions sharing a single CIS is
+   efficient and expected.
+
+**Multiple ASEs per direction** are also valid. For example, a stereo
+headset may expose two Sink ASEs (left and right channels) and one
+Source ASE (mono microphone), each with its own GATT handle for ASE
+state notifications.
+
 CIS Setup and Teardown
 ------------------------
 
-- 
2.53.0


^ permalink raw reply related	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2026-03-27 13:50 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-03-26 22:06 [PATCH BlueZ v1] doc: Document bidirectional (Source+Sink) ASE flow in LE Audio Luiz Augusto von Dentz
2026-03-26 23:06 ` [BlueZ,v1] " bluez.test.bot
2026-03-27 13:50 ` [PATCH BlueZ v1] " patchwork-bot+bluetooth

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox