feat(coolermaster): add MM711 driver and protocol codec - #153
Merged
snekxs merged 5 commits intoOct 3, 2026
Merged
Conversation
Xander-Coetzee
marked this pull request as ready for review
October 2, 2026 11:57
snekxs
force-pushed
the
feat/coolermaster-mm711
branch
from
October 3, 2026 07:08
efd2f64 to
9195594
Compare
- Protocol codec for Cooler Master MM711 (handshake, DPI, polling, LOD, debounce, angle snapping, angle tuning) - Hardware captures and fixture test cases - CoolerMasterHidClient implementing WebHID driver interface - Driver registry and vendor filter registrations - Comprehensive unit and mock integration test suites
Reverse-engineered lighting protocol from Cooler Master MasterPlus+ DLLs/PDBs (CMUOT, ParseSdk): - Add subcommands: effect mode (0x28), general effect (0x2B), custom zone effect (0xA8) - Support 2 lighting zones: 'Scroll wheel' (LED 0) and 'Logo' (LED 1) - Support 5 lighting modes: Static (per-zone custom RGB), Breathing single, Breathing random, Cycling, and Off - Add 5-level discrete speed tables for Breathing and Color Cycling - Implement readLighting() and setLighting() in CoolerMasterHidClient - Add unit tests for lighting codec functions and driver setLighting/readStatus
snekxs
force-pushed
the
feat/coolermaster-mm711
branch
from
October 3, 2026 07:22
9195594 to
4285e5c
Compare
|
🎉 This PR is included in version 0.23.0 🎉 The release is available on: Your semantic-release bot 📦🚀 |
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.
Device
0x2516:0x0101(wired USB)usagePage 0xFF00, usage 0x0001(InterfaceMI_01)0x00, 64 bytes data payload (sendReport(0, ...))0x00+ 64 bytes) delivered tooninputreporteventWhat this adds
src/coolermaster/index.ts- pure codec: wire layouts, constants, handshake encoder, active DPI stage decoder, performance block encoder/decoder (7 DPI presets, LOD, angle snapping, angle tuning), polling rate encoder/decoder, button debounce encoder/decoder, and dual-zone RGB lighting encoders/decoders (effect mode, general effect parameters, and per-zone custom RGB).src/drivers/coolermaster/hid.ts-CoolerMasterHidClient: implementsSupportedClientwith discovery of the0xFF00:0x0001control collection, timeout-protected command/response matching, a serialized async queue, performance settings round-trips, and fullreadLighting()/setLighting()support for two addressable zones ("Scroll wheel" and "Logo").src/drivers/vendors.tsandsrc/drivers/registry.ts, exported as./coolermastersubpath inpackage.jsonandtsconfig.json.src/coolermaster/index.test.tsandsrc/drivers/coolermaster/hid.test.ts: verified against captured hardware fixtures, mock report dispatch, parameter boundary assertions, lighting mode / custom color assertions, and driver registry resolution.captures/coolermaster-mm711/README.md.Features supported
0x51 0xA8+ mode0xB0).60, 55, 49, 44, 38) and brightness.50, 45, 40, 35, 30) and brightness.0xFE).Evidence & Protocol Discovery
captures/coolermaster-mm711/) using Wireshark + USBPcap while changing settings in Cooler Master MasterPlus (v1.9.4).CMUOT.dll,ParseSdk.dll):0x28: Active effect mode query & write0x2B: General effect parameters (speed, brightness, random flag, color)0xA8: Custom per-zone RGB colors0x2516:0x0101.Verified on hardware
readStatus()and settings round-trips verified on physical Cooler Master MM711:0x51writes back via interrupt-INSafety
setDpi,setPollingRate,setDebounceTime,setLiftOffDistance,setLighting, etc.) validate parameter bounds before building packets.Companion PR
OpenMouse-Project/openmouse#481