Routing
Target design: separate native groups and audio paths, with admission checks for controller and HAL capacity and explicit audio-focus policy.
- Separate media and communication destinations.
- Explicit microphone selection.
- Defined admission and fallback policy.
- Opt-in behaviour; coordinated earbud sets remain supported.
Scope: AOSP/custom ROM. Excludes stock-phone workarounds, Classic Bluetooth car kits and broadcast sharing.
Run the model
Python model of ASE transitions, group switching, admission, audio focus, volume and recovery. It does not render audio or access Bluetooth hardware.
20 tests and the demo pass on Python 3.10.5. Checked 21 September 2026.
cd icas-sim
python -m tests.test_ase
python -m tests.test_icas
python demo.py
The Linux/PipeWire prototype uses virtual sinks. Its setup, linking and test-tone scripts need fixes before use. LE Audio multi-CIS has not been tested.
Open issues
- Simulator. Microphone switching, resource accounting and recovery contain known state errors.
- Android. Concurrent groups, HAL ownership and call-focus behaviour remain unimplemented.
- Feasibility. G0 needs a native/HAL experiment before product policy work. Two simultaneous playback paths establish M1.
Hardware milestone
G0 and M1 are pending. Required setup: one named phone and two LE Audio sinks.
- Pin the phone, firmware, AOSP revision and sink models.
- Instrument group ownership, HAL sessions and CIS/CIG establishment.
- Render different tones on A and B for at least 30 seconds; repeat across ten connection cycles.
- Correlate recordings with routing and HCI traces. Then test VoIP, explicit microphone selection, cellular calls and recovery.