Repository navigation
Conversation
Map product ID 0x202D to the existing AirPods Max (USB-C) model so AirPods Max 2 can be bound. Closes SpriteOvO#251.
cbittle
marked this pull request as ready for review
October 15, 2026 04:57
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.
Adds support for AirPods Max 2 (product ID
0x202D), which @hari-bhandari tracked down in #251. It maps to the existingAirPods_Max_USB_Cmodel since the hardware is otherwise the same. Happy to split it into its own model if you'd prefer.Tested on Windows 11 with a Max 2: binding now finds them and battery displays correctly. Build and ctest (12/12) pass.
Separately, automatic ear detection doesn't seem to work for any AirPods Max 2 (and i suspect the AirPods Max with the same hardware?). The on-head state is reported correctly, but because the Max only advertises as one side,
right.isInEaris always false, so play/pause never triggers. I can open a separate PR for that if it's worth fixing.Closes #251