GitFlowLink/ironpride-display
GitHub: GitFlowLink/ironpride-display
通过对机箱屏幕 USB/H.264 协议的逆向工程,为 Iron Pride Invader Q9MX 提供了 Linux 原生的可视化显示与编辑方案。
Stars: 1 | Forks: 0
# Iron Pride 显示
**Iron Pride Invader Q9MX** 机箱自带 IPS 屏幕的原生 Linux 客户端和可视化编辑器。其原厂软件 (APEXSTORM) 仅限 Windows 使用 —— 这是一个通过对该软件 USB 串口协议进行逆向工程,从零开始重新实现的版本。



## 下载
**[→ 最新版本 (v1.1)](https://github.com/GitFlowLink/ironpride-display/releases/tag/v1.1)**
适用于 Linux x86-64 的预编译二进制文件 —— 无需 Python,只需在系统中安装 `ffmpeg` 即可。
## 功能
- **图层**:图片、GIF、循环视频、动画文本、系统传感器仪表
- **操作**:移动、从边缘/角落调整大小(类似 Photoshop 风格)、对每个图层进行自由旋转
- **文本**:自定义颜色或动画流动彩虹渐变
- **特效**:针对图层的透明度、带有速度控制的自动旋转、GIF/视频播放速度
- **传感器**:CPU / GPU / RAM 负载以及 CPU / GPU 温度环形仪表(实时刷新,1 秒间隔)
- 针对整个画面的**色彩滤镜**(单色 / 红色 / 粉色 / 绿色 / 蓝色调)
- **主题**:保存命名的布局并在它们之间切换
- **托盘 + 自启动**:最小化到系统托盘,可设置为登录时启动并自动恢复上次的布局
- 直接从文件管理器中将文件**拖放**到画布上
## 工作原理 —— 逆向工程的协议
显示器在 `/dev/ttyACM0` 上显示为 CDC ACM 串行设备 (`33c3:8001`)。
命令使用简单的帧格式:
```
5A A5 | CMD 00 | SIZE (uint32 LE) | PAYLOAD
```
| CMD | 含义 | Payload |
|------|-------------|-------------------|
| 0x90 | Hello | `01` |
| 0x80 | Brightness | 一个字节 `00..FF` |
| 0x81 | Orientation | 一个字节 |
| 0x85 | Frame | H.264 Annex B NAL |
该面板包含一个硬件 H.264 解码器。帧以 **462×1920** 分辨率(Constrained Baseline,level 3.1)编码,面板随后将其旋转至原生的横屏方向。一个持久运行的 `ffmpeg` 管道负责对合成的画布进行编码,并且每个发出的关键帧都被包装在 `0x85` 命令中 —— 如果数据流停止,固件将使屏幕变黑。
该协议是通过对在带有 USB 直通的 Windows 虚拟机中运行的官方软件进行 USB 抓包 (`usbmon` + `tcpdump`) 提取出来的。
## 环境要求
```
# Fedora / RHEL
sudo dnf install ffmpeg
sudo usermod -aG dialout "$USER" # re-login afterwards
```
## 从源码运行
```
pip install -r requirements.txt
python3 ironpride_editor.py
# headless / 登录模式(仅托盘,自动开始 streaming):
python3 ironpride_editor.py --background
```
## 构建独立二进制文件
```
pip install pyinstaller
pyinstaller --onefile --windowed --name ironpride-display \
--collect-all PyQt6 ironpride_editor.py
# 结果:dist/ironpride-display
```
## 注意事项
- 已在 Fedora 44、KDE Plasma 6 (Wayland)、AMD Ryzen 7 8700G / Radeon 780M 上测试。
- GPU 负载/温度从 `amdgpu` sysfs 读取;在其他 GPU 上传感器路径可能会有所不同。
- 这是一个非官方项目,与 Iron Pride 或 APEXSTORM 没有任何关联。
## 许可证
MIT —— 详见 [LICENSE](LICENSE)。
## 桌面集成(应用程序菜单图标)
创建一个 `.desktop` 启动器,以便该应用出现在您的应用程序菜单中:
```
cat > ~/.local/share/applications/ironpride.desktop << 'DESKTOP'
[Desktop Entry]
Type=Application
Name=Iron Pride Display
Comment=Case display editor for Iron Pride Invader Q9MX
Exec=/home/YOUR_USERNAME/ironpride-display/dist/ironpride-display
Icon=video-display
Categories=Utility;
Terminal=false
DESKTOP
update-desktop-database ~/.local/share/applications/
```
将 `YOUR_USERNAME` 替换为您实际的 Linux 用户名(可以使用 `whoami` 命令查看)。
要在登录时启用自启动,请启动该应用程序并在设置面板中勾选 **"Launch on startup"** —— 它会自动写入正确的路径。
标签:H.264, PyQt6, USB串口通信, 云资产清单, 可视化编辑器, 漏洞挖掘, 硬件客户端, 逆向工具, 逆向工程