Alienware m18 R2 on Linux: what works, what needs a tool, what does not
A hardware report from the m18 R2 Cryo is built on, running kernel 7.2: what a current kernel gives you, what it leaves to userspace, and how hot it runs in a game.
· 9 min read
The machine behind this report
Everything below was read on one Alienware m18 R2, the machine Cryo is developed on. Every command here is read-only, and the output in the comments is copied from this unit.
| Part | This unit |
|---|---|
| Model, BIOS | Alienware m18 R2, BIOS 1.24.0 |
| CPU | Intel Core i9-14900HX (32 threads, 5.8 GHz max) |
| dGPU | NVIDIA GeForce RTX 4080 Laptop GPU, 12 GB, proprietary driver 615.78.08 |
| Distro, kernel | Arch Linux based, kernel 7.2.15 |
An m18 R2 with a different CPU, GPU or BIOS may behave differently. Treat this as one data point and check your own machine with the same commands.
This report covers thermals, power modes, fans, lighting, GPU telemetry and suspend, because those are what Cryo touches and what could be checked. It says nothing about Wi-Fi, audio, the webcam, the display or battery life.
Kernel versions that matter
The control plane is the mainline alienware-wmi driver, the same firmware interface Alienware Command Center (AWCC) uses on Windows. What it exposes on this model depends on the kernel:
| Kernel | What it adds on the m18 R2 |
|---|---|
| 6.13 | Thermal profiles through the platform-profile API, with G-Mode off for this model |
| 6.14 | Per-driver nodes under /sys/class/platform-profile/ |
| 6.16 | The alienware_wmi hwmon device: fan RPM, CPU and GPU temperatures, fan boost |
| 7.0 | The driver matches this machine through an "Alienware m18" entry with G-Mode on, so performance selects the G-Mode table |
From 6.13 through 6.19 the driver's DMI table matched this machine with G-Mode switched off. If you are on one of those kernels, upgrade before trusting any tool's G-Mode label, Cryo's included. The driver's force_gmode option skips the model check, and it is meant for testing, not as a fix. For the layer-by-layer explanation, see Alienware fan control on Linux.
What works out of the box
Power profiles
cat /sys/class/platform-profile/platform-profile-0/name
# alienware-wmi
cat /sys/class/platform-profile/platform-profile-0/choices
# cool quiet balanced balanced-performance performance customSix profiles. The AWCC names map onto them with one twist: balanced-performance is AWCC's Performance, and performance is G-Mode. custom is the profile for manual fan boost. Writing a profile takes root and lasts until something else writes the file, a reboot, or sometimes a suspend. The G-Mode guide covers the profile table and the G-key.
Four fans and two temperatures
sensors alienware_wmi-virtual-0
# CPU Fan: 1798 RPM (min = 0 RPM, max = 3700 RPM)
# CPU Fan: 0 RPM (min = 0 RPM, max = 6400 RPM)
# GPU Fan: 1818 RPM (min = 0 RPM, max = 3500 RPM)
# GPU Fan: 2770 RPM (min = 0 RPM, max = 5900 RPM)
# CPU: +74.0°C
# GPU: +45.0°CTwo CPU fans and two GPU fans, each with a fan*_boost file (0 to 255) and no pwm* file. Two things on this unit worth knowing before you worry. The second CPU fan read 0 RPM at idle, both in this sample and at the end of a logged session, while the other three turned. Under load it was the fastest of the four, reading around 9,000 RPM, which is above the 6,400 RPM maximum the driver reports for it. So 0 RPM at idle is not a dead fan, and the max column is not a hard ceiling.
NVIDIA dGPU telemetry
With the proprietary driver, NVML answers queries and nvidia-smi works:
nvidia-smi --query-gpu=name,driver_version,temperature.gpu,power.draw,pstate --format=csv
# NVIDIA GeForce RTX 4080 Laptop GPU, 615.78.08, 45, 16.66 W, P4
nvidia-smi --query-gpu=power.default_limit,power.max_limit,memory.total --format=csv
# 125.00 W, 175.00 W, 12282 MiBIn hybrid graphics the dGPU can sleep in D3cold, and its temperature reading goes with it.
CPU cap and turbo knobs
cat /sys/devices/system/cpu/intel_pstate/status
# active
cat /sys/devices/system/cpu/intel_pstate/no_turbo /sys/devices/system/cpu/intel_pstate/max_perf_pct
# 0
# 100intel_pstate is the CPU driver, so max_perf_pct caps the top performance state and no_turbo turns turbo off. A max_perf_pct write resets at reboot. Why you would cap a 14900HX is its own guide: the CPU cap for gaming.
What needs a tool
Lighting. The kernel has no driver for this machine's lights. The lighting interface inside alienware-wmi is the legacy one, for machines from before 2018. Here the lights are two USB devices:
lsusb | grep -E '187c|0d62'
# ... ID 0d62:aab1 Darfon Electronics Corp. Keyboard
# ... ID 187c:0551 Alienware Corporation AW-ELCThe AW-ELC controller drives four chassis zones: the two rear exhaust rings, the lid logo and the power button. The per-key keyboard backlight is the separate Darfon device. Both show up only as root-only /dev/hidraw* nodes (mode 0600 here), and without a userspace tool they keep whatever the firmware last ran. Protocols and effects are in AlienFX lighting on Linux.
The G-key. It sends a keycode, and nothing acts on it by default. Binding it is covered in the G-Mode guide.
Anything that should persist or react. The kernel sets a profile when asked and never again. Switching on AC or battery, entering G-Mode for a game, and putting settings back after suspend all need something running in the background.
What does not work
- Setting a fan speed.
alienware-wmihas no duty-cycle control. Boost pushes a fan above what the firmware table wants and never below it. The kernel documentation adds that on some devices boost only works reliably in thecustomprofile. dell_smmfan control.dell-smm-hwmonalso loads on this unit with its ownpwm1topwm4. It is a different control plane from the one AWCC used. The fan-control guide explains why not to force it.- Undervolting. Recent Dell BIOSes lock the voltage-offset interface, so undervolt tools return errors.
Thermal behavior to expect
The CPU is the part that runs hot. The GPU stays well inside its limits. The longest session logged on this unit (cryoctl watch --log, Icarus, 2026-09-12, a Cryo build from before 0.3.0) had game detection holding G-Mode for 4,752 one-second samples:
| Metric (G-Mode, in game) | Average | Peak |
|---|---|---|
| CPU temperature | 76.7 °C | 99 °C |
| GPU temperature | 63.6 °C | 74 °C |
| GPU power | 116.1 W | 167.0 W |
The CPU was at or above 88 °C, Thermal Guard's default trip, in 602 of those samples. The guard was engaged for nearly the whole session, and with it holding the fans up the four averaged about 4,200, 8,960, 4,340 and 6,620 RPM. The GPU peak stayed 11 °C under its own default trip of 85 °C.
Fans barely move the CPU peak. Capping max_perf_pct does. In a 90-second in-game comparison on this unit, a cap of 90 took the CPU package from 56 W average and a 96 °C peak to 44 W and 87 °C. The CPU cap guide has the full numbers and their caveats.
Suspend and resume
cat /sys/power/mem_sleep
# [s2idle]This unit offers only s2idle. Two things can change across a suspend. Firmware can come back in a different platform profile, and USB re-enumeration drops any open handle to the lighting controller. A tool that owns these settings has to re-apply them on resume, or you will see the profile change while you were away.
power-profiles-daemon
If your desktop's power-mode switch goes through power-profiles-daemon (ppd), check what it drives. On this unit:
powerprofilesctl version
# client: 0.30
# daemon: 0.30
powerprofilesctl list
# balanced:
# CpuDriver: intel_pstate
# PlatformDriver: placeholderplaceholder means ppd found no platform driver it knows. It adjusts intel_pstate energy preferences and leaves the alienware-wmi profile alone, so it does not fight anything that writes that profile. If a future ppd lists a real platform driver here, there are two writers to one file and the last one wins.
Stock install vs what you add
| Area | A stock kernel 7.0 or newer gives you | What you add |
|---|---|---|
| Power profiles | Six profiles, writable as root | Something to own the file: AC and battery rules, game rules |
| Fan and temperature readings | sensors: four fans, CPU and GPU | History and logging, if you want them |
| Fan control | fan*_boost above the firmware table | Curves and an emergency trip need a loop polling temperatures |
| G-Mode | The performance profile | A key binding, game detection |
| Chassis lights, keyboard | Whatever the firmware last ran | A userspace AW-ELC and Darfon tool |
| dGPU telemetry | nvidia-smi with the proprietary driver | Per-process VRAM, game detection |
| CPU cap, turbo | max_perf_pct (reset at reboot), no_turbo | A per-mode cap that survives switches and resume |
| After suspend | Profile may change, lighting handle dropped | A resume hook |
Where Cryo fits
Cryo is the right-hand column of that table. It runs a root daemon, cryod, with a CLI, cryoctl, and a desktop app, cryo-gui. It goes through the same alienware-wmi sysfs files shown above, the two USB lighting devices and NVML. There is no acpi_call and no out-of-tree module. If the kernel does not expose something, Cryo does not do it, so it cannot set a fan below the firmware table either.
On this m18 R2 that means:
- Six power modes with AC and battery rules, and game detection that enters G-Mode and restores your previous mode when you quit.
- Fan curves in Custom mode, plus a Thermal Guard in every mode: CPU at 88 °C or GPU at 85 °C raises the fan boost to its top setting, held at least 30 seconds and released 10 °C below trip. See fan curves and Thermal Guard.
- A per-mode CPU cap and a turbo toggle.
- Eight lighting effects on the chassis and the per-key keyboard, restored on boot.
cryod-resume.service, which runscryoctl reapplyafter suspend or hibernate. That reopens the lighting devices, re-asserts the platform profile, re-initializes NVML and re-applies the CPU cap.
Run the doctor first. It needs neither root nor the daemon:
cryoctl doctor
# ...
# fan boost files 4
# ...
# profile choices cool quiet balanced balanced-performance performance custom
# ...
# per-key keyboard (0d62) /dev/hidraw4 (64-byte report)
# nvml NVIDIA GeForce RTX 4080 Laptop GPU
# ...
# verdict SUPPORTED - everything Cryo does is available hereTo install, download the Linux x86_64 installer and follow the quick start. Fan control needs Linux 6.16 or newer, and game detection needs the NVIDIA proprietary driver. Cryo is open source at github.com/I4cTime/cryo. If your m18 R2 differs from this one, the doctor output is what the compatibility table needs.
Next steps
Frequently asked questions
- Which kernel do I need for an Alienware m18 R2?
- Linux 7.0 or newer for the full set. Platform profiles arrived in 6.13 and fan RPM, temperatures and fan boost in 6.16, but until 7.0 the alienware-wmi driver matched the m18 with G-Mode switched off, so the performance profile was not G-Mode.
- Why does one of my m18 R2 fans read 0 RPM?
- On the maintainer's unit the second CPU fan reads 0 RPM at idle while the other three turn, and becomes the fastest of the four under load. Watch sensors alienware_wmi-virtual-0 during a game before assuming it has failed.
- Can I control the m18 R2 keyboard RGB without Windows?
- Yes, from userspace. There is no kernel LED driver for it: the per-key keyboard is a Darfon USB device (0d62:aab1) and the rings, lid logo and power button are an AW-ELC controller (187c:0551), both reached over root-only hidraw nodes. Cryo drives both.
- Does power-profiles-daemon conflict with alienware-wmi on the m18 R2?
- Not with ppd 0.30 on the tested unit. powerprofilesctl list shows PlatformDriver: placeholder, which means it only adjusts intel_pstate energy preferences and leaves the alienware-wmi profile to whatever else writes it.
- Do my settings survive suspend?
- Not reliably. Firmware can resume in a different platform profile and the lighting controller handle is lost when USB re-enumerates. Cryo's cryod-resume.service runs cryoctl reapply after suspend to restore lighting, profile, NVML and the CPU cap.