CPU power cap
- A per-power-mode ceiling on the CPU's performance state (
intel_pstate max_perf_pct), written on every mode switch and re-asserted after resume.cryoctl cap 90,cryoctl cap gmode 95,cryoctl cap off; a CPU power panel in the GUI (Turbo Boost moved in next to it) with a per-mode slider that reads in this machine's GHz and lists every capped mode;caponcryoctl status's power line. - Measured on the m18 R2 in-game: 90% ≈ 5.2 GHz took the CPU from 56 W and a 96 °C peak to 44 W and 87 °C while the GPU got more headroom. Probed as a capability (
cpu_cap); hidden on amd_pstate.
Fan curve editor
- CPU and GPU curves drawn as charts with the live temperature and the Thermal Guard's trip temperature marked, per-point editing, add/remove, revert/apply, plus hysteresis, minimum step and guard trip/release thresholds — all inside the Fan control panel behind Edit/Done. A Use Custom mode button sits where the panel used to only advise it.
- From the shell:
cryoctl curve cpu 45:0 60:15 70:35 80:60 95:100,cryoctl curve hysteresis 2,cryoctl guard cpu 90,cryoctl guard release 8, pluscurve show/guard show. - Every
set_configpatch is validated before it is merged or saved: 2–8 points with rising temperatures and non-falling boosts, bounded hysteresis/step, guard trips 60–105 °C, caps 10–100. The daemon re-arms curve state and caps after a patch.
Limited mode + hardware verdict (#9)
- A machine whose alienware-wmi driver exposes no hwmon and/or no platform profiles no longer stops cryod. Fans, curves, the guard and power modes are out, but GPU telemetry, game detection, the turbo toggle, the CPU cap and lighting still run where present; every client hides the rest and the GUI shows an amber limited-mode notice.
cryoctl doctorends with a SUPPORTED / PARTIAL / LIMITED / UNSUPPORTED verdict with the reasons, reports the cap control, and exits 2 when unsupported. Only a machine with nothing at all to drive makes cryod log one plain-language reason and exit 78 — listed inRestartPreventExitStatus, so no restart loop.- New page: cryo.i4c.studio/compatibility.
GUI
- Automation's rule line is derived from your config (and the game rule only shows when NVML exists); the header no longer prints the brand twice; the turbo switch re-syncs from telemetry like the other switches.
Config
/etc/cryo/config.jsonis rewritten only when you change a setting from the GUI orcryoctl curve/guard/cap— validated first, and keys you never touched keep tracking new defaults. Newcpu_capsection (enabled,profiles).- Tests 37 → 68.
Upgrading
cd cryo && git pull && sudo ./packaging/install.sh
The installer restarts cryod and installs the updated unit file. Existing config files keep working.
Full Changelog: v0.3.1...v0.4.0