CryoThe command center Alienware never shipped for Linux
Fan curves, G-Mode, AlienFX, and live thermals for Alienware laptops — a root daemon on the in-kernel driver, a Qt command center, and cryoctl. No acpi_call. No Windows.
$ git clone https://github.com/I4cTime/cryo.git && cd cryo && sudo ./packaging/install.sh
One machine, done properly
Everything AWCC did — and the parts it didn't
The honest comparison
Why Cryo instead of echo-ing into sysfs?
Alienware Command Center never shipped for Linux — and even on Windows it has no real fan curves, no game-aware profile switching, and no thermal failsafe. Cryo builds all three on the in-kernel alienware-wmi driver, so there's not a single ACPI hack in the stack.
| Capability | Cryo | AWCC (Windows) | Bare sysfs |
|---|---|---|---|
Runs on LinuxAWCC is Windows-only; the m18's Linux story is echoing values into sysfs | |||
Power-mode switchingSix modes mapped to kernel platform profiles | |||
True custom fan curvesTemp→boost points, linear interpolation, 3 °C hysteresis | |||
Game-aware auto profilesNVML state machine enters G-Mode, restores your profile after | |||
Thermal failsafeGuard forces 100% boost at CPU ≥ 88 °C / GPU ≥ 85 °C — in any profile | |||
AlienFX keyboard lightingRaw HID — 8 effects, 4 zones, brightness, restored on boot | |||
Live telemetry + tray1 Hz temps, fans, dGPU load, sparklines, session peaks | |||
No fragile ACPI hacksIn-kernel alienware-wmi driver only — no acpi_call, no out-of-tree modules | — | ||
Free + open source | GPL-3.0 | — |
Comparison reflects AWCC as shipped for Windows and a hand-rolled sysfs setup, at Cryo v0.1.0.
What ships in Cryo
The full command center
Everything the daemon does for the m18 — thermals, GameSense, lighting, telemetry. Click any feature to see how it actually works.
Thermals, on your terms
Six power modes
Every mode is a real kernel platform profile applied through the alienware-wmi driver — the same mechanism the firmware respects, not a userspace guess.
Cool
Prioritizes low temperatures — fans lead, clocks follow. For hot rooms and long compile days.
Quiet
Keeps the fans as close to inaudible as the silicon allows. The default on battery.
Balanced
The everyday profile — sensible thermals without leaving performance on the table. The default on AC.
Performance
Sustained heavy load without going full jet engine.
G-Mode
Maximum cooling and clocks — what the dedicated G-key toggles. Game detection enters it automatically.
Custom
Your fan curves take the wheel — per-fan-group temp→boost curves with hysteresis.
The chips show the Cryo mode → kernel platform profile mapping. CPU Turbo is a separate toggle (cryoctl turbo on|off) via intel_pstate, independent of the active mode.
Custom mode
Fan curves with a failsafe
In Custom mode, each fan group follows its own temp→boost curve with linear interpolation between points. Thermal Guard sits above all of it — in every profile.
Default curves · temp °C → fan boost %
Dashed red lines are the Thermal Guard trip points. Curves use a 3 °C hysteresis dead zone so fans never see-saw around a threshold, and boost writes under 5 points are suppressed to spare the EC.
Thermal Guard
Active in every profile- Trips when CPU reaches 88 °C or GPU reaches 85 °C — even in Quiet mode, even mid-curve.
- Forces 100% fan boost on both groups, outranking custom curves and manual boosts.
- Releases only once both temps drop 10 °C below their trip points, then restores the boosts that were active before.
- Shows itself as a red GUARD badge in the GUI and tray — you always know why the fans went loud.
GameSense
A state machine, not a utilization guess
Spiking the dGPU with a browser or a compile shouldn't spin the fans to max. Cryo only calls it a game when a process passes every gate — and holds the state through loading screens.
Enters GAMING when all hold
- dGPU graphics process (not compute)
- not on the ignore list
- ≥ 400 MB VRAM allocated
- ≥ 50% dGPU load sustained for 10 s
Exits back when either holds
- process exits, or
- ≤ 20% dGPU load sustained for 45 s
On exit
- your previous profile returns
- manual picks are never fought
Exact basenames, never substrings. The ignore list matches full lowercase process basenames — so ignoring gnome-shell can never accidentally swallow a game whose name merely contains it.
Degrades gracefully. No NVIDIA driver, no NVML, no problem — game detection simply switches off while profiles, curves, Guard, lighting, and telemetry keep working.
AlienFX, minus Windows
Keyboard lighting, raw HID
Cryo reimplements the AlienFX protocol directly — 33-byte SET_REPORT packets to the 4-zone keyboard controller. 8 effects, brightness control, and your state restored on every boot.
The Quantum effect · 3 s cyan↔violet morph
Quantum is Cryo's signature preset — the same cyan↔violet pair as the brand mark and this site's palette. Set it with cryoctl light quantum.
Brightness is a separate control (cryoctl brightness 80) and persists — the daemon restores effect, color, and brightness on boot.
The signature effect — a 3-second morph between brand cyan and violet.
One solid color, any RGB value.
A slow fade in and out of your color.
Cycles the full hue wheel across all zones together.
Each zone takes a different hue, rotating around the wheel.
Color sweeps across the four zones left to right.
A pulse of color ping-pongs across the zones.
Lights out. The only correct effect at 3 a.m.
Under the hood
Architecture
One root daemon owns the hardware; everything else is a thin client on a Unix socket. Hover any module to see what it does.
# any client — group-owned socket, mode 0660 {"op":"set_profile","profile":"gmode"} {"ok":true,"profile":"gmode"} # subscribe → the daemon pushes telemetry at 1 Hz {"op":"subscribe"} {"cpu_temp":62,"gpu_temp":54,"fans":[2100,2080,1950,1930],...}
Quick Start
Clone, install, done — the installer sets up the venv, the daemon, and the desktop entry.
You'll need
- alienware-wmi kernel driverAll thermal I/O goes through the in-kernel driver over sysfs — no acpi_call, no out-of-tree modules.
- NVIDIA proprietary driverGame detection reads dGPU process state via NVML. Without it, Cryo degrades gracefully — everything else keeps working.
- Python 3.12+The daemon, GUI, and CLI are Python 3.12 on PySide6/Qt 6.
- uvThe installer provisions an isolated uv venv — no system pip pollution.
$ git clone https://github.com/I4cTime/cryo.git && cd cryo && sudo ./packaging/install.sh
- 1Clone the repo. git clone https://github.com/I4cTime/cryo.git — the daemon, GUI, and CLI live in one tree.
- 2Run the installer. sudo ./packaging/install.sh installs a uv-managed venv, /etc/cryo, the cryod systemd unit, and a desktop entry.
- 3Launch. cryod starts under systemd; open the Cryo desktop app or run cryoctl status from any terminal.
Then meet cryoctl — the first five commands worth learning.
# Snapshot of the daemon state $ cryoctl status
Developed on the Alienware m18 R2, designed for the alienware-wmi family: the daemon probes what your machine supports and the UI renders only what exists. On other models, run cryoctl doctor, file a model report — and watch your temps on first runs.
Common questions
Frequently asked
Everything you might want to know before handing your thermals to a daemon. Not covered? Open an issue on GitHub and we'll add it.
Still curious? Open a question and we'll add it.
Your m18 runs Linux.
Now it runs cold.
One installer, one daemon, zero ACPI hacks. Fan curves, G-Mode, AlienFX, and live thermals — everything AWCC should have been, on the OS it never shipped for.
$ git clone https://github.com/I4cTime/cryo.git && cd cryo && sudo ./packaging/install.sh
Free under GPL-3.0-or-later. No accounts. No telemetry. One machine, done properly.
More from the studio: i4c.studio · q-ring · ProtonShift · MineUI