Fan control utilising hwmon and pid.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

67 lines
2.6 KiB

# This example configuration is creating two thermal zones, one with amdgpu/temp1_input as source,
# the other one with coretemp/temp1_input as source.
# Some options have additional comments for explanation.
# Set target log level. If you have a problem or want to report an issue set this to DEBUG,
# otherwise INFO is a good value.
loglevel: DEBUG
# Frequency in seconds of feeding sensors values into PID. Higher frequency (lower value) means PID can react faster.
# Fans only get set every thermalzones->interval seconds, regardless of this value.
# Must be lower then your lowest thermalzone interval.
pid_interval: 0.2
thermalzones:
- name: GPU+SYSTEM
# This is your source temperature. You can add multiple sources, see thermal zone below for an example.
source: amdgpu/temp1_input
# This is most likely 1000 for your temp sensor as well.
# If not, check what you sensor is outputting if you try to read from it.
factor: 1000
# Frequency in which fan speed should be adjusted in seconds.
# PyFan reads sensors values from hwmon every pid_interval, but only sets fan speeds in this interval.
# Can't be lower then pid_interval.
interval: 3
# Define all fans that this thermal zone is going to control.
# There is no limit to how many fans one thermal zone can control.
# You can have different limitations on your fans, for example:
# - amdgpu/pwm1: 170
# means your GPU fan's pwm1 is never getting set higher than 170, limiting its max. rpm value.
# You can specify an lower limit as well:
# - it8686/pwm1: [100, 200]
# means your fan's pwm is never set under 100, and never over 200.
fan:
- it8686/pwm2
- amdgpu/pwm1: 170
# This is your target temperature. This is one of the main control knobs. Set this to a comfortable temperature for
# your equipment. Don't set this as high as its max temperature allowance, since pid is gonna allow some overshooting.
target: 60
# For understanding PID please have a look at https://en.wikipedia.org/wiki/PID_controller. The aforementioned page
# also explains what p, i and d stand for and what they do in detail. These are the second main control knobs.
# Simplified you can view them as weights for:
# p = difference in temperature (momentarily)
# i = difference in temperature over time
# d = rate of chance in temperature
pid:
p: 1
i: 1
d: 1.5
- name: CPU
source:
- coretemp/temp1_input
- amdgpu/temp1_input
factor: 1000
interval: 3
fan:
- it8686/pwm1: [ 100, 200 ]
target: 50
pid:
p: 1
i: 1
d: 1.5