Re: [PATCH v2] platform/x86: acer-wmi: Add support for Acer Nitro ANV15-51
From: Justin Vargas
Date: Thu Jul 30 2026 - 10:05:45 EST
> can you create a custom quirk entry and check if controlling the CPU/GPU fans
> works? For this you need to fill-in the number of CPU/GPU fans inside struct
> quirk_entry and set "pwm" to "1".
>
> I think fo something like "quirk_acer_predator_ph16_72", just without ".tubo = 1".
Sure. The machine has two fans - with predator_v4=1 loaded, sensors reports
fan1 and fan2 under acer-isa-0ace - so I'll use:
static struct quirk_entry quirk_acer_nitro_anv15_51 = {
.cpu_fans = 1,
.gpu_fans = 1,
.predator_v4 = 1,
.pwm = 1,
};
One note on timing: this laptop runs Windows day to day and I've been testing
from a live USB, so I need to set up an environment that can build and load a
patched module on the hardware before I can report back on fan control. That
may take me a few days, but I'll follow up with results either way, and send a
v3 once I can confirm whether PWM control works.
Thanks for the quick review,
Justin
On Thu, Jul 30, 2026 at 5:17 AM Armin Wolf <W_Armin@xxxxxx> wrote:
>
> Am 30.07.26 um 01:51 schrieb Justin Vargas:
>
> > The Acer Nitro ANV15-51 uses the Predator V4 WMI interface for thermal
> > profile handling and hardware monitoring, but has no quirk entry, so
> > these features are only available when the predator_v4 module parameter
> > is passed manually.
> >
> > 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.
>
> Hi,
>
> can you create a custom quirk entry and check if controlling the CPU/GPU fans
> works? For this you need to fill-in the number of CPU/GPU fans inside struct quirk_entry
> and set "pwm" to "1".
>
> I think fo something like "quirk_acer_predator_ph16_72", just without ".tubo = 1".
>
> Thanks,
> Armin Wolf
>
> > Assisted-by: Claude:claude-opus-5
> > Signed-off-by: Justin Vargas <justinyvar@xxxxxxxxx>
> > Tested-by: Justin Vargas <justinyvar@xxxxxxxxx>
> > ---
> > v2: Add Assisted-by trailer per
> > Documentation/process/coding-assistants.rst. No change to the code.
> >
> > Tested on an Acer Nitro ANV15-51, BIOS V1.60 (04/08/2026),
> > kernel 7.0.11-1-cachyos:
> >
> > $ sudo dmidecode -s system-product-name
> > Nitro ANV15-51
> >
> > $ sudo modprobe acer_wmi predator_v4=1
> > $ cat /sys/firmware/acpi/platform_profile_choices
> > low-power quiet balanced balanced-performance performance
> >
> > Writing low-power, quiet, balanced and balanced-performance all succeed
> > and audibly change fan behaviour. Writing performance is rejected by the
> > firmware, consistent with the supported profiles bitmap (0x0A) reading
> > 0x53, i.e. bit 5 (turbo) clear.
> >
> > hwmon works: sensors reports acer-isa-0ace with fan1 3024 RPM,
> > fan2 2685 RPM, temp1 +48.0 C.
> >
> > 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 | 9 +++++++++
> > 1 file changed, 9 insertions(+)
> >
> > diff --git a/drivers/platform/x86/acer-wmi.c b/drivers/platform/x86/acer-wmi.c
> > index e0eaaefb13d..a7290f85166 100644
> > --- a/drivers/platform/x86/acer-wmi.c
> > +++ b/drivers/platform/x86/acer-wmi.c
> > @@ -662,6 +662,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_predator_v4,
> > + },
> > {
> > .callback = dmi_matched,
> > .ident = "Acer Predator PH315-53",