A Windows control & monitoring solution for the onboard Embedded Controller (ITE IT5570E) on Sixunited's SU_AXB35 boards. A distant relative of ec-su_axb35-linux, consists of a server and a GUI client. The latest stable version is always available in Releases.
The whole thing would've been impossible without the work done in NoteBook FanControl and WinRing0 library.
- Full EC functionality: Fan control (auto/fixed/curve) and monitoring, power control (3 standard presets), APU temperature reading
- HTTP REST API: All requests and responses use JSON format
- Runs as a system service: Very low memory footprint, doesn't do anything unless asked
- Client is optional: Running a GUI monitoring/configuration tool is not required
- EC Firmware 1.04 or higher (get it here)
- Windows 11 running on SU_AXB35 board (could work on W10 too, untested)
- Administrator privileges for installation
- Disabled Secure Boot for WinRing0 driver loading
In general you should need to worry about anything below that line, just download the installer, run it and follow the instructions. The GUI client allows you to monitor and edit all of the needed parameters, everything else is for advanced users.
The server loads configuration from %SYSTEMDRIVE%\ProgramData\ec-su_axb35-win\config.json. If the file doesn't exist, it will be created with default values:
{
"host": "127.0.0.1",
"port": 8395,
"log_path": "C:\\ProgramData\\ec-su_axb35-win\\server.log",
"driver_path": "C:\\ProgramData\\ec-su_axb35-win\\winring0"
}The server logs all operations with timestamps to:
- Standard output (if run in a console)
- Log file defined in the config
The log file is overwritten on each server restart.
- All EC operations are performed synchronously one by one
- The server will exit if it cannot access the EC or load the required driver
- All states are being kept on the server side in its config and re-applied on start
- HTTP REST API does not have any authorization implemented, unless you're sure that this is what you want, never set the server to listen on public interfaces
- GET
/status- Get EC firmware version and status - GET
/metrics- Get combined monitoring data (power mode, temperature, all fan data)
- GET/POST
/apu/power_mode- Get or set current power mode (balanced/performance/quiet) - GET
/apu/temp- Get APU temperature
- GET
/fanX/rpm- Get fan RPM - GET/POST
/fanX/mode- Get or set fan mode (auto/fixed/curve) - GET/POST
/fanX/level- Get or set fan level (0-5) forfixedmode - GET/POST
/fanX/rampup_curve- Get or set fan rampup curve (5 temperature thresholds) forcurvemode - GET/POST
/fanX/rampdown_curve- Get or set fan rampdown curve (5 temperature thresholds) forcurvemode
There are OpenAPI specifications available in the repo with full route descriptions and request/response examples. You can simply copy the URL and import it in the Swagger Editor or any other OpenAPI-compatible editor/viewer.
The curve fan mode provides automatic fan speed control based on APU temperature using customizable temperature thresholds:
- Rampup curve: 5 temperature thresholds (°C) that trigger fan level increases (levels 1-5)
- Rampdown curve: 5 temperature thresholds (°C) that trigger fan level decreases (levels 1-5)
- Real-time monitoring: Server continuously monitors APU temperature and adjusts fan speeds accordingly
- Hysteresis: Separate rampup/rampdown curves prevent rapid fan speed oscillation
- Per-fan configuration: Each fan (1, 2, 3) can have independent curve settings
Default Curve Values for Fan 1 & 2:
- Rampup: [60, 70, 83, 95, 97]°C
- Rampdown: [40, 50, 80, 94, 96]°C
Default Curve Values for Fan 3:
- Rampup: [20, 60, 83, 95, 97]°C
- Rampdown: [0, 50, 80, 94, 96]°C
- Set fan mode to "curve" using the
/fanX/modeendpoint - Optionally customize rampup/rampdown curves using the curve endpoints
- Server automatically monitors APU temperature every second
- Fan levels adjust based on temperature crossing the configured thresholds
- All curve settings are saved to config and restored on server restart
There are a couple of PoSh scripts available in %SYSTEMDRIVE%\ProgramData\ec-su_axb35-win\scripts. Use them to quickly test metrics output and fan levels.
- Ensure you have Rust installed and you can build a simple "hello world" app.
- Build the project (from server or client dir):
cargo build --release
- Run as Administrator:
cargo run --release
If you found a bug, have a suggestion or some question, feel free to create an issue in this repo.
There is also a Strix Halo HomeLab Discord server you can join - https://discord.gg/pnPRyucNrG
