android: make AACP reconnect sessions control-safe#691
Open
beeemT wants to merge 5 commits into
Open
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This PR addresses the Android AACP control-connection lifecycle behind the AirPods Pro 3 press-and-hold failure reported in #690 and the related service-restart issue in #571.
It:
The protocol notes explain why this matters: stem configuration is accessory state and must be overwritten when the AirPods connect to a new device (Configure Stem Long Press).
Root-cause model
The failure is consistent with overlapping AACP initialization/readers racing socket replacement. In that state, telemetry and direct listening-mode writes can continue working while the AirPods' physical stem configuration is stale or missing. The Android
BLUETOOTH_PRIVILEGEDwarnings are not treated as the cause; the normal AACP socket and control path remain usable without root.Validation
01,02, and03after reconnects.Representative logs include:
Scope and limitations
Related