mirror of
https://github.com/google/bumble.git
synced 2026-06-05 08:17:02 +00:00
17a202bc13
This change implements a complete Bulk-only transport for LE Audio ISO
data (CIS/BIS) on USB controllers (like Intel BE200 and ASUSTek) that
send/expect ISO data over Bulk endpoints. It also improves the stability
and compatibility of periodic advertising sync on newer controllers.
Key Changes:
1. Host Layer Workaround (Bulk In):
- Intercepts ACL packets using CIS/BIS handles on Bulk In.
- Adaptively reconstructs them into HCI ISO Data packets:
* For CIS (Unicast): Dynamically determines if the receiver controller
includes a Timestamp in the ACL-wrapped payload (Intel does not,
Realtek does) by checking the controller's company_identifier.
It then correctly reconstructs either a 4-byte (TS_Flag = 0) or
8-byte (TS_Flag = 1) ISO header.
* For BIS (Broadcast): Reconstructs an 8-byte ISO header (TS_Flag = 1)
as BIS packets always include the Timestamp.
This vendor-adaptive approach dynamically supports both Unicast and
Broadcast ISO across different controller hardware (Intel & Realtek) in
all transmitter/receiver roles.
- Cleans up the learned TS flags from memory when the link is disconnected.
2. USB Transport Layer (Bulk Out):
- Adds support for sending HCI ISO Data packets over the default
Bulk Out endpoint when Isochronous endpoints are not enabled.
3. LE Periodic Sync V2 Event Support:
- Enables `HCI_LE_PERIODIC_ADVERTISING_SYNC_ESTABLISHED_V2_EVENT` in
the LE event mask and implements its handler in Host. This supports
periodic sync on BT 5.4 controllers (like Intel BE200) that use the
V2 event.
This enables seamless LE Audio Broadcast/Unicast ISO receipt and
transmission on standard USB Bluetooth controllers without requiring
alternate interface activation (+sco is not needed).
TAG=agy
CONV=8b9a01f7-32cb-4a83-9300-23c4b688d861