Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
55 changes: 55 additions & 0 deletions captures/coolermaster-mm711/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
# Cooler Master MM711 captures

Hardware reference material for the Cooler Master MM711 wired gaming mouse in
`src/coolermaster/` and `src/drivers/coolermaster/`.

Captured directly from a physical Cooler Master MM711 on Windows (hidraw / Win32 HID handle)
on 2026-10-02:
- Vendor ID: `0x2516` (Cooler Master Technology Inc.)
- Product ID: `0x0101` (MasterMouse MM711)
- Interface: `MI_01` (Usage Page `0xFF00`, Usage `0x0001`)
- Report ID: `0x00`
- Report Length: 65 bytes (1 byte Report ID `0x00` + 64-byte payload)

## Files

| File | What it is |
|---|---|
| `handshake.hex` | Init / wakeup sequence `0x41 0x80` and the device's echo reply. |
| `get-dpi-level.hex` | Read active DPI stage mapping (`0x52 0x9B`), stage order and active slot. |
| `get-performance.hex` | Read performance block (`0x52 0x40`), returning 7 DPI presets for X and Y, angle snapping, lift-off distance, angle tuning, and sensor threshold parameters. |
| `get-polling.hex` | Read polling rate (`0x52 0xF0`), returning `0x01` (1000 Hz). |
| `get-debounce.hex` | Read button response / debounce time (`0x52 0x10`), returning `0x05` (5 ms). |
| `set-polling.hex` | Write polling rate command (`0x51 0xF0`) and read confirmation echo. |

## Protocol Summary

- **Handshake / Wakeup**: `0x41, 0x80`
- **Read Prefix**: `0x52` ('R')
- `0x52, 0x40`: Performance / DPI table
- `0x52, 0x9B`: Active DPI level
- `0x52, 0xF0`: Polling rate
- `0x52, 0x10`: Button response time (debounce)
- **Write Prefix**: `0x51` ('Q')
- `0x51, 0x40`: Performance / DPI settings
- `0x51, 0x9B`: Active DPI level table
- `0x51, 0xF0`: Polling rate
- `0x51, 0x10`: Button response time (debounce)
- **DPI Encoding**:
- `DPI = (raw_byte + 1) * 100` (from 100 to 16,000 DPI in 100 DPI steps)
- Raw value for 400 DPI = `0x03`, 800 DPI = `0x07`, 1200 DPI = `0x0B`, 1600 DPI = `0x0F`, 3200 DPI = `0x1F`, 6400 DPI = `0x3F`, 16000 DPI = `0x9F`
- **Polling Rate Codes**:
- `1` = 1000 Hz (1 ms)
- `2` = 500 Hz (2 ms)
- `4` = 250 Hz (4 ms)
- `8` = 125 Hz (8 ms)
- **Lift-off Distance (LOD)**:
- `0` (bit mask `(byte & 6) != 6`) = Low LOD (~2 mm)
- `1` (bit mask `(byte & 6) == 6`) = High LOD (~3 mm)
- **Angle Snapping**:
- `0` = Disabled
- `1` = Enabled
- **Angle Tuning**:
- Signed byte in degrees (-30 to +30)
- **Debounce Time**:
- Integer in milliseconds (e.g. 4 ms to 32 ms)
5 changes: 5 additions & 0 deletions captures/coolermaster-mm711/get-debounce.hex
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# Cooler Master MM711 Get Debounce (Button Response Time)
# Out: 0x52, 0x10
52100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
# In: Debounce = 5 ms (byte 13 = 0x05)
52100000000000000000000000050000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
5 changes: 5 additions & 0 deletions captures/coolermaster-mm711/get-dpi-level.hex
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# Cooler Master MM711 Get DPI Level
# Out: 0x52, 0x9B
529b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
# In: Active level = 1 (stage 1 = 800 DPI), order: 01 03 02 04 05 06
529b0000000103020405060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
5 changes: 5 additions & 0 deletions captures/coolermaster-mm711/get-performance.hex
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# Cooler Master MM711 Get Performance
# Out: 0x52, 0x40
52400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
# In: 7 DPI stages (400, 800, 1600, 1200, 3200, 6400, 16000), LOD Low (0x02), Angle Snap Off (0x00)
52400000010303070f0b1f3f9f03070f0b1f3f9f0000000000000000020a06000000000000000000000000000000000000000000000000000000000000000000
5 changes: 5 additions & 0 deletions captures/coolermaster-mm711/get-polling.hex
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# Cooler Master MM711 Get Polling Rate
# Out: 0x52, 0xF0
52f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
# In: Polling rate = 1 (1000 Hz)
52f00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
5 changes: 5 additions & 0 deletions captures/coolermaster-mm711/handshake.hex
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# Cooler Master MM711 Handshake (64-byte payload)
# Out: 0x41, 0x80
41800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
# In: Echo 0x41, 0x80
41800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
5 changes: 5 additions & 0 deletions captures/coolermaster-mm711/set-polling.hex
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# Cooler Master MM711 Set Polling Rate
# Out: 0x51, 0xF0, 0x00, 0x00, 0x02 (Set to 500 Hz)
51f00000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
# In: Echo confirmation
51f00000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
4 changes: 4 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -204,6 +204,10 @@
"./fater": {
"types": "./dist/fater/index.d.ts",
"import": "./dist/fater/index.js"
},
"./coolermaster": {
"types": "./dist/coolermaster/index.d.ts",
"import": "./dist/coolermaster/index.js"
}
},
"scripts": {
Expand Down
Loading