Skip to content

Latest commit

 

History

27 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RK M75

An open-source Python library for controlling RGB lighting on the Royal Kludge RK M75 without the official Windows software.

The project supports USB wired RGB and a hardware-validated 2.4 GHz wireless RGB implementation on the tested RK M75 hardware.

Final Status

USB Wired RGB

The wired RGB implementation is complete and hardware validated.

  • USB HID Feature Report control
  • Individual key RGB control
  • Validated 81-key RGB mapping
  • RGB framebuffer support
  • Continuous RGB control
  • RGB streaming at up to 33 Hz
  • Native SignalRGB plugin

2.4 GHz Wireless RGB

The wireless RGB implementation is a separate backend under:

rkm75/wireless/

The recovered wireless transport is hardware validated and provides keyboard-wide grouped RGB control.

The primary validated transaction is:

13 88 08
8 × 20-byte HID reports
105-byte native RGB stream
6 RGB groups
81 native LED indices

A larger grouped representation using 13 88 12 was also hardware validated:

13 88 12
18 HID reports
249-byte native RGB stream
42 RGB groups
81 native LED indices

13 88 14 was experimentally tested but is not considered production-safe because it produced unstable behavior.

The wireless protocol is partially reverse engineered. The implementation intentionally uses the validated grouped RGB representation rather than claiming complete support for every possible wireless RGB operation.

Wireless limitations

The following limitations remain at the final state of the project:

  • Arbitrary per-key wireless RGB is not fully solved.
  • The sparse/per-key representation has a validated engineering boundary of 50 independently colored LEDs.
  • Wireless lighting effects have not been completely decoded.
  • Not all 13 88 XX transaction types are completely understood.
  • A smooth 30 FPS real-time RGB stream over 2.4 GHz was not achieved.
  • Further 2.4 GHz performance optimization and protocol development are outside the scope of this repository's final state.

The 50-LED limit applies only to the sparse/per-key representation. It does not limit the keyboard's RGB hardware or the grouped representations.

Detailed wireless research is documented in:

2.4ghz/docs/protocol.md
2.4ghz/docs/findings.md

SignalRGB

A native SignalRGB plugin is included for the RK M75 wired USB mode:

signalrgb/RK_M75_Wired.js

The plugin communicates directly with the keyboard through HID Feature Reports. No Python daemon or companion application is required.

The plugin uses:

VID:          0x258A
PID:          0x0163
Usage Page:   0xFF02
Usage:        0x01
Report ID:    9
Report Size:  520 bytes

Wireless SignalRGB support is not provided as a finished integration.

Installation

Install the project dependencies:

pip install -r requirements.txt

For development:

pip install -e .

The project has been developed and validated on Windows with the RK M75 hardware.

Basic Usage

from rkm75 import Frame, RKM75

frame = Frame()
frame.set_key("A", (255, 0, 0))

with RKM75() as keyboard:
    keyboard.send(frame)

Wired RGB streaming

from rkm75 import Frame, RKM75

frame = Frame()

with RKM75() as keyboard:
    with keyboard.stream(fps=33) as stream:
        while True:
            frame.fill((255, 0, 0))
            stream.send(frame)

Wireless Usage

Wireless RGB is exposed separately:

from rkm75.wireless import RKM75Wireless

colors = (
    (255, 0, 0),
    (255, 128, 0),
    (255, 255, 0),
    (0, 255, 0),
    (0, 128, 255),
    (180, 0, 255),
)

with RKM75Wireless() as keyboard:
    keyboard.send_frame(colors)

The wireless API uses the recovered grouped RGB representation rather than arbitrary per-key Frame objects.

Hardware

The implementation has been validated on:

Wired:
VID 0x258A
PID 0x0163

Wireless:
VID 0x258A
PID 0x0148

Other Royal Kludge keyboards are not considered supported unless independently validated.

Documentation

Wired

docs/protocol.md
docs/findings.md

Wireless

2.4ghz/docs/protocol.md
2.4ghz/docs/findings.md

The documentation contains the detailed protocol structure, reverse-engineering evidence, hardware experiments, timing results, and known limitations.

Testing

The project includes hardware-independent automated tests covering the wired and wireless APIs and protocol layers.

pytest

The final automated test suite contains:

122 passed

Hardware validation is performed separately and requires the appropriate RK M75 hardware.

Repository

2.4ghz/       Wireless research and documentation
docs/         Wired protocol documentation
examples/     Usage and validation examples
rkm75/        Python library
signalrgb/    SignalRGB plugin
tests/        Automated tests
tools/        Reverse-engineering utilities

License

MIT

About

An open-source Python library for controlling the RGB lighting on the Royal Kludge RK M75 keyboard without the official Windows software.

Topics

Resources

Stars

3 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages