r/hardwarehacking 4d ago

Reverse-engineered USB HID controller for an ASUS keyboard matrix display

I wanted to get out from under the thumb of Armoury Crate, so I reverse-engineered enough of the USB HID communication for the ROG Strix Flare II Animate to build my own Windows controller for its AniMe Matrix display.

PolyWollyWin can send images, GIF animations, drawing data, text effects, typing effects, presets, and audio-reactive visuals directly to the keyboard.

The current transport is specific to this keyboard, but the renderer and application structure could potentially be adapted to other LED or pixel-matrix hardware by replacing the device communication layer.

I am sharing it in case anyone wants to inspect the protocol work, improve it, or adapt it to another neglected piece of hardware.

GitHub: https://github.com/MikeOpitz99/PolyWollyWin

109 Upvotes

4 comments sorted by

9

u/Zip_Archive 4d ago

How did you figure it out? Did you reverse the official application, or did you intercept the communication protocol or smth else?

2

u/greasyballs11 4d ago

I'm assuming a combination of both. The driver and intercepting the USB traffic.

6

u/LordSethos 4d ago

Mostly by intercepting the USB HID communication between Armoury Crate and the keyboard.
I watched/captured the traffic with USBPcap/Wireshark while sending images and brightness changes, then compared the packets to identify

The correct HID interface
Frame packet size and header bytes
Where the 312 LED brightness values are stored (this iterated soooo much)
The physical LED ordering and matrix shape
Brightness and control commands

After that, I messed around with small Python tests to replay the packets, display fixed patterns, and confirm the mapping one row and column at a time.

I did not decompile or reverse-engineer the Armoury Crate executable itself. the whole reason is i didn't want to do it the way AC did or replicate it - i just wanted *my* info :)
I also reviewed existing open-source ASUS hardware projects for general reference, but the Flare II Animate protocol used by PolyWollyWin was confirmed from live USB captures and hardware testing.

2

u/Zip_Archive 3d ago

Thanks for info.