zxzxwu 17a202bc13 fix(usb): support LE ISO data over Bulk endpoints
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
2026-06-02 16:23:03 +08:00
2024-07-11 18:47:32 +00:00
2025-08-29 13:17:17 -07:00
2026-06-01 18:17:23 +02:00
2026-01-27 09:39:22 -08:00
2026-05-29 08:47:28 +02:00
2026-01-01 03:25:32 +08:00
2026-01-07 15:00:21 +11:00
2022-05-16 19:42:31 -07:00
2023-04-05 19:02:44 +00:00
2022-05-16 19:42:31 -07:00
2025-10-02 19:26:30 +00:00
2026-05-22 18:02:47 +02:00

 _                 _     _
| |               | |   | |
| |__  _   _ ____ | |__ | | _____
|  _ \| | | |    \|  _ \| || ___ |
| |_) ) |_| | | | | |_) ) || ____|
|____/|____/|_|_|_|____/ \_)_____)

Bluetooth Stack for Apps, Emulation, Test and Experimentation

Logo

Bumble is a full-featured Bluetooth stack written entirely in Python. It supports most of the common Bluetooth Low Energy (BLE) and Bluetooth Classic (BR/EDR) protocols and profiles, including GAP, L2CAP, ATT, GATT, SMP, SDP, RFCOMM, HFP, HID and A2DP. The stack can be used with physical radios via HCI over USB, UART, or the Linux VHCI, as well as virtual radios, including the virtual Bluetooth support of the Android emulator.

Documentation

Browse the pre-built Online Documentation, or see the documentation source under docs/mkdocs/src, or build the static HTML site from the markdown text with:

mkdocs build -f docs/mkdocs/mkdocs.yml

Usage

Getting Started

For a quick start to using Bumble, see the Getting Started guide.

Dependencies

To install package dependencies needed to run the bumble examples, execute the following commands:

python -m pip install --upgrade pip
python -m pip install ".[test,development,documentation]"

Examples

Refer to the Examples Documentation for details on the included example scripts and how to run them.

The complete list of Examples, and what they are designed to do is here.

There are also a set of Apps and Tools that show the utility of Bumble.

Using Bumble With a USB Dongle

Bumble is easiest to use with a dedicated USB dongle. This is because internal Bluetooth interfaces tend to be locked down by the operating system. You can use the usb_probe tool (all platforms) or lsusb (Linux or macOS) to list the available USB devices on your system.

See the USB Transport page for details on how to refer to USB devices. Also, if you are on a mac, see these instructions.

License

Licensed under the Apache 2.0 License.

Disclaimer

This is not an official Google product.

This library is in alpha and will be going through a lot of breaking changes. While releases will be stable enough for prototyping, experimentation and research, we do not recommend using it in any production environment yet. Expect bugs and sharp edges. Please help by trying it out, reporting bugs, and letting us know what you think!

S
Description
No description provided
Readme Multiple Licenses 36 MiB
Languages
Python 83.7%
Rust 8%
Java 4.6%
Kotlin 2.5%
JavaScript 0.7%
Other 0.4%