# GMK87 Configurator: reconstructing Zuoya keyboard USB HID control

> GMK87 Configurator reconstructs the Zuoya GMK87 keyboard's USB HID control exchanges from captures of its official application. It documents 64-byte report framing and image-upload sequences, and provides desktop, CLI and Node.js controls for display images, RGB lighting and clock synchronization.

- Type: Case study
- Targets: Protocol
- Category: Independent reconstruction cases
- Relationship: Independent reconstruction project
- Sources reviewed: 2026-11-08
- Added to the catalog: 2026-11-09
- Original resource: <https://github.com/codedgar/gmk87-node>
- Primary source: <https://github.com/codedgar/gmk87-node/blob/a9a1e902944ff323f247ab8deb5d04f8f0a56601/README.md>
- Catalog page: <https://awesomerea.org/resources/gmk87-configurator-case/>
- Record JSON: <https://awesomerea.org/resources/gmk87-configurator-case/record.json>
- Chinese version: [简体中文](https://awesomerea.org/zh/resources/gmk87-configurator-case/index.md)

## Requirements & limits

- **Prerequisites:** Zuoya GMK87 keyboard; the CLI requires Node.js 14 or later.
- **Prerequisites:** Linux users need the included udev rule for HID access without root.
- **Limits:** Image uploads support at most 36 frames across both display slots.
- **License:** MIT licence.

## Primary sources

1. <https://github.com/codedgar/gmk87-node/blob/a9a1e902944ff323f247ab8deb5d04f8f0a56601/README.md>
2. <https://github.com/codedgar/gmk87-node/blob/a9a1e902944ff323f247ab8deb5d04f8f0a56601/ANALYSIS.md>

## More in Protocols

- [Ajazz AK820 Pro: reconstructing keyboard lighting control on Linux](https://awesomerea.org/resources/ajazz-keyboard-software-linux-case/index.md) · Case study
- [OPUS-QUAD Pro DJ Link Reverse Engineer Packet Analysis: mapping device traffic](https://awesomerea.org/resources/opus-quad-pro-dj-link-analysis-case/index.md) · Case study
- [MiraBox StreamDock: reconstructing USB device control](https://awesomerea.org/resources/mirabox-streamdock-node-case/index.md) · Case study
- [SiriRemote-Linux: decoding Siri Remote Bluetooth input](https://awesomerea.org/resources/siriremote-linux-case/index.md) · Case study
- [ZydDash: decoding ePowerFun scooter telemetry for an ESP32 dashboard](https://awesomerea.org/resources/zyddash-case/index.md) · Case study
- [catlink-local: reconstructing CATLINK Open X local control](https://awesomerea.org/resources/catlink-local-case/index.md) · Case study

## About this entry

The description was reviewed against primary sources.
Original editorial content: MIT. Linked projects, papers and assets retain their own rights and licenses.
