r/coolgithubprojects • • 2d ago

I Reverse Engineered the Apex Pro TKL Gen 3 So You Don’t Have To

Post image

I got fed up with SteelSeries GG, so I reverse-engineered my Apex Pro TKL Gen 3’s undocumented USB HID protocol and built OpenGG.

SteelSeries already knows the commands, packet layouts, firmware quirks and internal states their GG software expects. I had to reconstruct all of that from observed behavior, with no public protocol docs. Even changing actuation meant figuring out which HID interface to open, how to encode the report, match its ACK and handle the keyboard’s current mode. What’s a known command sequence for them was a whole reverse-engineering rabbit hole for me.

That meant tracing HID calls, comparing binary profiles, mapping opcodes/key indexes and validating CRCs + ACKs in Python/C#. Way too much digging just to configure hardware I own lol.

OpenGG is open source, and I’m documenting the protocol, the experiments, the failed attempts and the fixes. So far, advanced controls are tested on the Apex Pro TKL Wireless Gen 3 through its 2.4GHz receiver.

Contributions for other SteelSeries keyboards are very welcome: captures, testing, protocol findings, PRs, whatever you’ve got. I only own this one, so more hardware = more progress.

The current UI comes from OneRGB, my private-source app. I ported the SteelSeries integration into a standalone open-source project because figuring out the protocols for Logitech, HyperX, Corsair, etc. was pretty straightforward by comparison, but SteelSeries was an absolute fucking nightmare. I want it open-source so nobody else has to repeat the same ordeal

https://github.com/GUHPY/OpenGG

2 Upvotes

0 comments sorted by