Repository navigation
feat: support the MCHOSE V9 Pro headset - #28
Merged
Merged
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.
What does this PR do?
Adds the MCHOSE V9 Pro wireless headset (2.4 GHz dongle
291D:385D) as a new HID brand. Closes #24.Sources/Mchose/MchoseProtocol.cswrites55 65 01on the vendor collectionFF90:0001(64-byte reports), which is the request the MCHOSE app sends. The dongle answers55 65with the level in byte 2 and the state in byte 3 within about 25 ms. It doesn't need the MCHOSE app to be running.0x02is on battery and shows the level, which moves in 10% steps.0x00(the query's answer while the cable is in) and0x03(the frame the dongle pushes while charging) both read as Charging with no percent, as on Rapoo and AULA. With the cable in, the level stays frozen at its value from when the cable went in, through to full, so showing it would be misleading. Charging and full can't be told apart.00 1Aframe the dongle pushes when the headset goes off throws instead of publishing 0%.55 11 02frame pushed when the headset connects is rejected.MchoseProtocolTestsparse the frames the owner captured: on battery, the cable states, off, and the connect frame. A new[Explicit]hardware test,Reads_the_raw_mchose_battery_report, prints the raw reply with a timestamp. That is what mapped the0x00cable state.291d:385dinpackaging/linux/70-device-battery-info.rules, plus its copy indocs/linux-setup.md.Checklist
dotnet buildanddotnet testpass locally (0 warnings, 321 tests).Device/hardware tested against (if applicable)
The headset's owner (@Don-AriOn) tested it in #24 on Windows with the V9 Pro and its dongle:
0x00, level frozen at 90, through to full); right after unplugging; and switched off (no answer, as expected).--on the cable, and "no signal" when the headset is off, recovering when it is switched back on.🤖 Generated with Claude Code