From: Luiz Augusto von Dentz <luiz.dentz@gmail.com>
To: linux-bluetooth@vger.kernel.org
Subject: [PATCH BlueZ v1 00/11] Cover a BAP stream to a coordinated set
Date: Tue, 15 Sep 2026 17:15:17 -0400 [thread overview]
Message-ID: <20260915211528.1223784-1-luiz.dentz@gmail.com> (raw)
From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
These add the functional test cases for a BAP unicast stereo stream to
a coordinated set of two acceptors, one taking the left channel and one
the right, which is what a pair of earbuds does, together with the
fixes they turned out to need.
Covering a set takes three hosts talking to each other, which the
emulator does not get right: every device assigns its own connection
handles, but the events and the data delivered to the peer carried the
handle of the sender, so everything beyond the first link referred to a
handle the receiving side knows nothing about and was dropped. It is
invisible with two devices, as both sides then assign the same handles,
and it is what kept the second member of the set from exchanging
anything at all. A CIG was also limited to three CIS, one less than a
stereo stream to a set of two needs.
Encrypting the SIRK gave a value the initiator was unable to decrypt,
so the set was resolved under a SIRK that is not the one the members
were configured with: LE legacy pairing distributes one long term key
per role, and only the last one to arrive was kept, so the two sides
did not necessarily encrypt and decrypt with the same key.
The auto agent registers with no capability, which is KeyboardDisplay,
so a peer may well choose the entry of a passkey, a method the auto
agent has no answer for: the pairing then only completes once the
request times out, as a failure. A capability can now be given after
the name, e.g. auto:NoInputNoOutput, to pair Just Works instead.
The first two patches are a fix of their own, for a source pushed to a
BASS session before it is ready, and the rest of the test changes make
a failure easier to tell: a test now fails as soon as an operation
does, instead of waiting for its timeout, and reports what it is
waiting for while it waits.
The tests pass with "make check-functional", on their own as well as
alongside the others.
Luiz Augusto von Dentz (11):
shared/bass: add a ready callback
bass: wait for the session to be ready before pushing a source
test: functional: report what a test is waiting for
test: functional: answer the notification registered by the victim
doc: describe the BAP coordinated set test cases
emulator: use the handle of the receiving side
emulator: allow the maximum number of CIS of a CIG
device: keep the long term key of both roles
client: allow a capability with the auto agent
test: functional: fail as soon as an operation fails
test: functional: add the BAP coordinated set tests
client/agent.c | 14 +-
client/main.c | 14 +-
client/scripts/bap-sink-lc3-left.bt | 30 ++++
client/scripts/bap-sink-lc3-right.bt | 30 ++++
doc/bluetoothctl.rst | 6 +-
doc/functional-bap.rst | 111 ++++++++++++
emulator/btdev.c | 89 +++++++---
profiles/audio/bass.c | 124 +++++++++++--
src/device.c | 45 +++--
src/shared/bass.c | 107 +++++++++++
src/shared/bass.h | 6 +
test/functional/conftest.py | 201 +++++++++++++++++++++
test/functional/test_avrcp.py | 13 ++
test/functional/test_bap.py | 256 ++++++++++++++++++++++++++-
14 files changed, 987 insertions(+), 59 deletions(-)
create mode 100644 client/scripts/bap-sink-lc3-left.bt
create mode 100644 client/scripts/bap-sink-lc3-right.bt
--
2.55.0
next reply other threads:[~2026-09-15 21:15 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-15 21:15 Luiz Augusto von Dentz [this message]
2026-09-15 21:15 ` [PATCH BlueZ v1 01/11] shared/bass: add a ready callback Luiz Augusto von Dentz
2026-09-15 21:58 ` Cover a BAP stream to a coordinated set bluez.test.bot
2026-09-16 0:55 ` bluez.test.bot
2026-09-15 21:15 ` [PATCH BlueZ v1 02/11] bass: wait for the session to be ready before pushing a source Luiz Augusto von Dentz
2026-09-15 21:15 ` [PATCH BlueZ v1 03/11] test: functional: report what a test is waiting for Luiz Augusto von Dentz
2026-09-15 21:15 ` [PATCH BlueZ v1 04/11] test: functional: answer the notification registered by the victim Luiz Augusto von Dentz
2026-09-15 21:15 ` [PATCH BlueZ v1 05/11] doc: describe the BAP coordinated set test cases Luiz Augusto von Dentz
2026-09-15 21:15 ` [PATCH BlueZ v1 06/11] emulator: use the handle of the receiving side Luiz Augusto von Dentz
2026-09-15 21:15 ` [PATCH BlueZ v1 07/11] emulator: allow the maximum number of CIS of a CIG Luiz Augusto von Dentz
2026-09-15 21:15 ` [PATCH BlueZ v1 08/11] device: keep the long term key of both roles Luiz Augusto von Dentz
2026-09-15 21:15 ` [PATCH BlueZ v1 09/11] client: allow a capability with the auto agent Luiz Augusto von Dentz
2026-09-15 21:15 ` [PATCH BlueZ v1 10/11] test: functional: fail as soon as an operation fails Luiz Augusto von Dentz
2026-09-15 21:15 ` [PATCH BlueZ v1 11/11] test: functional: add the BAP coordinated set tests Luiz Augusto von Dentz
2026-09-16 18:30 ` [PATCH BlueZ v1 00/11] Cover a BAP stream to a coordinated set patchwork-bot+bluetooth
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260915211528.1223784-1-luiz.dentz@gmail.com \
--to=luiz.dentz@gmail.com \
--cc=linux-bluetooth@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox