Use your own Fan Control curves. Switch complete configurations over MQTT.
Two plugins extend the existing Fan Control application: USB HID radiator control for AORUS WATERFORCE X360, and MQTT configuration switching with live telemetry. Both run inside Fan Control; no separate tray application or background watcher is needed.
- Waterforce radiator control: native curves request 400–2500 RPM; radiator and pump RPM are measured separately.
- Three configurations: Performance, Balanced and Night. Assign CPU/GPU curves in Fan Control and switch locally or through MQTT.
- Optional Night CPU limit: disable Turbo Boost in Night and restore the original Windows CPU policy in Performance/Balanced; setup and limits.
- Observed state: the reported mode follows the actual loaded native configuration, including manual changes.
- Telemetry: CPU Package, available motherboard sensors, NVIDIA GPU temperature and Waterforce RPM.
- Protected MQTT credentials: CurrentUser DPAPI storage, validated TLS, and a configurable topic prefix.
- Persistent startup: an elevated interactive Windows logon task, with the last native configuration preserved.
- Obtain the .NET 10 build of Fan Control V282 and the .NET 9/10 SDKs.
- Follow installation to build and install the two DLLs. Fan Control and its SDK are obtained separately.
- Clone your own native configuration into Performance.json, Balanced.json and Night.json. Keep calibration, sensor pairing and tray icons in every copy.
- Configure your local broker and provision credentials. Validate the Waterforce device before enabling radiator control.
- Use the Home Assistant example or another MQTT client to select a mode.
Fan Control + CPU/GPU curves
│
├─ Waterforce plugin → CPU radiator / RPM telemetry
│
└─ MQTT plugin ↔ broker ↔ Home Assistant or your own client
Default prefix: fancontrol/aorus. Change it locally when running multiple computers.
| Topic | Payload | Retained |
|---|---|---|
fancontrol/aorus/profile/set |
Performance, Balanced, Night |
No |
fancontrol/aorus/state |
Observed configuration and telemetry JSON | Yes |
fancontrol/aorus/availability |
online / offline |
Yes, including Last Will |
Home Assistant should display bridge.observedProfile and make mode selection available only when transport is online and controlReady is true. A requested mode alone is not proof that the native configuration loaded. MQTT details →
| Feature | Status |
|---|---|
| AORUS WATERFORCE X360 radiator | Tested, model code 2; targets 400/600/800 and higher RPM validated |
| Waterforce radiator / pump RPM | Measured through USB HID |
| Waterforce pump control | Not provided; existing pump setting is preserved |
| X240 / X280 | Not validated by this integration |
| Motherboard and GPU fan control | Provided by Fan Control, subject to its hardware support |
| Candidate coolant temperature | Unverified diagnostic reading |
The RPM target and measured speed can differ. Below 16%, radiator requests map to 400 RPM; 24% maps to 600 RPM and 32% to 800 RPM. A separate CPU-temperature override does not alter your curves. Fan-stop calibration is not supported by this radiator path.
Fan Control must stay running to apply software curves. Normal Reset restores the captured device curve/mode with readback; crash, USB-loss and reboot fallback have not been validated. Only one cooling writer should own a device. Hardware details →
./scripts/build.ps1The build runs mock configuration/MQTT tests and fake HID tests; it sends no live hardware commands. The included workflow repeats those checks on Windows. Installation and hardware validation are explicit separate steps.
| Guide | Covers |
|---|---|
| Installation | SDKs, plugins, broker credentials, control enablement and startup |
| MQTT | Topics, authentication, observed state and Home Assistant |
| Configurations | Performance / Balanced / Night and manual selection |
| Operation and rollback | Device ownership, persistence and restoring vendor control |
| Diagnostics | Read-only status, missing sensors and unavailable controls |
| Hardware | Verified channels, limits and protocol behavior |
| Attribution | Upstream source, dependency licenses and redistribution boundaries |
Original integration code is MIT-licensed; see LICENSE. The Waterforce implementation derives from brenoperucchi/FanControl.GigabyteWaterforce, whose upstream README declares MIT. That declaration and the original README are retained. Fan Control itself is separate proprietary software and is not distributed here.
No local configuration, broker credential, device snapshot, runtime binary or installation history is included in this repository.
For terminal-only status, backups, restart, installation and recovery, see maintenance commands. Optional make status, make backup and make restart-force shortcuts are included.
Download ready-to-install plugin DLLs from GitHub Releases. The ZIP contains a Plugins folder and installation notes; local configurations and credentials are excluded.