Re: [PATCH v2] platform/x86: acer-wmi: Add support for Acer Nitro ANV15-51

Justin Vargas <[email protected]> Thu, 30 Jul 2026 10:05:27 -0400
Newsgroups org.kernel.vger.platform-driver-x86,org.kernel.vger.linux-kernel
Message-ID <CADkD=u565J=YACh5j8WDiB6kxGrr_2zb+9WpOEQbuYEZBrSGgg@mail.gmail.com>
> 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 str=
uct
> quirk_entry and set "pwm" to "1".
>
> I think fo something like "quirk_acer_predator_ph16_72", just without ".t=
ubo =3D 1".

Sure. The machine has two fans - with predator_v4=3D1 loaded, sensors repor=
ts
fan1 and fan2 under acer-isa-0ace - so I'll use:

static struct quirk_entry quirk_acer_nitro_anv15_51 =3D {
    .cpu_fans =3D 1,
    .gpu_fans =3D 1,
    .predator_v4 =3D 1,
    .pwm =3D 1,
};

One note on timing: this laptop runs Windows day to day and I've been testi=
ng
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. Tha=
t
may take me a few days, but I'll follow up with results either way, and sen=
d a
v3 once I can confirm whether PWM control works.

Thanks for the quick review,
Justin


On Thu, Jul 30, 2026 at 5:17=E2=80=AFAM Armin Wolf <[email protected]> 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 str=
uct quirk_entry
> and set "pwm" to "1".
>
> I think fo something like "quirk_acer_predator_ph16_72", just without ".t=
ubo =3D 1".
>
> Thanks,
> Armin Wolf
>
> > Assisted-by: Claude:claude-opus-5
> > Signed-off-by: Justin Vargas <[email protected]>
> > Tested-by: Justin Vargas <[email protected]>
> > ---
> > 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=3D1
> >    $ 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 th=
e
> > 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 switch=
es
> > 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/ace=
r-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 =3D {
> >               },
> >               .driver_data =3D &quirk_acer_nitro_an515_58,
> >       },
> > +     {
> > +             .callback =3D dmi_matched,
> > +             .ident =3D "Acer Nitro ANV15-51",
> > +             .matches =3D {
> > +                     DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
> > +                     DMI_MATCH(DMI_PRODUCT_NAME, "Nitro ANV15-51"),
> > +             },
> > +             .driver_data =3D &quirk_acer_predator_v4,
> > +     },
> >       {
> >               .callback =3D dmi_matched,
> >               .ident =3D "Acer Predator PH315-53",