Re: [PATCH v2] platform/x86: acer-wmi: Add support for Acer Nitro ANV15-51
From: Justin Vargas
Date: Fri Jul 31 2026 - 03:17:37 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".
Happy to. Based on sensors output with predator_v4=1 loaded, this machine has
two fans (fan1 and fan2 under acer-isa-0ace), so the quirk would be:
static struct quirk_entry quirk_acer_nitro_anv15_51 = {
.cpu_fans = 1,
.gpu_fans = 1,
.predator_v4 = 1,
.pwm = 1,
};
On testing: this laptop runs Windows day to day, and my earlier results came
from a live USB session, which turns out not to work for loading a self-built
module - the live image's kernel and the current repo headers are different
versions. I'm setting up a persistent Linux install on a separate drive so I
can build and load a patched module properly, but I've hit some snags there.
So it will likely be about a week before I can report back on fan control. If
you'd rather not wait, I'm equally happy for the patch to go in as tested with
&quirk_acer_predator_v4, and to follow up with a separate patch adding the fan
fields once I've verified them.
Either way I'll report back with results rather than leaving it open.
Thanks,
Justin
On Thu, Jul 30, 2026 at 10:05 AM Justin Vargas <justinyvar@xxxxxxxxx> wrote:
>
> > 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",