Re: [PATCH v2] platform/x86: acer-wmi: Add support for Acer Nitro ANV15-51
Justin Vargas <[email protected]>
| Newsgroups | org.kernel.vger.platform-driver-x86,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <CADkD=u5e7D9WMKU5qmkeNsf-nOtRRQV_TmCENF_V4qd4tptdmg@mail.gmail.com> |
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 <[email protected]> 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 <[email protected]> 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 <[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 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 <[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=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",