leonmaxx / asus_fanmode

Daemon that controls Fan Boost Mode automatically on ASUS TUF laptops
BSD 2-Clause "Simplified" License
51 stars 7 forks source link

asus_fanmode does not update temperatures #19

Open logical-and opened 1 year ago

logical-and commented 1 year ago

Steps to reproduce:

  1. Start service, make sure it's started by systemctl status asus_fanmode
  2. Run stress tool to heat the CPU (I used stress --cpu 30)
  3. Wait CPU temperature is high, 80 C

Expected: The service switches profile to overboost

Actual result:

and@glados:~/$ cat /sys/devices/platform/asus-nb-wmi/throttle_thermal_policy
0

Configuration:


# Path to CPU temperature input
#  Daemon will try to find it automatically
#  If it doesn't uncomment and set proper path
# cpu_temp = /sys/class/hwmon/hwmon3/temp1_input

cpu_temp_divider = 1000

# Path to fan boost mode or throttle thermal policy
#  Daemon will try to find it automatically
#  If it doesn't uncomment and set proper path
fan_mode = /sys/devices/platform/asus-nb-wmi/throttle_thermal_policy

# Modes
mode_silent    = 2
mode_normal    = 0
mode_overboost = 1

# Poll interval in milliseconds
poll = 500

# High - temperature at which mode is enabled
# Low  - temperature at which mode switches back
normal_high = 69
normal_low  = 40

overboost_high = 95
overboost_low  = 70

It looks like the service does not get updates on temperature

Apr 10 15:58:04 glados asus_fanmode[219456]: Current Fan Mode: Normal
Apr 10 15:58:04 glados asus_fanmode[219456]: Current CPU temperature: 53
Apr 10 15:58:04 glados asus_fanmode[219456]: Found CPU hwmon: /sys/class/hwmon/hwmon4/temp1_input
Apr 10 15:58:04 glados systemd[1]: Started ASUS Fan Mode Service.

Any ideas, how it could be fixed?

P.S. I tested /sys/devices/platform/asus-nb-wmi/throttle_thermal_policy, it works on my laptop. When it's set to 1 (boost mode), it speeds up fan to 3000-4500 rpm

logical-and commented 1 year ago

Got it figured, after reading the source code. High and low values in config should be the same. My updated config that works:


# Path to CPU temperature input
#  Daemon will try to find it automatically
#  If it doesn't uncomment and set proper path
# cpu_temp = /sys/class/hwmon/hwmon3/temp1_input

cpu_temp_divider = 1000

# Path to fan boost mode or throttle thermal policy
#  Daemon will try to find it automatically
#  If it doesn't uncomment and set proper path
fan_mode = /sys/devices/platform/asus-nb-wmi/throttle_thermal_policy

# Modes
mode_silent    = 2
mode_normal    = 0
mode_overboost = 1

# Poll interval in milliseconds
poll = 500

# High - temperature at which mode is enabled
# Low  - temperature at which mode switches back
normal_high = 45
normal_low  = 45

overboost_high = 75
overboost_low  = 75

Ranges accordingly to this config:

To check thermal policy works for me I used the following:

echo 1 | sudo tee /sys/devices/platform/asus-nb-wmi/throttle_thermal_policy

(boost mode)