Ultra-lightweight pump LCD display controller for ID-COOLING FX Series liquid coolers.
100% Pure Rust • Native Linux & Windows • Zero Bloat • GUI (~12 MB) • TUI (~5 MB) • Daemon (~2 MB)
Note
I made this project solely for myself to purge heavy, bloated vendor software from my personal computer. Chances are few people will ever see this repository, and that's completely fine with me.
In reality, the ID-COOLING FX display protocol is as primitive as it gets: the display controller fundamentally only understands two real commands — screen on/off (0x04) and sending a numeric value to the 7-segment display (0x01). Everything else (frequency, mythical registers) doesn't change anything in the physical hardware. The entire RustCooling app is simply a very lightweight, clean, and convenient wrapper around this protocol.
Whether you prefer a sleek hardware-accelerated GUI, a minimalist Ratatui TUI dashboard in your terminal (~5 MB RAM), or a silent background systemd daemon (~2 MB RAM), RustCooling covers all deployment styles out of the box.
- Interactive Terminal UI (TUI) Mode (~4–7 MB RAM):
In the CLI package (RustCooling-CLI), runningrustcoolingdirectly launches the interactive dashboard. In the GUI package, runrustcooling tuiorrustcooling -tfor a minimalist, distraction-free terminal dashboard powered byratatui. Features real-time CPU telemetry gauges, edge-to-edge history sparklines, full runtime settings editor, and 5-language localization. Mouse wheel events are ignored so scrolling never accidentally changes your settings. - Headless Daemon Mode (~2–4 MB RAM) & Seamless Terminal Detachment:
When closing the terminal running TUI, RustCooling automatically catchesSIGHUPand hands off monitoring to a detached background daemon without powering off your pump screen. Alternatively, runrustcooling daemonor enable the included systemd user service. - One-Shot Status Query for Status Bars:
Runrustcooling statusto instantly query the pump connection state, current CPU temperature, load, and display output in JSON or human-readable format for Waybar, Polybar, i3status, or Conky without holding any locks. - Temperature Smoothing & Jitter Filtering:
In the official vendor software, pump numbers jump wildly with every single 1-degree fluctuation. RustCooling features an exponential moving average + deadband hysteresis filter (0–5°C): minor fluctuations are filtered out, leaving a stable, non-distracting reading on your pump. - Memory Footprint ~12–14 MB (In Tray < 3 MB):
The vendor utility is built on Electron / Node.js and eats up 200–300 MB of RAM. RustCooling is written in 100% pure native Rust with Slint UI and consumes 20–50x less memory. - True Native Linux Support:
The vendor does not support Linux at all. RustCooling reads system sensors natively through the Linux kernel (/sys/class/hwmonand/proc/stat) without Wine, root permissions, or third-party background daemons. - Direct Native Silicon Telemetry (Intel DTS & AMD Ryzen Zen 1–5):
Zero WMI overhead, 0.0% background CPU, and pinpoint accuracy directly from silicon registers.- Windows (Direct MSR & SMN Mailbox): Reads real Intel Digital Thermal Sensors (DTS per-core & Package) via IA32 MSRs (
0x19C,0x1B1) and AMD Ryzen (Zen 1–5) Tctl & CCD temperatures via PCI SMN indirect mailbox (0:0.0). Uses an embedded micro-driver with full security hardening: on-demand service execution (SERVICE_DEMAND_START), exclusive device handle, and guaranteed automatic kernel memory unloading upon exit. - Linux (Driverless Native Kernel sysfs): Telemetry is read natively via standard
/sys/class/hwmoninterfaces (k10temp,zenpower,coretemp) and/proc/statwithout root permissions.
- Windows (Direct MSR & SMN Mailbox): Reads real Intel Digital Thermal Sensors (DTS per-core & Package) via IA32 MSRs (
- Instant Cold Start (< 50 ms):
No heavy runtimes or framework loading — the application launches instantaneously. - Completely Standalone, Portable & Clean:
Single self-contained binary with zero external runtime dependencies. Configuration (config.json) and driver files are kept strictly alongside the executable on Windows, or in isolated configuration directories on Linux (~/.config/RustCooling-gui/and~/.config/RustCooling-tui/).
Note
Regarding ARM Architecture Support:
ID-COOLING FX240/280/360 liquid coolers are designed exclusively for standard desktop motherboard sockets: Intel (LGA1700/1851/1200) and AMD (AM4/AM5) connecting via an internal 9-pin USB header. Desktop motherboards on ARM featuring AIO liquid cooling mounts do not exist on the consumer market, which is why ARM support was intentionally omitted to preserve codebase efficiency and eliminate dead code.
| Feature | Official Vendor Software | idc-lite (My Previous C# App) | RustCooling (Rust) |
|---|---|---|---|
| Tech Stack | Electron / Node.js + C++ | C# / .NET 8 (WPF) | 100% Pure Rust + Slint & Ratatui |
| RAM (GUI Active Window) | ~200 – 300 MB | ~120 MB | ~12 – 14 MB |
| RAM (Interactive TUI) | ❌ N/A | ❌ N/A | ~4 – 7 MB |
| RAM (Headless Daemon) | ❌ N/A | ❌ N/A | ~2 – 4 MB |
| RAM (System Tray) | ~200 MB | ~110 MB | < 3 MB (~1.1 – 2.5 MB) |
| Background CPU Load | 2.0% – 5.0% | ~1.0% | 0.0% (Event-driven) |
| Temp Jitter Smoothing | ❌ None (jitters constantly) | ❌ None | ✔ Yes (configurable hysteresis filter) |
| Linux Support | ❌ None | ✔ Native (hwmon, sysfs, udev) | |
| Startup Time | 3.0 – 6.0 sec | 1.5 – 3.0 sec | < 50 ms |
| UI Languages | EN, ZH | EN, RU, ZH | EN, RU, ZH, DE, FR |
RustCooling provides two distinct package flavors for Linux:
- CLI / TUI Package (
RustCooling-CLI): Minimalist, zero GUI dependencies. Runningrustcoolingdirectly launches the interactive Ratatui terminal dashboard. - GUI Package (
RustCooling-GUI): Full desktop version with Slint OpenGL interface and system tray.
Commands:
# In CLI package: directly opens interactive Ratatui TUI dashboard
# In GUI package: opens hardware-accelerated Slint window
rustcooling
# Launch Interactive Terminal User Interface (Ratatui TUI dashboard)
rustcooling tui # or: rustcooling -t
# Launch background headless daemon (~2 MB RAM)
rustcooling daemon # or: rustcooling -d
# Non-blocking live telemetry status query (Waybar / Polybar / scripts)
rustcooling status # or: rustcooling -s
# Graceful shutdown (powers off pump display and stops daemon)
rustcooling stopPre-built standalone binaries and packages are available on the Releases page:
| OS / Distribution | Package Type | Architecture | Download Link |
|---|---|---|---|
| Windows 10 / 11 | Standalone Executable (Portable) | x86_64 | RustCooling-1.0.4.exe |
| Universal Linux (All Distros) | Standalone GUI AppImage | x86_64 | RustCooling-GUI-1.0.4.AppImage |
| Arch Linux / CachyOS | Native Package (.pkg.tar.zst) |
x86_64 | rustcooling-1.0.4-1-x86_64.pkg.tar.zst |
| Debian / Ubuntu / Mint | Desktop GUI Package (.deb) |
x86_64 | RustCooling-GUI-1.0.4.deb |
| Debian / Ubuntu / Mint | Minimal CLI / TUI Package (.deb) |
x86_64 | RustCooling-CLI-1.0.4.deb |
| Generic Linux Archive | Universal GUI Archive (.tar.gz) |
x86_64 | RustCooling-GUI-1.0.4.tar.gz |
| Generic Linux Archive | Minimal CLI / TUI Archive (.tar.gz) |
x86_64 | RustCooling-CLI-1.0.4.tar.gz |
- Download
RustCooling-1.0.4.exe. - Place it in any folder of your choice (e.g.
C:\Tools\RustCooling\). Configuration (config.json) and the micro-driver reside directly next to it. - On first run, click "Grant Rights & Install" (UAC) to register the LibreHardwareMonitor sensor driver once.
- Click "Continue" — the application is ready to use! System autostart is available in Settings.
Direct pacman installation from latest release:
sudo pacman -U https://github.com/Qyzom/RustCooling/releases/download/v1.0.4/rustcooling-1.0.4-1-x86_64.pkg.tar.zstOr build locally from source:
git clone https://github.com/Qyzom/RustCooling.git
cd RustCooling/packaging/arch && makepkg -sichmod +x RustCooling-GUI-1.0.4.AppImage
./RustCooling-GUI-1.0.4.AppImageFor Desktop GUI (with system tray, desktop entry, fonts):
sudo dpkg -i RustCooling-GUI-1.0.4.debFor Minimal Terminal TUI & Server Daemon (zero GUI dependencies):
sudo dpkg -i RustCooling-CLI-1.0.4.debFor Desktop GUI:
tar -xzf RustCooling-GUI-1.0.4.tar.gz
sudo ./install.shFor Minimal Terminal TUI & Server Daemon:
tar -xzf RustCooling-CLI-1.0.4.tar.gz
sudo ./install.shTo run RustCooling silently in the background on every user login without GUI/TUI windows:
systemctl --user enable --now rustcooling- Vendor ID (VID):
0x1A86(QinHeng Electronics / WCH) - Product ID (PID):
0xE317 - Report Length: 64 bytes (on Windows, Report ID
0x00is prepended -> 65 bytes total).
[0x55, 0xBB, 0x02, CMD, VAL_HI, VAL_LO, CKSUM, 0x00 x 57]
0x55, 0xBB: Magic bytes signature.0x02: Value payload length (2 bytes).CMD: Command opcode.VAL_HI, VAL_LO: Big-Endianu16numeric value.CKSUM: Checksum of the first 6 bytes(sum(0..5)) & 0xFF.- Remaining 57 bytes: Zero padding (
0x00).
| Command | Hex | Description |
|---|---|---|
CMD_TEMPERATURE |
0x01 |
Number rendered on 7-segment display (CPU Temperature or CPU Load) |
CMD_SHOW |
0x04 |
Turn display panel on (0x0001) or off (0x0000) |
git clone https://github.com/Qyzom/RustCooling.git
cd RustCooling
cargo test
cargo build --releaseThe compiled binaries will be located in:
- Windows:
target/release/RustCooling.exe(GUI) - Linux GUI:
target/release/RustCooling - Linux CLI/TUI:
target/release/rustcooling-cli
This project is licensed under the open-source MIT License.
Third-party open-source components and their respective licenses:
- RustCooling Core & UI: MIT License © Qyzom & Contributors.
- Unbounded Font: SIL Open Font License 1.1 (Authors: Lexend & Contributors).
- Noto Sans SC Font: SIL Open Font License 1.1 (Authors: Google LLC, Adobe Systems Inc.). Provides native Chinese character rendering.
- LibreHardwareMonitor Driver: Modified BSD License (Author: Noriyuki Miyazaki / OpenLibSys / LibreHardwareMonitor). Provides safe physical hardware sensor access on Windows.