Device: Disable Adaptive Audio Noise slider outside Adaptive mode#508
Merged
Device: Disable Adaptive Audio Noise slider outside Adaptive mode#508
Conversation
Switch the 0x4D init packet flags from 0x0E to 0xD7 to match the value captured from Apple's own stack (librepods AACPManager). The previous value traced to MagicPodsCore and matches no known Apple capture. Invert the Adaptive Audio Noise level on write and read: wire 0 means max noise reduction, wire 100 means transparency-like. UI stays in intuitive 100 = max NC semantics, matching librepods' slider behavior.
The encode/decode now flips UI 0..100 to wire 100..0. Update the clamp and decode expectations accordingly, and add a round-trip test to guard against asymmetric changes in either direction.
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.
What changed
The "Adaptive Audio Noise" slider in per-device settings (AirPods Pro 2 / Pro 3 / AirPods 4 with ANC) is now greyed out with a hint when the noise control mode isn't set to Adaptive. Previously the slider was always active, so changing it while in regular ANC, Transparency, or Off had no audible effect — making the control look broken.
Technical Context
AdaptiveAudioNoiseonly affects the device's passthrough blend whenAncMode.current == ADAPTIVE. The wire packet format is correct (matches librepods reverse-engineering docs) and the device accepts + echoes the level, but the firmware ignores it outside of Adaptive mode.ancMode.currentonly, notpendingAncMode.pendingAncModeis set when a mode is tapped while pods are out of ear (command queued, not sent) — the device hasn't actually switched, so a new noise level would still be a no-op. Gating on pending state would misleadingly imply the level applies.81.2675...6503) no audible difference has been observed between level=0 and level=100 even in Adaptive mode — the packet is accepted but may need additional protocol work (possible enable packet, or different interpretation than Pro 2). Left a comment onAapSetting.AdaptiveAudioNoisenoting this needs more investigation.