Re: [PATCH v11] asus-wmi: Add support for custom fan curves

Luke Jones
2021-09-28T11:59:32Z

On Tue, Sep 28 2021 at 13:56:05 +0200, Hans de Goede
<hdegoede@redhat.com> wrote:
> Hi,
>
> On 9/28/21 1:43 PM, Luke Jones wrote:
>> Sure, the path is similar to
>> /sys/devices/platform/asus-nb-wmi/hwmon/hwmon4/pwm1_enable where
>> hwmon4 will likely be different depending on init, and pwm2_enable
>> is the second fan if it exists. The values are 1,2,3 - where 1 = fan
>> curve enabled/manual, 2 = auto. 3 here is custom extra that writes
>> default curve back then defaults to 2.
>>
>> As I understand it, this should be adhering to the accepted kernel
>> standard, so if you use this for ASUS laptops, then it should carry
>> over to other brands that implement it also.
>
> Ah, so this is a bit different then how I thought this would work
> (this is probably better though).
>
> <snip>
>
>>>> The fans have settings [1,2,3] under pwm<N>_enable:
>>>> 1. Enable and write settings out
>>>> 2. Disable and use factory fan mode
>>>> 3. Same as 2, additionally restoring default factory curve.
>
> Quoting Documentation/hwmon/sysfs-interface.rst
>
> `pwm[1-*]_enable`
> Fan speed control method:
>
> - 0: no fan speed control (i.e. fan at full speed)
> - 1: manual fan speed control enabled (using
> `pwm[1-*]`)
> - 2+: automatic fan speed control enabled
>
> 1 normally means the fans runs at a fixed speed, but you are using it
> for the custom/manual profile, which is still a temp<->pwm table,
> right?
>
> I guess this make sense since full manual control is not supported
> and this keeps "2" aka auto as being the normal factory auto
> setting which is good.
>
> Bastien is this interface usable for p-p-d ?
>
> I guess that it is a bit annoying that you need to figure out
> the # in the hwmon# part of the path, but there will be only
> one hwmon child.
>
> You could also go through /sys/class/hwmon but then you really
> have no idea which one to use. Ideally we would have some way
> to indicate that there is a hmwon class-dev associated with
> /sys/firmware/acpi/platform_profile but as we mentioned before
> we should defer coming up with a generic solution for this
> until we have more then 1 user, so that we hopefully get the
> generic solution right in one go.

If it's at all helpful, I named the interface as
"asus_custom_fan_curve". I use this to verify I have the correct hwmon
for asusctl. Open to suggestions on that.

>
> Regards,
>
> Hans
>
>
>
>
>
>>>>
>>>> Use of 2 means that the curve the user has set is still stored
>>>> and
>>>> won't be erased, but the laptop will be using its default
>>>> auto-fan
>>>> mode. Re-enabling the manual mode then activates the curves
>>>> again.
>>>>
>>>> Notes:
>>>> - pwm<N>_enable = 0 is an invalid setting.
>>>> - pwm is actually a percentage and is scaled on writing to
>>>> device.
>>>
>>> I was trying to update:
>>>
>>> https://gitlab.freedesktop.org/hadess/power-profiles-daemon/-/merge_requests/80
>>> but I don't understand what files I need to check for what values
>>> to
>>> detect whether custom fan curves were used.
>>>
>>> Can you help me out here?
>>>
>>> Also, was this patch accepted in the pdx86 tree?
>>>
>>> Cheers
>>>
>>
>>
>