ricardofrancini/cpu-temp-monitor-linux

GitHub: ricardofrancini/cpu-temp-monitor-linux

通过逆向工程在 Linux 上用 C 语言重新实现了 Ocypus LCD 散热器的 CPU/GPU 温度监控与遥测显示功能,完全替代原有 Windows 专有驱动。

Stars: 0 | Forks: 0

# CPU 温度监控器 (Linux) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE) [![Linux](https://img.shields.io/badge/Linux-Debian/Proxmox-blue.svg)](#requirements) [![C](https://img.shields.io/badge/language-C11-555555.svg)]() [![Platform](https://img.shields.io/badge/platform-embedded--LCD-lightgrey.svg)]() Linux CPU/GPU 温度和使用率监控器,同时也可驱动 LCD 风冷散热器 (水泵)的数字 LCD —— 已通过 Ocypus `1a2c:4984` 散热器验证。 本仓库源自对 Windows 应用程序 `DeviceDriver.exe`/`XYUI.dll` 的**逆向工程**(原始的 CPU 监控器,未提供源代码)。我们没有复制专有的二进制文件, 而是使用公开的 kernel 接口(`sysfs`、`hwmon`),以及通过静态分析和实时验证映射出的 USB/HID 协议,在 C 语言中、原生 Linux 环境下重新实现了相同的行为。 子项目文档: - [`linux-hwmon-monitor/`](linux-hwmon-monitor/README.md) — Linux 监控器本身(构建、用法、LCD 遥测)。 - [`reverse/`](reverse/README.md) — Windows 二进制文件的逆向工程笔记和产物。 ## 截图 / 展示 ![散热器 LCD 遥测](https://static.pigsec.cn/wp-content/uploads/repos/cas/d0/d00235501069ab2a9696499dc405af58fdacfe49f832960b46321f688e117b17.jpg) ## 目标 在 Linux 上以**只读且安全**的方式重现 Windows 软件的功能: 1. **读取传感器** — 通过标准 kernel 接口读取 CPU/GPU 温度和使用率(无需专有驱动)。 2. **显示/发送** — 通过遥测 HID report(feature report `0x07`)将 CPU 温度 + 功率(或使用率)发送到风冷散热器水泵 LCD。 3. **作为服务运行**(`systemd`),并在 USB controller stall 时自动恢复。 风扇/RGB **不**受控:静态分析表明,原版 Windows 应用程序**不会发送**风扇/RGB report —— 仅包含遥测和固件读取。 因此,本项目仅用于监控和显示。 ## 起源:Windows 应用程序 起始点是对以下内容的逆向工程: - `DeviceDriver.exe`(原生,托盘):加载 `hid.dll`,每 1000 ms 发送一次包含温度/使用率数字的 **64/65 字节** feature report(ID 为 `0x07`),并读取固件版本(`{07 FD}`)。 - `XYUI.dll`(原生,UI):包含用于风扇/LED/RGB 控制的类 —— **没有** HID 导入(仅限接口)。 - `HardwareMonitor/OpenHardwareMonitorServer.exe` (.NET):使用 `LibreHardwareMonitorLib` 0.9.4.0 来发现传感器(遥测)。 汇总的逆向工程发现(见 [`reverse/out/protocol.md`](reverse/out/protocol.md)): | 事实 | 值 | |------|-------| | 设备 VID/PID | `1a2c:4984` | | Usage page / usage | `0xFF01` / `1` | | LCD feature report | ID `0x07`,65 字节,每 1 s 一次 | | 固件读取 | `{07 FD}` → 字节 1..2 = 版本 | | 风扇/RGB 写入 | 在二进制文件中**无** | ## 要求 - **宿主机:** Linux(已在 Debian/Proxmox 上测试),带有 `hwmon` 以及(可选)`usbmon` 的 kernel。**不要**在 WSL 上验证 —— 它不暴露物理传感器(参见 [监控器 README](linux-hwmon-monitor/README.md))。 - **构建:** `build-essential`、`pkg-config`、`libusb-1.0-0-dev`、`dpkg`。 - **包运行时:** `libusb-1.0-0`、`udev`。 - **硬件:** LCD 风冷散热器/水泵(Ocypus `1a2c:4984` 或类似设备),主板上有空闲的 USB 端口。 ## 安装(从零开始到服务运行) ### 1. 获取代码和构建依赖 ``` git clone https://github.com/ricardofrancini/cpu-temp-monitor-linux.git cd cpu-temp-monitor-linux/linux-hwmon-monitor sudo apt-get update sudo apt-get install -y build-essential pkg-config libusb-1.0-0-dev dpkg ``` ### 2. 构建(在目标宿主机上自行编译) ``` make # binary + hidraw tools make usb # libusb tools (recommended on Proxmox) ``` ### 3. 打包为 `.deb` 并通过 apt 安装 ``` bash build-deb.sh sudo apt install ./dist/ocypus-pump-monitor_1.0.0-1_amd64.deb ``` 这将安装: - `/usr/bin/linux-hwmon-monitor` - `/usr/lib/systemd/system/ocypus-pump.service` - `/etc/udev/rules.d/99-ocypus-pump.rules` ### 4. 启用并启动服务 服务 `postinst` 会自动启用/启动它,但你也可以手动控制: ``` sudo systemctl enable --now ocypus-pump sudo systemctl status ocypus-pump --no-pager sudo journalctl -u ocypus-pump -f | grep pkg ``` 该服务运行 `linux-hwmon-monitor --pump --mode 0`(每 1 s 进行一次 LCD 遥测)。 如果在 `journalctl` 中出现 `pump[0] ... temp=..C`,说明它正在运行。 ### 5. 验证温度(多插槽) ``` sensors | grep -i "Package id" ``` 如果有 2 个 CPU,`pump[0]` 对应 `Package id 0`,依此类推 —— `physical_package_id` 映射是自动的(参见[监控器 README](linux-hwmon-monitor/README.md))。 ## 每个工具的作用 | 二进制文件 | 用途 | |--------|-----| | `linux-hwmon-monitor --pump` | LCD 遥测服务 (libusb) | | `linux-hwmon-monitor --json` / `--watch` | CPU/GPU 传感器监控 | | `linux-hid-probe` | 列出 hidraw 设备 + report descriptor | | `hid-feature-probe` / `usb-feature-probe` | 只读 feature report 扫描 | | `hid-telemetry-test` / `usb-telemetry-test` | 可选的遥测发送器 (dry-run) | ## 安全性 - **默认只读**;任何写入操作都需要明确的 `--live` 标志。 - 遥测仅更新 LCD(无害,重启 / `--restore` 后即可恢复)。 - 在理解 payload 之前,切勿重放捕获的写入 report。 ## License MIT — 见 [`linux-hwmon-monitor/LICENSE`](linux-hwmon-monitor/LICENSE)。 ## 标签 / 主题 `linux` · `cpu-temperature` · `gpu` · `hwmon` · `sysfs` · `usb-hid` · `libusb` · `air-cooler` · `lcd` · `proxmox` · `systemd` · `reverse-engineering` · `opensource` 葡萄牙语版本:[README.pt-BR.md](README.pt-BR.md)
标签:USB HID, 云资产清单, 客户端加密, 嵌入式显示, 硬件交互, 逆向工程