[PATCH] platform/x86: asus-nb-wmi: add quirk_asus_ignore_fan for UX3405MA

Tim Wassink posted 1 patch 1 month, 2 weeks ago
drivers/platform/x86/asus-nb-wmi.c | 9 +++++++++
1 file changed, 9 insertions(+)
[PATCH] platform/x86: asus-nb-wmi: add quirk_asus_ignore_fan for UX3405MA
Posted by Tim Wassink 1 month, 2 weeks ago
The ASUS Zenbook 14 (UX3405MA) uses a newer WMI interface for thermal
management that does not support the legacy WMI fan control methods.
Currently, this results in ENODEV (-19) errors in dmesg when the driver
attempts to fetch factory fan curve defaults.

Add a quirk to use quirk_asus_ignore_fan to silence these errors and
signal that legacy fan control is intentionally unsupported, as thermal
policies are handled through the platform_profile interface.

Signed-off-by: Tim Wassink <timwassink.dev@gmail.com>
---
 drivers/platform/x86/asus-nb-wmi.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/drivers/platform/x86/asus-nb-wmi.c b/drivers/platform/x86/asus-nb-wmi.c
index 6a62bc5b02fd..eaa8abe506cb 100644
--- a/drivers/platform/x86/asus-nb-wmi.c
+++ b/drivers/platform/x86/asus-nb-wmi.c
@@ -544,6 +544,15 @@ static const struct dmi_system_id asus_quirks[] = {
 		},
 		.driver_data = &quirk_asus_zenbook_duo_kbd,
 	},
