[PATCH v3] platform/x86: acer-wmi: Add support for Acer Nitro ANV15-51
From: Justin Vargas
Date: Wed Aug 19 2026 - 00:18:38 EST
The Acer Nitro ANV15-51 uses the Predator V4 WMI interface for thermal
profile handling, hardware monitoring and fan control, but has no quirk
entry, so none of these features are available.
Add a quirk entry for this model.
Note that this machine does not support the turbo thermal profile: its
supported profiles bitmap (misc setting 0x0A) reads 0x53, and writing
PLATFORM_PROFILE_PERFORMANCE is rejected by the firmware. The four
remaining profiles work as expected.
Assisted-by: Claude:claude-opus-5
Signed-off-by: Justin Vargas <justinyvar@xxxxxxxxx>
Tested-by: Justin Vargas <justinyvar@xxxxxxxxx>
---
v3: Use a model-specific quirk_entry with cpu_fans, gpu_fans and pwm
set, as suggested by Armin Wolf, instead of reusing
quirk_acer_predator_v4. Fan control is now tested (see below).
v2: Add Assisted-by trailer per
Documentation/process/coding-assistants.rst.
Tested on an Acer Nitro ANV15-51, BIOS V1.60 (04/08/2026), by building
this patch as an out-of-tree acer-wmi module against kernel
7.1.8-1-cachyos and loading it on the machine.
Thermal profiles:
$ cat /sys/firmware/acpi/platform_profile_choices
low-power quiet balanced balanced-performance performance
low-power, quiet, balanced and balanced-performance all apply
successfully and audibly change fan behaviour. Writing performance
fails with -EIO, consistent with the supported profiles bitmap
(misc setting 0x0A) reading 0x53, i.e. bit 5 (turbo) clear.
hwmon and fan control, via the acer hwmon device:
pwm_enable pwm fan1 (CPU) fan2 (GPU)
2 (auto) 229 2311 RPM 2057 RPM
1 (manual) 255 8167 RPM 2077 RPM
1 (manual) 128 4482 RPM 2065 RPM
Setting pwm2 to 255 raised fan2 to 7284 RPM while fan1 was unaffected,
so the two fans are independently controllable. Restoring
pwm1_enable/pwm2_enable to 2 returned both fans to automatic control
(2267 / 2000 RPM at idle).
temp1_input, temp2_input and temp3_input are also exposed.
The WMI mechanism was cross-checked on Windows, where NitroSense switches
profiles via SetGamingMiscSetting with index 0x0B and the same profile
values used by this driver.
The analysis and patch were produced with AI assistance (see the
Assisted-by trailer); all testing was performed by me on the physical
machine, and I take responsibility for the patch as signed off above.
drivers/platform/x86/acer-wmi.c | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/drivers/platform/x86/acer-wmi.c b/drivers/platform/x86/acer-wmi.c
index e0eaaefb13d..86c212df49f 100644
--- a/drivers/platform/x86/acer-wmi.c
+++ b/drivers/platform/x86/acer-wmi.c
@@ -466,6 +466,13 @@ static struct quirk_entry quirk_acer_predator_ph315_53 = {
.gpu_fans = 1,
};
+static struct quirk_entry quirk_acer_nitro_anv15_51 = {
+ .cpu_fans = 1,
+ .gpu_fans = 1,
+ .predator_v4 = 1,
+ .pwm = 1,
+};
+
static struct quirk_entry quirk_acer_predator_ph16_72 = {
.turbo = 1,
.cpu_fans = 1,
@@ -662,6 +669,15 @@ static const struct dmi_system_id acer_quirks[] __initconst = {
},
.driver_data = &quirk_acer_nitro_an515_58,
},
+ {
+ .callback = dmi_matched,
+ .ident = "Acer Nitro ANV15-51",
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
+ DMI_MATCH(DMI_PRODUCT_NAME, "Nitro ANV15-51"),
+ },
+ .driver_data = &quirk_acer_nitro_anv15_51,
+ },
{
.callback = dmi_matched,
.ident = "Acer Predator PH315-53",
--
2.47.3