openblade-core revision 7b21152. The code and production fixtures are the source of truth. Raw captures and local validation files are private.Feature-report envelope
| Offset | Meaning | Validation |
|---|---|---|
| 0 | Status: request 00, successful response 02. | Reject every non-success response status. |
| 1 | Transaction identifier. | Response must match the request transaction. |
| 5 | Payload length, maximum 80 bytes. | Validate bounds and exact command-specific length. |
| 6–7 | Command class and command ID. | Both must match the request. |
| 8–87 | Payload and zero-filled remainder. | Apply a command-specific payload decoder. |
| 88 | XOR checksum of bytes 2–87. | Reject a checksum mismatch. |
| 89 | Reserved trailing byte. | The protocol report remains exactly 90 bytes; Windows feature I/O includes its report ID separately. |
Read-only queries
| Feature | Class/ID | Request payload | Decoded response |
|---|---|---|---|
| Thermal state, channels 1/2 | 0D/82 | 01 CC 00 00 | Recognized automatic or manual state; both channel responses must agree. |
| Fan RPM, selectors 1/2 | 0D/88 | 01 SS 00 | 01 SS RR, RPM = RR × 100. |
| Custom CPU/GPU level | 0D/87 | 01 DD 00 | 01 DD LL, where the recognized level is Low, Medium, or High. |
| Battery protection/limit | 07/92 | 00 | 50 off; B2/B7/BC/C1/C6/CB/D0 for 50–80%. |
| Temporary full charge | 07/8F | 00 | 00 inactive; 04 active. Other one-byte values are rejected. |
| Adapter class | 07/8C | 00 00 | 07 11 USB-C 100 W; 11 11 full-power 280 W. |
| Keyboard brightness | 03/83 | 01 05 00 | 01 05 BB, raw brightness 0–255. |
| Logo state/effect | 03/80, 03/82 | 01 04 00 | 01 04 VV; state is disabled/enabled and effect is Static/Breathing. |
| MCU version | 00/87 | 00 00 00 00 | Four numeric version components. |
| Startup animation | 0F/98 | 00 | 00 enabled; 01 disabled. |
| Function-key primary mode | 02/86 | 01 00 | 01 00 function keys; 01 01 multimedia. |
| Gaming mode | 00/88 | 00 00 00 00 | 00 00 00 00 off; 01 00 00 00 on. |
CC is the channel, SS is the fan selector, DD is the performance domain, LL is the level, BB is a brightness byte, and VV is a command-specific value.
Admitted setters
| Family | Class/ID | Sanitized request shape | Accepted response payload | Admission notes |
|---|---|---|---|---|
| Battery limit | 07/12 | One value: B2, B7, BC, C1, C6, CB, or D0. | Same one-byte value. | Exact readback through 07/92. |
| Battery protection off | 07/12 | 50 | 50 | Exact readback through 07/92. |
| Temporary full charge | 07/0F | 04 enable; 00 cancel. | Same one-byte value. | Read through 07/8F; unplug restoration policy is enforced separately. |
| Performance, channels 1/2 | 0D/02 | 01 CC MM 00; admitted modes include Balanced, Silent, Performance, Battery Saver, Battery Balanced, and Custom. | Same four-byte channel payload. | Both thermal channels must return the same recognized state. |
| Custom CPU/GPU level | 0D/07 | 01 DD LL; domain and level are typed and constrained. | Same three-byte domain payload. | Read back each domain; CPU High + GPU High is rejected. |
| Manual fan state | 0D/02 | 01 CC 00 01 on both channels. | Same four-byte channel payload. | Firmware exposes only a generic manual state. |
| Fan target | 0D/01 | 01 CC RR; RPM is RR × 100, bounded 2,000–5,400. | Same three-byte channel payload. | Generic manual-state readback plus safe telemetry; subtype is retained by OpenBlade. |
| Keyboard brightness | 03/03 | 01 05 BB. | Same three-byte payload. | Exact readback through 03/83. |
| Keyboard matrix frame | 03/0B | Typed 102-slot matrix in a dedicated 375-byte feature report. | Validated status, transaction, class, ID, length, and checksum envelope. | Renderer ownership is required; animated effects require continuous frames. |
| Logo effect/state | 03/02, 03/00 | 01 04 VV for persistent logo LED 4. | Same three-byte state or effect payload. | Read back state and effect independently. |
| Startup animation | 0F/18 | 00 00 on; 00 01 off. | Same two-byte payload. | Catalogued as an explicit one-shot action; a separate 0F/98 getter is admitted. |
| Function-key primary mode | 02/06 | 01 00 function; 01 01 multimedia. | Same two-byte payload. | Catalogued as an explicit one-shot action; a separate 02/86 getter is admitted. |
| Gaming mode | 00/08 | 01 00 00 00 on; zeros off. | 32 0A 00 00 for both admitted actions. | Catalogued as an explicit one-shot action; a separate 00/88 getter is admitted. |
Lighting effects
Supported effects are Off, Static, Spectrum Cycling, Breathing, Reactive, Ripple, Tidal, Starlight, Wave, Wheel, and Ambient Awareness. OpenBlade converts each effect into validated matrix frames. It does not expose raw frames through IPC. Animated effects run in the service.
Admission meaning
Admitted means a command has reviewed evidence and code checks for this exact model and firmware. It does not make the command safe for other models or firmware versions.
Normal setters require capture, decoding, application, readback, and restoration. One-shot actions must record their response, declare oneShotOnly, and pass restoration even when direct readback is unavailable.
Core evidence map
| Published fact | Tracked core evidence |
|---|---|
| Exact target and HID interfaces | TargetBladeDevice.cs |
| 90-byte report envelope and response validation | RazerReport.cs |
| Battery, performance, fan, and one-shot setters | Rz09_0581_02e0_3_01_BatteryProduction.json, DeviceCommandCatalog.cs |
| Read-only query availability | Typed *Protocol.cs decoders and ProductionBatteryReadEvidence.cs |
| Keyboard matrix protocol and effects | Rz09_0581_02e0_3_01_LightingProduction.json, Pid02E0MatrixReport.cs, ProductionLightingEvidence.cs |