Branch: refs/heads/969627 Home: https://github.com/bluez/bluez Commit: 4ca7454a5df1d01c7b097fc77c56c1f95f316677 https://github.com/bluez/bluez/commit/4ca7454a5df1d01c7b097fc77c56c1f95f316677 Author: Pauli Virtanen <pav@xxxxxx> Date: 2025-06-08 (Sun, 08 Jun 2025) Changed paths: M profiles/audio/bap.c Log Message: ----------- bap: do not try QoS before links are updated & io created In setup config, QoS must be done after corresponding bap_state callback, because stream links are updated only at that point. If the ASE was in CONFIG state before reconfiguration, this gets done in wrong order. Track explicitly that bap_state() is done after bt_bap_stream_config(), before proceeding to QoS. Commit: 679156e0b2a08ba2d05e8026998adfa330ad77bf https://github.com/bluez/bluez/commit/679156e0b2a08ba2d05e8026998adfa330ad77bf Author: Pauli Virtanen <pav@xxxxxx> Date: 2025-06-08 (Sun, 08 Jun 2025) Changed paths: M src/shared/bap.c Log Message: ----------- shared/bap: detach ucast io on RELEASING and unlink streams When RELEASING, ucast stream QoS becomes invalid and client stream transport can no longer be acquired. Client shall close the CIS when ASE is RELEASING (BAP v1.0.2 §5.6.6). As client, detach IO when RELEASING. Clear the stream links, as the QoS is no longer valid. Even if caching config the ASE may be reused for different purpose, and stream will anyway be reconfigured & re-linked as needed. Also clear the stream transport, as it's not in acquirable state, and its configuration may change after this. This makes BAP Client to have existing transports only for streams that are >= QOS. (BAP Server is not changed here.) Commit: e8d4cf42a411b6bd84d3f5fd096f57155de7f42f https://github.com/bluez/bluez/commit/e8d4cf42a411b6bd84d3f5fd096f57155de7f42f Author: Pauli Virtanen <pav@xxxxxx> Date: 2025-06-08 (Sun, 08 Jun 2025) Changed paths: M src/shared/bap.c M src/shared/bap.h Log Message: ----------- shared/bap: add client ASE reuse and upper level stream locking Change ucast client stream design so that: * upper level locks streams to indicate which ones it is using * unused streams are reused when upper level wants a new stream * only locked streams are used for bidi CIS linking * streams (still) correspond 1-to-1 to non-idle ASEs This fixes some issues: * bap_ucast_stream_new() could pick a stream upper level is already using if lpac & rpac match (can occur with multi-stream AC 6(ii) etc) * Avoids assuming ASE enters idle state at end of stream life cycle. This is False for some devices like Sony headsets, which always cache codec config so RELEASING -> CONFIG always, never RELEASING -> IDLE, so ASE never go IDLE again. * Allows reconfiguring an ASE with different codec in this case. * Allows upper level to only QoS some of the streams. Reconfiguring ASE in QOS/CONFIG state with different codec here results to need_reconfig=true state, where ASE and stream configs do not match, and upper level needs to do bt_bap_stream_config() to sync them. Commit: 40ff600532d153a2f01b7dab2ca30379b5f5fcae https://github.com/bluez/bluez/commit/40ff600532d153a2f01b7dab2ca30379b5f5fcae Author: Pauli Virtanen <pav@xxxxxx> Date: 2025-06-08 (Sun, 08 Jun 2025) Changed paths: M profiles/audio/bap.c Log Message: ----------- bap: lock streams when used Indicate to lower layer when we are using the streams. When setup is freed, make sure the corresponding stream is released after unlocking. Commit: 371659f5ef9edfb509bc177e5391edd02c63c4c1 https://github.com/bluez/bluez/commit/371659f5ef9edfb509bc177e5391edd02c63c4c1 Author: Pauli Virtanen <pav@xxxxxx> Date: 2025-06-08 (Sun, 08 Jun 2025) Changed paths: M profiles/audio/bap.c Log Message: ----------- bap: add ready callback for setup configuration Operations like SetConfiguration need to wait until setup configuration finishes. Abstract this to a setup_config() callback emitted on QoS completion or failure, instead of hardcoding DBus reply. Commit: 3e3ee481f96f765c0f9828366579e3f4440bfc7b https://github.com/bluez/bluez/commit/3e3ee481f96f765c0f9828366579e3f4440bfc7b Author: Pauli Virtanen <pav@xxxxxx> Date: 2025-06-08 (Sun, 08 Jun 2025) Changed paths: M profiles/audio/bap.c M profiles/audio/transport.c M profiles/audio/transport.h Log Message: ----------- bap: support removing streams with ClearConfiguration() Implement removing streams via ClearConfiguration(). Commit: f566fa2261d4938c4adb7bd383355c680e7964e0 https://github.com/bluez/bluez/commit/f566fa2261d4938c4adb7bd383355c680e7964e0 Author: Pauli Virtanen <pav@xxxxxx> Date: 2025-06-08 (Sun, 08 Jun 2025) Changed paths: M profiles/audio/bap.c Log Message: ----------- bap: add callback at the end of ucast client select/config Restructure pac_select() and add a callback that is called when all setups reach QoS. Commit: 9d67a1638c40db3a8775ed075e7d2653bd19f9c0 https://github.com/bluez/bluez/commit/9d67a1638c40db3a8775ed075e7d2653bd19f9c0 Author: Pauli Virtanen <pav@xxxxxx> Date: 2025-06-08 (Sun, 08 Jun 2025) Changed paths: M profiles/audio/bap.c Log Message: ----------- bap: implement Reconfigure() Add Reconfigure() on a BAP unicast endpoint, which triggers its reconfiguration or marks it for reconfiguration. First, all associated streams are closed. After that, endpoints marked for reconfiguration are reconfigured using the same flow as in the initial configuration. Commit: e06f50230431cb256a845059fcd297dea95153ce https://github.com/bluez/bluez/commit/e06f50230431cb256a845059fcd297dea95153ce Author: Pauli Virtanen <pav@xxxxxx> Date: 2025-06-08 (Sun, 08 Jun 2025) Changed paths: M profiles/audio/transport.c Log Message: ----------- bap: don't show error when releasing stream When stream is released, just set transport to not playing and don't show error about missing io. Commit: 88da2514b7d1628c66b025f5cbe783a65e9bfa3d https://github.com/bluez/bluez/commit/88da2514b7d1628c66b025f5cbe783a65e9bfa3d Author: Pauli Virtanen <pav@xxxxxx> Date: 2025-06-08 (Sun, 08 Jun 2025) Changed paths: M profiles/audio/bap.c Log Message: ----------- bap: delay QoS & IO creation if CIG is busy or setups configuring Unicast Client IO creation / activation should be done synchronously for whole adapter, as active CIG has to be removed before it can be reconfigured (Core v6.0 Sec 4.5.14.3). Some adapters support only one active CIG. Move related logic to bap_update_cig*() which does QoS and IO creation as needed by current state. If CIG is active or setups are being configured or closed, delay transitions to QoS and IO recreation until that completes. Also delay activating CIG (= enabling CIS) until setups have finished readying or closing. Operations are delayed within the same CIG, with the exception that streams with unassigned CIG delay every CIG. This is because such streams are likely meant to go to some existing CIG, so we must wait them to be configurable before asking kernel to assign IDs. Fixes race conditions: * setup starts readying while CIG is active * CIG is activated while a setup is readying * new stream creates IO before old stream IO is recreated These result to kernel assigning new streams to a different CIG (problematic on controllers that can do only one) or CIS ID conflicts. Compare: https://github.com/bluez/bluez/compare/4ca7454a5df1%5E...88da2514b7d1 To unsubscribe from these emails, change your notification settings at https://github.com/bluez/bluez/settings/notifications