Skip to content
Guide

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.

PartThis unit
Model, BIOSAlienware m18 R2, BIOS 1.24.0
CPUIntel Core i9-14900HX (32 threads, 5.8 GHz max)
dGPUNVIDIA GeForce RTX 4080 Laptop GPU, 12 GB, proprietary driver 615.78.08
Distro, kernelArch 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:

KernelWhat it adds on the m18 R2
6.13Thermal profiles through the platform-profile API, with G-Mode off for this model
6.14Per-driver nodes under /sys/class/platform-profile/
6.16The alienware_wmi hwmon device: fan RPM, CPU and GPU temperatures, fan boost
7.0The 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

sh
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 custom

Six 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

sh
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°C

Two 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:

sh
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 MiB

In hybrid graphics the dGPU can sleep in D3cold, and its temperature reading goes with it.

CPU cap and turbo knobs

sh
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
# 100

intel_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:

sh
lsusb | grep -E '187c|0d62'
# ... ID 0d62:aab1 Darfon Electronics Corp. Keyboard
# ... ID 187c:0551 Alienware Corporation AW-ELC

The 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-wmi has 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 the custom profile.
  • dell_smm fan control. dell-smm-hwmon also loads on this unit with its own pwm1 to pwm4. 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)AveragePeak
CPU temperature76.7 °C99 °C
GPU temperature63.6 °C74 °C
GPU power116.1 W167.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

sh
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:

sh
powerprofilesctl version
# client: 0.30
# daemon: 0.30
powerprofilesctl list
#   balanced:
#     CpuDriver:	intel_pstate
#     PlatformDriver:	placeholder

placeholder 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

AreaA stock kernel 7.0 or newer gives youWhat you add
Power profilesSix profiles, writable as rootSomething to own the file: AC and battery rules, game rules
Fan and temperature readingssensors: four fans, CPU and GPUHistory and logging, if you want them
Fan controlfan*_boost above the firmware tableCurves and an emergency trip need a loop polling temperatures
G-ModeThe performance profileA key binding, game detection
Chassis lights, keyboardWhatever the firmware last ranA userspace AW-ELC and Darfon tool
dGPU telemetrynvidia-smi with the proprietary driverPer-process VRAM, game detection
CPU cap, turbomax_perf_pct (reset at reboot), no_turboA per-mode cap that survives switches and resume
After suspendProfile may change, lighting handle droppedA 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 runs cryoctl reapply after 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:

sh
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 here

To 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.