Re: [PATCH v2] platform/x86: acer-wmi: Add support for Acer Nitro ANV15-51
From: Justin Vargas
Date: Mon Aug 17 2026 - 20:53:25 EST
Sorry for the delay - my "about a week" was optimistic, and life got busy with
other stuff.
Still on it though. The hold-up is getting a Linux install onto this machine
that can actually build and load a module: the live USB route doesn't work
(its kernel and the current repo headers are different versions), and my
dual-boot attempt ran into Acer firmware weirdness with the bootloader.
If you'd rather not sit on the patch, I'm happy for it to go in as tested with
&quirk_acer_predator_v4, and to send the fan fields as a follow-up patch once
I can verify them. Otherwise I'll report back once I have results.
Thanks,
Justin
On Fri, Jul 31, 2026 at 3:15 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".
>
> 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",