+	{
+		.callback = dmi_matched,
+		.ident = "ASUS Zenbook 14 UX3405MA",
+		.matches = {
+			DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
+			DMI_MATCH(DMI_PRODUCT_NAME, "UX3405MA"),
+		},
+		.driver_data = &quirk_asus_ignore_fan,
+	},
 	{
 		.callback = dmi_matched,
 		.ident = "ASUS ROG Z13",
-- 
2.52.0
Re: [PATCH] platform/x86: asus-nb-wmi: add quirk_asus_ignore_fan for UX3405MA
Posted by Denis Benato 1 month, 2 weeks ago
On 12/21/25 22:01, Tim Wassink wrote:
> The ASUS Zenbook 14 (UX3405MA) uses a newer WMI interface for thermal
> management that does not support the legacy WMI fan control methods.
> Currently, this results in ENODEV (-19) errors in dmesg when the driver
> attempts to fetch factory fan curve defaults.
>
> Add a quirk to use quirk_asus_ignore_fan to silence these errors and
> signal that legacy fan control is intentionally unsupported, as thermal
> policies are handled through the platform_profile interface.
It is my understanding that this patch suppresses the error,
while maintaining the current behavior in every other aspect,
correct?
> Signed-off-by: Tim Wassink <timwassink.dev@gmail.com>
> ---
>  drivers/platform/x86/asus-nb-wmi.c | 9 +++++++++
>  1 file changed, 9 insertions(+)
>
> diff --git a/drivers/platform/x86/asus-nb-wmi.c b/drivers/platform/x86/asus-nb-wmi.c
> index 6a62bc5b02fd..eaa8abe506cb 100644
> --- a/drivers/platform/x86/asus-nb-wmi.c
> +++ b/drivers/platform/x86/asus-nb-wmi.c
> @@ -544,6 +544,15 @@ static const struct dmi_system_id asus_quirks[] = {
>  		},
>  		.driver_data = &quirk_asus_zenbook_duo_kbd,
>  	},
> +	{
> +		.callback = dmi_matched,
> +		.ident = "ASUS Zenbook 14 UX3405MA",
> +		.matches = {
> +			DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
> +			DMI_MATCH(DMI_PRODUCT_NAME, "UX3405MA"),
> +		},
> +		.driver_data = &quirk_asus_ignore_fan,
> +	},
>  	{
>  		.callback = dmi_matched,
>  		.ident = "ASUS ROG Z13",
Re: [PATCH] platform/x86: asus-nb-wmi: add quirk_asus_ignore_fan for UX3405MA
Posted by Tim Wassink 1 month, 2 weeks ago
On Sun, Dec 21, 2025 at 10:01 PM Denis Benato <denis.benato@somemail.com> wrote:
> On 12/21/25 22:01, Tim Wassink wrote:
> > The ASUS Zenbook 14 (UX3405MA) uses a newer WMI interface for thermal
> > management that does not support the legacy WMI fan control methods.
> > Currently, this results in ENODEV (-19) errors in dmesg when the driver
> > attempts to fetch factory fan curve defaults.
> >
> > Add a quirk to use quirk_asus_ignore_fan to silence these errors and
> > signal that legacy fan control is intentionally unsupported, as thermal
> > policies are handled through the platform_profile interface.
>
> It is my understanding that this patch suppresses the error,
> while maintaining the current behavior in every other aspect,
> correct?

I am actually not sure anymore if this patch is ok, as it introduces a
trade-off regarding telemetry.

While the patch successfully silences the ENODEV (-19) errors, I have
verified locally that it also inhibits the registration of the fan
telemetry in hwmon. This means the read-only 'fan1_input' (RPM) is no
longer available to the user.

I initially followed the precedent of commit 82cc5c6c624c ("platform/x86:
asus-wmi: Ignore fan on E410MA"), which can be found here:
https://lore.kernel.org/all/20221221-asus-fan-v1-2-e07f3949725b@weissschuh.net/

Now I realize that case was specifically for a fanless system. The
UX3405MA does have a physical fan
which remains functional via the platform_profile (AIPT) interface
after this patch, as confirmed by stress testing.

I thought this quirk was the standard way to handle it, but I am not
so sure anymore.

Best regards,
Tim

On Mon, Dec 22, 2025 at 3:54 AM Denis Benato <benato.denis96@gmail.com> wrote:
>
>
> On 12/21/25 22:01, Tim Wassink wrote:
> > The ASUS Zenbook 14 (UX3405MA) uses a newer WMI interface for thermal
> > management that does not support the legacy WMI fan control methods.
> > Currently, this results in ENODEV (-19) errors in dmesg when the driver
> > attempts to fetch factory fan curve defaults.
> >
> > Add a quirk to use quirk_asus_ignore_fan to silence these errors and
> > signal that legacy fan control is intentionally unsupported, as thermal
> > policies are handled through the platform_profile interface.
> It is my understanding that this patch suppresses the error,
> while maintaining the current behavior in every other aspect,
> correct?
> > Signed-off-by: Tim Wassink <timwassink.dev@gmail.com>
> > ---
> >  drivers/platform/x86/asus-nb-wmi.c | 9 +++++++++
> >  1 file changed, 9 insertions(+)
> >
> > diff --git a/drivers/platform/x86/asus-nb-wmi.c b/drivers/platform/x86/asus-nb-wmi.c
> > index 6a62bc5b02fd..eaa8abe506cb 100644
> > --- a/drivers/platform/x86/asus-nb-wmi.c
> > +++ b/drivers/platform/x86/asus-nb-wmi.c
> > @@ -544,6 +544,15 @@ static const struct dmi_system_id asus_quirks[] = {
> >               },
> >               .driver_data = &quirk_asus_zenbook_duo_kbd,
> >       },
> > +     {
> > +             .callback = dmi_matched,
> > +             .ident = "ASUS Zenbook 14 UX3405MA",
> > +             .matches = {
> > +                     DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
> > +                     DMI_MATCH(DMI_PRODUCT_NAME, "UX3405MA"),
> > +             },
> > +             .driver_data = &quirk_asus_ignore_fan,
> > +     },
> >       {
> >               .callback = dmi_matched,
> >               .ident = "ASUS ROG Z13",
Re: [PATCH] platform/x86: asus-nb-wmi: add quirk_asus_ignore_fan for UX3405MA
Posted by Denis Benato 1 month, 2 weeks ago
On 12/22/25 11:44, Tim Wassink wrote:
> On Sun, Dec 21, 2025 at 10:01 PM Denis Benato <denis.benato@somemail.com> wrote:
>> On 12/21/25 22:01, Tim Wassink wrote:
>>> The ASUS Zenbook 14 (UX3405MA) uses a newer WMI interface for thermal
>>> management that does not support the legacy WMI fan control methods.
>>> Currently, this results in ENODEV (-19) errors in dmesg when the driver
>>> attempts to fetch factory fan curve defaults.
>>>
>>> Add a quirk to use quirk_asus_ignore_fan to silence these errors and
>>> signal that legacy fan control is intentionally unsupported, as thermal
>>> policies are handled through the platform_profile interface.
>> It is my understanding that this patch suppresses the error,
>> while maintaining the current behavior in every other aspect,
>> correct?
> I am actually not sure anymore if this patch is ok, as it introduces a
> trade-off regarding telemetry.
>
> While the patch successfully silences the ENODEV (-19) errors, I have
> verified locally that it also inhibits the registration of the fan
> telemetry in hwmon. This means the read-only 'fan1_input' (RPM) is no
> longer available to the user.
>
> I initially followed the precedent of commit 82cc5c6c624c ("platform/x86:
> asus-wmi: Ignore fan on E410MA"), which can be found here:
> https://lore.kernel.org/all/20221221-asus-fan-v1-2-e07f3949725b@weissschuh.net/
>
> Now I realize that case was specifically for a fanless system. The
> UX3405MA does have a physical fan
> which remains functional via the platform_profile (AIPT) interface
> after this patch, as confirmed by stress testing.
>
> I thought this quirk was the standard way to handle it, but I am not
> so sure anymore.
Hi,

I think what's happening is that asus-nb-wmi is binding multiple devices: for those
that are unsupported the driver returns -ENODEV and the kernel, as a result,
probes successive drivers for those devices that can't be bound.

It's very likely that using that quirk prevents asus-nb-wmi to bind all devices,
and this can very well result in what you are seeing...

The only runtime problem is that an error appears in dmesg, right? The rest is
working from what I can understand from your messages. 
> Best regards,
> Tim
>
> On Mon, Dec 22, 2025 at 3:54 AM Denis Benato <benato.denis96@gmail.com> wrote:
>>
>> On 12/21/25 22:01, Tim Wassink wrote:
>>> The ASUS Zenbook 14 (UX3405MA) uses a newer WMI interface for thermal
>>> management that does not support the legacy WMI fan control methods.
>>> Currently, this results in ENODEV (-19) errors in dmesg when the driver
>>> attempts to fetch factory fan curve defaults.
>>>
>>> Add a quirk to use quirk_asus_ignore_fan to silence these errors and
>>> signal that legacy fan control is intentionally unsupported, as thermal
>>> policies are handled through the platform_profile interface.
>> It is my understanding that this patch suppresses the error,
>> while maintaining the current behavior in every other aspect,
>> correct?
>>> Signed-off-by: Tim Wassink <timwassink.dev@gmail.com>
>>> ---
>>>  drivers/platform/x86/asus-nb-wmi.c | 9 +++++++++
>>>  1 file changed, 9 insertions(+)
>>>
>>> diff --git a/drivers/platform/x86/asus-nb-wmi.c b/drivers/platform/x86/asus-nb-wmi.c
>>> index 6a62bc5b02fd..eaa8abe506cb 100644
>>> --- a/drivers/platform/x86/asus-nb-wmi.c
>>> +++ b/drivers/platform/x86/asus-nb-wmi.c
>>> @@ -544,6 +544,15 @@ static const struct dmi_system_id asus_quirks[] = {
>>>               },
>>>               .driver_data = &quirk_asus_zenbook_duo_kbd,
>>>       },
>>> +     {
>>> +             .callback = dmi_matched,
>>> +             .ident = "ASUS Zenbook 14 UX3405MA",
>>> +             .matches = {
>>> +                     DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
>>> +                     DMI_MATCH(DMI_PRODUCT_NAME, "UX3405MA"),
>>> +             },
>>> +             .driver_data = &quirk_asus_ignore_fan,
>>> +     },
>>>       {
>>>               .callback = dmi_matched,
>>>               .ident = "ASUS ROG Z13",
Re: [PATCH] platform/x86: asus-nb-wmi: add quirk_asus_ignore_fan for UX3405MA
Posted by Tim Wassink 1 month, 2 weeks ago
Hi,

yes the only problem is the error in dmesg, the rest seems to work.

On Tue, Dec 23, 2025 at 2:50 PM Denis Benato <benato.denis96@gmail.com> wrote:
>
>
> On 12/22/25 11:44, Tim Wassink wrote:
> > On Sun, Dec 21, 2025 at 10:01 PM Denis Benato <denis.benato@somemail.com> wrote:
> >> On 12/21/25 22:01, Tim Wassink wrote:
> >>> The ASUS Zenbook 14 (UX3405MA) uses a newer WMI interface for thermal
> >>> management that does not support the legacy WMI fan control methods.
> >>> Currently, this results in ENODEV (-19) errors in dmesg when the driver
> >>> attempts to fetch factory fan curve defaults.
> >>>
> >>> Add a quirk to use quirk_asus_ignore_fan to silence these errors and
> >>> signal that legacy fan control is intentionally unsupported, as thermal
> >>> policies are handled through the platform_profile interface.
> >> It is my understanding that this patch suppresses the error,
> >> while maintaining the current behavior in every other aspect,
> >> correct?
> > I am actually not sure anymore if this patch is ok, as it introduces a
> > trade-off regarding telemetry.
> >
> > While the patch successfully silences the ENODEV (-19) errors, I have
> > verified locally that it also inhibits the registration of the fan
> > telemetry in hwmon. This means the read-only 'fan1_input' (RPM) is no
> > longer available to the user.
> >
> > I initially followed the precedent of commit 82cc5c6c624c ("platform/x86:
> > asus-wmi: Ignore fan on E410MA"), which can be found here:
> > https://lore.kernel.org/all/20221221-asus-fan-v1-2-e07f3949725b@weissschuh.net/
> >
> > Now I realize that case was specifically for a fanless system. The
> > UX3405MA does have a physical fan
> > which remains functional via the platform_profile (AIPT) interface
> > after this patch, as confirmed by stress testing.
> >
> > I thought this quirk was the standard way to handle it, but I am not
> > so sure anymore.
> Hi,
>
> I think what's happening is that asus-nb-wmi is binding multiple devices: for those
> that are unsupported the driver returns -ENODEV and the kernel, as a result,
> probes successive drivers for those devices that can't be bound.
>
> It's very likely that using that quirk prevents asus-nb-wmi to bind all devices,
> and this can very well result in what you are seeing...
>
> The only runtime problem is that an error appears in dmesg, right? The rest is
> working from what I can understand from your messages.
> > Best regards,
> > Tim
> >
> > On Mon, Dec 22, 2025 at 3:54 AM Denis Benato <benato.denis96@gmail.com> wrote:
> >>
> >> On 12/21/25 22:01, Tim Wassink wrote:
> >>> The ASUS Zenbook 14 (UX3405MA) uses a newer WMI interface for thermal
> >>> management that does not support the legacy WMI fan control methods.
> >>> Currently, this results in ENODEV (-19) errors in dmesg when the driver
> >>> attempts to fetch factory fan curve defaults.
> >>>
> >>> Add a quirk to use quirk_asus_ignore_fan to silence these errors and
> >>> signal that legacy fan control is intentionally unsupported, as thermal
> >>> policies are handled through the platform_profile interface.
> >> It is my understanding that this patch suppresses the error,
> >> while maintaining the current behavior in every other aspect,
> >> correct?
> >>> Signed-off-by: Tim Wassink <timwassink.dev@gmail.com>
> >>> ---
> >>>  drivers/platform/x86/asus-nb-wmi.c | 9 +++++++++
> >>>  1 file changed, 9 insertions(+)
> >>>
> >>> diff --git a/drivers/platform/x86/asus-nb-wmi.c b/drivers/platform/x86/asus-nb-wmi.c
> >>> index 6a62bc5b02fd..eaa8abe506cb 100644
> >>> --- a/drivers/platform/x86/asus-nb-wmi.c
> >>> +++ b/drivers/platform/x86/asus-nb-wmi.c
> >>> @@ -544,6 +544,15 @@ static const struct dmi_system_id asus_quirks[] = {
> >>>               },
> >>>               .driver_data = &quirk_asus_zenbook_duo_kbd,
> >>>       },
> >>> +     {
> >>> +             .callback = dmi_matched,
> >>> +             .ident = "ASUS Zenbook 14 UX3405MA",
> >>> +             .matches = {
> >>> +                     DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
> >>> +                     DMI_MATCH(DMI_PRODUCT_NAME, "UX3405MA"),
> >>> +             },
> >>> +             .driver_data = &quirk_asus_ignore_fan,
> >>> +     },
> >>>       {
> >>>               .callback = dmi_matched,
> >>>               .ident = "ASUS ROG Z13",
Re: [PATCH] platform/x86: asus-nb-wmi: add quirk_asus_ignore_fan for UX3405MA
Posted by Denis Benato 1 month, 2 weeks ago
On 12/25/25 00:43, Tim Wassink wrote:
> Hi,
>  
> yes the only problem is the error in dmesg, the rest seems to work.
Then I think we can leave this as-is, unless there is a particular reason
to ensure no errors are being reported in this case.

This is not the only module that does things this way, so I don't think
it's going to be a problem.

Thank you for your time and looking into the matter :)
>
> On Tue, Dec 23, 2025 at 2:50 PM Denis Benato <benato.denis96@gmail.com> wrote:
>>
>> On 12/22/25 11:44, Tim Wassink wrote:
>>> On Sun, Dec 21, 2025 at 10:01 PM Denis Benato <denis.benato@somemail.com> wrote:
>>>> On 12/21/25 22:01, Tim Wassink wrote:
>>>>> The ASUS Zenbook 14 (UX3405MA) uses a newer WMI interface for thermal
>>>>> management that does not support the legacy WMI fan control methods.
>>>>> Currently, this results in ENODEV (-19) errors in dmesg when the driver
>>>>> attempts to fetch factory fan curve defaults.
>>>>>
>>>>> Add a quirk to use quirk_asus_ignore_fan to silence these errors and
>>>>> signal that legacy fan control is intentionally unsupported, as thermal
>>>>> policies are handled through the platform_profile interface.
>>>> It is my understanding that this patch suppresses the error,
>>>> while maintaining the current behavior in every other aspect,
>>>> correct?
>>> I am actually not sure anymore if this patch is ok, as it introduces a
>>> trade-off regarding telemetry.
>>>
>>> While the patch successfully silences the ENODEV (-19) errors, I have
>>> verified locally that it also inhibits the registration of the fan
>>> telemetry in hwmon. This means the read-only 'fan1_input' (RPM) is no
>>> longer available to the user.
>>>
>>> I initially followed the precedent of commit 82cc5c6c624c ("platform/x86:
>>> asus-wmi: Ignore fan on E410MA"), which can be found here:
>>> https://lore.kernel.org/all/20221221-asus-fan-v1-2-e07f3949725b@weissschuh.net/
>>>
>>> Now I realize that case was specifically for a fanless system. The
>>> UX3405MA does have a physical fan
>>> which remains functional via the platform_profile (AIPT) interface
>>> after this patch, as confirmed by stress testing.
>>>
>>> I thought this quirk was the standard way to handle it, but I am not
>>> so sure anymore.
>> Hi,
>>
>> I think what's happening is that asus-nb-wmi is binding multiple devices: for those
>> that are unsupported the driver returns -ENODEV and the kernel, as a result,
>> probes successive drivers for those devices that can't be bound.
>>
>> It's very likely that using that quirk prevents asus-nb-wmi to bind all devices,
>> and this can very well result in what you are seeing...
>>
>> The only runtime problem is that an error appears in dmesg, right? The rest is
>> working from what I can understand from your messages.
>>> Best regards,
>>> Tim
>>>
>>> On Mon, Dec 22, 2025 at 3:54 AM Denis Benato <benato.denis96@gmail.com> wrote:
>>>> On 12/21/25 22:01, Tim Wassink wrote:
>>>>> The ASUS Zenbook 14 (UX3405MA) uses a newer WMI interface for thermal
>>>>> management that does not support the legacy WMI fan control methods.
>>>>> Currently, this results in ENODEV (-19) errors in dmesg when the driver
>>>>> attempts to fetch factory fan curve defaults.
>>>>>
>>>>> Add a quirk to use quirk_asus_ignore_fan to silence these errors and
>>>>> signal that legacy fan control is intentionally unsupported, as thermal
>>>>> policies are handled through the platform_profile interface.
>>>> It is my understanding that this patch suppresses the error,
>>>> while maintaining the current behavior in every other aspect,
>>>> correct?
>>>>> Signed-off-by: Tim Wassink <timwassink.dev@gmail.com>
>>>>> ---
>>>>>  drivers/platform/x86/asus-nb-wmi.c | 9 +++++++++
>>>>>  1 file changed, 9 insertions(+)
>>>>>
>>>>> diff --git a/drivers/platform/x86/asus-nb-wmi.c b/drivers/platform/x86/asus-nb-wmi.c
>>>>> index 6a62bc5b02fd..eaa8abe506cb 100644
>>>>> --- a/drivers/platform/x86/asus-nb-wmi.c
>>>>> +++ b/drivers/platform/x86/asus-nb-wmi.c
>>>>> @@ -544,6 +544,15 @@ static const struct dmi_system_id asus_quirks[] = {
>>>>>               },
>>>>>               .driver_data = &quirk_asus_zenbook_duo_kbd,
>>>>>       },
>>>>> +     {
>>>>> +             .callback = dmi_matched,
>>>>> +             .ident = "ASUS Zenbook 14 UX3405MA",
>>>>> +             .matches = {
>>>>> +                     DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
>>>>> +                     DMI_MATCH(DMI_PRODUCT_NAME, "UX3405MA"),
>>>>> +             },
>>>>> +             .driver_data = &quirk_asus_ignore_fan,
>>>>> +     },
>>>>>       {
>>>>>               .callback = dmi_matched,
>>>>>               .ident = "ASUS ROG Z13",