u/Hb_W

After digging through ACPI tables and WMI interfaces I managed to get full independent fan speed control working on the Alienware 16X Aurora on Arch Linux.

Dell hides fan control in a proprietary SSDT called AWCCTABL. By decompiling it with iasl and reverse engineering the WMAX ACPI method, I found the exact protocol.

CPU fan at 100%:

echo '\_SB.AMWW.WMAX 0 0x15 {0x02,0x32,0x64,0x00}' > /proc/acpi/call

GPU fan at 100%:

echo '\_SB.AMWW.WMAX 0 0x15 {0x02,0x33,0x64,0x00}' > /proc/acpi/call

Where the third byte is the speed from 0x00 (0%) to 0x64 (100%).

Thermal profiles also work:

echo '\_SB.AMWW.WMAX 0 0x15 {0x01,0xA0,0x00,0x00}' > /proc/acpi/call # Balanced

echo '\_SB.AMWW.WMAX 0 0x15 {0x01,0xA1,0x00,0x00}' > /proc/acpi/call # Performance

echo '\_SB.AMWW.WMAX 0 0x15 {0x01,0xA3,0x00,0x00}' > /proc/acpi/call # Quiet

echo '\_SB.AMWW.WMAX 0 0x15 {0x01,0xAB,0x00,0x00}' > /proc/acpi/call # Game Shift

Built a GTK4 GUI app with real working sliders on top of it. Full project with installation instructions on GitHub:

https://github.com/Hugo2049/alienware-16x-fan-control

The methodology should work on other Alienware models — the ACPI path and fan IDs might differ but the approach of dumping ACPI tables with acpidump and decompiling with iasl is the same.

Note: reverse engineering methodology worked out with assistance from Claude (Anthropic).

u/Hb_W — 17 days ago