* [PATCH] platform/x86: acer-wmi: Add support for Acer Nitro ANV15-51
@ 2026-07-29 22:29 Justin Vargas
2026-07-29 23:51 ` [PATCH v2] " Justin Vargas
0 siblings, 1 reply; 5+ messages in thread
From: Justin Vargas @ 2026-07-29 22:29 UTC (permalink / raw)
To: jlee, hansg, ilpo.jarvinen
Cc: W_Armin, platform-driver-x86, linux-kernel, 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.
Signed-off-by: Justin Vargas <justinyvar@gmail.com>
Tested-by: Justin Vargas <justinyvar@gmail.com>
---
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.
Disclosure: this patch and the analysis behind it were produced with the
assistance of an AI model (Anthropic Claude). 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",
--
2.47.3
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH v2] platform/x86: acer-wmi: Add support for Acer Nitro ANV15-51
2026-07-29 22:29 [PATCH] platform/x86: acer-wmi: Add support for Acer Nitro ANV15-51 Justin Vargas
@ 2026-07-29 23:51 ` Justin Vargas
2026-07-30 9:17 ` Armin Wolf
0 siblings, 1 reply; 5+ messages in thread
From: Justin Vargas @ 2026-07-29 23:51 UTC (permalink / raw)
To: jlee, hansg, ilpo.jarvinen
Cc: W_Armin, platform-driver-x86, linux-kernel, 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.
Assisted-by: Claude:claude-opus-5
Signed-off-by: Justin Vargas <justinyvar@gmail.com>
Tested-by: Justin Vargas <justinyvar@gmail.com>
---
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",
--
2.47.3
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH v2] platform/x86: acer-wmi: Add support for Acer Nitro ANV15-51
2026-07-29 23:51 ` [PATCH v2] " Justin Vargas
@ 2026-07-30 9:17 ` Armin Wolf
2026-07-30 14:05 ` Justin Vargas
0 siblings, 1 reply; 5+ messages in thread
From: Armin Wolf @ 2026-07-30 9:17 UTC (permalink / raw)
To: Justin Vargas, jlee, hansg, ilpo.jarvinen
Cc: platform-driver-x86, linux-kernel
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@gmail.com>
> Tested-by: Justin Vargas <justinyvar@gmail.com>
> ---
> 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",
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH v2] platform/x86: acer-wmi: Add support for Acer Nitro ANV15-51
2026-07-30 9:17 ` Armin Wolf
@ 2026-07-30 14:05 ` Justin Vargas
2026-07-31 7:15 ` Justin Vargas
0 siblings, 1 reply; 5+ messages in thread
From: Justin Vargas @ 2026-07-30 14:05 UTC (permalink / raw)
To: Armin Wolf; +Cc: jlee, hansg, ilpo.jarvinen, platform-driver-x86, linux-kernel
> 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@gmx.de> 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@gmail.com>
> > Tested-by: Justin Vargas <justinyvar@gmail.com>
> > ---
> > 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",
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH v2] platform/x86: acer-wmi: Add support for Acer Nitro ANV15-51
2026-07-30 14:05 ` Justin Vargas
@ 2026-07-31 7:15 ` Justin Vargas
0 siblings, 0 replies; 5+ messages in thread
From: Justin Vargas @ 2026-07-31 7:15 UTC (permalink / raw)
To: Armin Wolf; +Cc: jlee, hansg, ilpo.jarvinen, platform-driver-x86, linux-kernel
> 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@gmail.com> 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@gmx.de> 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@gmail.com>
> > > Tested-by: Justin Vargas <justinyvar@gmail.com>
> > > ---
> > > 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",
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2026-07-31 7:15 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-07-29 22:29 [PATCH] platform/x86: acer-wmi: Add support for Acer Nitro ANV15-51 Justin Vargas
2026-07-29 23:51 ` [PATCH v2] " Justin Vargas
2026-07-30 9:17 ` Armin Wolf
2026-07-30 14:05 ` Justin Vargas
2026-07-31 7:15 ` Justin Vargas
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox