Lightning-13/monsgeek-rgb
GitHub: Lightning-13/monsgeek-rgb
通过逆向工程 MonsGeek 键盘的 USB HID 协议,提供独立于官方软件的 Python 灯效控制库与协议文档。
Stars: 0 | Forks: 0
# MonsGeek RGB
一个用于在不使用官方 MonsGeek 软件的情况下控制 **MonsGeek FUN60 Pro** RGB 灯效的 Python 库和协议文档。
本项目是对键盘 USB HID RGB 协议进行全面逆向工程的成果。它使用 `hidapi` 直接与键盘通信,绕过了官方应用程序 `iot_driver.exe` 及其 gRPC 通信层。
## 功能
* ✅ 直接的 USB HID 通信
* ✅ 不依赖官方 MonsGeek 软件
* ✅ 自动检测有线和 2.4 GHz 模式
* ✅ 静态 RGB 灯效
* ✅ 持久化的逐键 RGB 布局(自定义层 / Custom Layer)
* ✅ 亮度控制
* ✅ 逆向工程的协议文档
## 当前状态
| 功能 | 状态 |
| ----------------------- | ---------------- |
| 设备检测 | ✅ |
| 有线模式 | ✅ |
| 2.4 GHz 模式 | ✅ |
| 静态 RGB | ✅ |
| 逐键 RGB | ✅ |
| 亮度 | ✅ |
| 内置效果控制 | ✅ 部分支持 |
| 实时 RGB 流 | ❌ 未识别 |
## 支持的设备
| 设备 | 连接方式 | VID | PID |
| ------------------ | ---------- | ------ | ------ |
| MonsGeek FUN60 Pro | 有线 | 0x3151 | 0x502F |
| MonsGeek FUN60 Pro | 2.4 GHz | 0x3151 | 0x5026 |
如果其他 MonsGeek/Yichip 键盘实现了相同的 HID 协议,则可能也支持它们。
## 安装说明
克隆代码库:
```
git clone https://github.com/Lightning-13/monsgeek-rgb.git
cd monsgeek-rgb
```
安装所需的依赖项:
```
pip install hidapi
```
## 快速示例
```
from fun60_controller import FUN60Controller
with FUN60Controller() as keyboard:
keyboard.set_all(0, 255, 0)
```
这会将持久的绿色布局写入键盘的自定义层(Custom Layer)。
## 工作原理
键盘暴露了一个用于 RGB 控制的厂商特定 USB HID 接口。
本项目不与官方软件通信,而是将 HID Feature Report 直接发送到接口 2。RGB 数据会被写入键盘内部的 framebuffer,并使用与官方应用程序相同的协议提交到板载的自定义层(Custom Layer)。
## 项目结构
```
docs/
protocol.md
reverse_engineering.md
limitations.md
led_map.md
examples/
tests/
fun60_controller.py
```
## 文档
`docs` 目录中提供了详细的技术文档。
* **protocol.md** — 完整的 HID 协议参考。
* **reverse_engineering.md** — 研究过程与发现。
* **limitations.md** — 已知的协议限制和设计决策。
* **led_map.md** — 物理按键到 LED 索引的映射。
## 限制
该协议目前仅支持持久的自定义层(Custom Layer)写入。
在本次研究中,未识别出通用的基于 RAM 的 RGB 流传输协议。官方的 MonsGeek 软件同样是将更改提交到闪存,而不是提供实时的逐键 RGB 预览。
这意味着该库非常适用于:
* 静态布局
* 逐键颜色配置文件
* 配置实用程序
**不**适用于诸如 SignalRGB 或 OpenRGB 通常生成的高帧率动画,除非发现了以前未记录的流传输协议。
## 许可证
本项目基于 MIT 许可证发布。
## 免责声明
本项目是一项独立的逆向工程成果,不隶属于 MonsGeek、Akko、Yichip 或任何相关公司,也未获得其认可。
所有商标均归其各自所有者所有。
标签:Python, RGB灯效, USB HID, 云资产清单, 外设驱动, 无后门, 硬件控制, 逆向工具, 逆向工程