Skip to content

deseven/ec-su_axb35-win

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ec-su_axb35-win

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.

ec-su_axb35-win-client

Features

  • 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

Requirements

  • 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

Usage

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.

Configuration & Logging

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.

Safety & Implementation Notes

  • 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

API Endpoints

General

  • GET /status - Get EC firmware version and status
  • GET /metrics - Get combined monitoring data (power mode, temperature, all fan data)

APU Power Mode

  • GET/POST /apu/power_mode - Get or set current power mode (balanced/performance/quiet)
  • GET /apu/temp - Get APU temperature

Fan Control (X = 1, 2, or 3)

  • 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) for fixed mode
  • GET/POST /fanX/rampup_curve - Get or set fan rampup curve (5 temperature thresholds) for curve mode
  • GET/POST /fanX/rampdown_curve - Get or set fan rampdown curve (5 temperature thresholds) for curve mode

OpenAPI Specs

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.

Curve Fan Mode

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

Curve Mode Operation

  1. Set fan mode to "curve" using the /fanX/mode endpoint
  2. Optionally customize rampup/rampdown curves using the curve endpoints
  3. Server automatically monitors APU temperature every second
  4. Fan levels adjust based on temperature crossing the configured thresholds
  5. All curve settings are saved to config and restored on server restart

Testing

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.

Building and Running

  1. Ensure you have Rust installed and you can build a simple "hello world" app.
  2. Build the project (from server or client dir):
    cargo build --release
  3. Run as Administrator:
    cargo run --release

Help, support and contributions

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