我有一个中文 USB 游戏鼠标 ( 04d9:a070 ),它有 4 种颜色模式和 4 种亮度级别。我知道这个鼠标能够显示至少 5 种不同的颜色,所以它必须是 RGB LED(4 条腿)。该软件是我见过的最糟糕的软件,要更改颜色、亮度和模式非常困难,因此它可以正常工作,而不仅仅是关闭。现在我打算制作自己的控制软件(首先用于 Linux)。
我从 Bytepunk 的一个简单指南“逆向工程 USB 鼠标(2017 年 5 月 3 日更新)”开始(无法发布链接,但 Google 或 DuckDuckGo 应该可以找到该指南)
我已经嗅到了我需要的大部分东西。我在带有糟糕控制软件的 Windows 上使用 USBlyzer 并获得了一些十六进制字符串,并想出了如何更改十六进制字符串中的颜色、亮度和模式。我粘贴了我在这里发现的数据 (Pastebin)
Clicking turn on lights from the Windows control software
out: 07 07 01 00 00 00 00 00 <-- Is this a "Commands coming in call"?
out: 07 09 01 02 00 00 00 00 <-- 07 09 01 0X where X is the color
out: 07 0C 01 04 00 00 00 00 <-- 07 0Y 01 0Z where Y is the brightness and Z is the mode
out: 07 13 04 00 00 00 00 00 <-- Is this a "Commands sent call"?
X - OFF: 0 RED: 1 BLUE: 2 GREEN: 3 PINK: 4
Y - LOW: B MED: 9 HIGH: C
Z - STATIC: 1 SLOW PULSE: 2 MED PULSE: 3 FAST PULSE: 4
我的问题是,当我尝试向设备“写入”任何内容时,它只是挂起,并且出现“找不到 [Errno2] 实体”错误,需要重新插入鼠标才能使其再次工作。它不会“断开连接”,但会留lsusb
在dmesg
.
我将修改后的 python 脚本粘贴到Pastebin
我还应用了自定义udev 规则
SUBSYSTEM=="usb", ATTR{idVendor}=="04d9", ATTR{idProduct}=="a070", GROUP:="plugdev", MODE="0666"
我是串行通信和逆向工程的新手,所以我不知道要搜索什么。我想我可以在评论中发布来自 USBlyzer 的图片和更多数据。这是我在这里的第一篇文章,所以我没有提供更多链接的声誉。
问候,桑泰利