2021-10-26 12:58:36 +02:00
|
|
|
[daemon]
|
|
|
|
# Default: /run/afancontrol.pid
|
|
|
|
pidfile = /run/afancontrol.pid
|
|
|
|
|
|
|
|
# Default: (empty value)
|
|
|
|
logfile = /var/log/afancontrol.log
|
|
|
|
|
|
|
|
# The ticks interval in seconds. Tick is a single operation of retrieving
|
|
|
|
# temperature values from the sensors and setting the computed fan speeds.
|
|
|
|
# Default: 5
|
|
|
|
interval = 5
|
|
|
|
|
2021-10-26 14:11:39 +02:00
|
|
|
# Hddtemp location. Relevant only when there're `type = hdd` temperature sensors.
|
2021-10-26 12:58:36 +02:00
|
|
|
# Default: hddtemp
|
|
|
|
;hddtemp = /usr/local/bin/hddtemp
|
|
|
|
|
|
|
|
# Prometheus exporter listening hostname and TCP port.
|
|
|
|
# Default: (empty value)
|
|
|
|
;exporter_listen_host = 127.0.0.1:8083
|
|
|
|
|
|
|
|
[actions]
|
|
|
|
# Temperature sensors have 2 limits: `threshold` and `panic` temperature.
|
|
|
|
# When any of the sensors reach their `threshold` value, the `threshold` mode
|
|
|
|
# is activated. Same for the `panic` mode.
|
|
|
|
#
|
|
|
|
# When any of the 2 modes is activated, all of the available fans would start
|
|
|
|
# working at full speed.
|
|
|
|
#
|
|
|
|
# In the default configuration there's no difference between the two modes.
|
|
|
|
# But it is possible to call different shell commands for each mode, which
|
|
|
|
# would allow to make different things. For example, in `threshold` mode
|
|
|
|
# you could stop some services which produce significant load, and in `panic`
|
|
|
|
# mode you could stop even more (if that didn't help to lower the temperatures).
|
|
|
|
|
|
|
|
# Shell command which will be used to report important events.
|
|
|
|
# %REASON% will be replaced with report reason, %MESSAGE% with report message
|
|
|
|
# Examples:
|
|
|
|
# printf "Reason: %s\nMessage: %s" "%REASON%" "%MESSAGE%" | wall
|
|
|
|
# kdialog --title "afancontrol report" --error "Reason: %REASON%\nMessage: %MESSAGE%"
|
|
|
|
# Default: printf "Subject: %s\nTo: %s\n\n%b" "afancontrol daemon report: %REASON%" root "%MESSAGE%" | sendmail -t
|
|
|
|
;report_cmd =
|
|
|
|
|
|
|
|
# Global panic enter shell command
|
|
|
|
# Default: (empty value)
|
|
|
|
;panic_enter_cmd =
|
|
|
|
|
|
|
|
# Global panic leave shell command
|
|
|
|
# Default: (empty value)
|
|
|
|
;panic_leave_cmd =
|
|
|
|
|
|
|
|
# Global threshold enter shell command
|
|
|
|
# Default: (empty value)
|
|
|
|
;threshold_enter_cmd =
|
|
|
|
|
|
|
|
# Global threshold leave shell command
|
|
|
|
# Default: (empty value)
|
|
|
|
;threshold_leave_cmd =
|
|
|
|
|
|
|
|
# `[filter:name]` - define a temperature filter. The `name` must be unique.
|
|
|
|
[filter: moving_median_p3]
|
|
|
|
# Temperature filters can be used to smoothen the observations to avoid
|
|
|
|
# rapid fan speed changes.
|
|
|
|
#
|
|
|
|
# Filter type.
|
|
|
|
# Possible values:
|
|
|
|
# `moving_median`: A moving median filter. Useful to ignore inadequately
|
|
|
|
# large individual measurements from unstable sensors.
|
|
|
|
# Recommended `window_size` is 3 or 5, because with a too
|
|
|
|
# large window size a sudden increase in temperature might
|
|
|
|
# not get a timely fan speed reaction.
|
|
|
|
# `moving_quantile`: A moving quantile filter. Useful to amplify high
|
|
|
|
# temperatures to make smoother reaction while being
|
|
|
|
# extra cautious (i.e. tending to assume that
|
|
|
|
# the actual temperature is higher than the one which
|
|
|
|
# is being reported). Recommended `window_size` is 10,
|
|
|
|
# `quantile` is 0.8 or 0.9. It is also possible to invert
|
|
|
|
# the reaction speed: to make it react slower just use a lower
|
|
|
|
# quantile value (such as 0.3).
|
|
|
|
type = moving_median
|
|
|
|
|
|
|
|
# Number of observations kept in the moving window.
|
|
|
|
# Default: 3.
|
|
|
|
window_size = 3
|
|
|
|
|
|
|
|
# Quantile value for the `moving_quantile` filter, mandatory.
|
|
|
|
;quantile=0.8
|
|
|
|
|
|
|
|
# [temp:name] - is a temperature sensor section. The `name` must be unique.
|
|
|
|
[temp:mobo]
|
|
|
|
# Type of the sensor.
|
|
|
|
# Possible values:
|
|
|
|
# `file`: Read files like /sys/class/hwmon/hwmon0/device/temp1_input.
|
|
|
|
# These files contain temperature in Celsius multiplied by 1000.
|
|
|
|
# `hdd`: Query temperatures from HDD using `hddtemp`. If multiple drives
|
|
|
|
# are specified (with a glob pattern), the sensor would report
|
|
|
|
# the maximum temperature among all matched devices.
|
|
|
|
# `exec`: Shell command which will return temperature in Celsius
|
|
|
|
# (which might be float). Output might also contain
|
|
|
|
# the `min` and `max` temperatures separated by a newline.
|
|
|
|
# This field is mandatory.
|
|
|
|
type = file
|
|
|
|
|
|
|
|
# Shell command which will return a temperature.
|
|
|
|
# Mandatory for the `type = exec`.
|
|
|
|
;command = nvidia-smi --query-gpu=temperature.gpu --format=csv,noheader,nounits -i 0
|
|
|
|
;command = nvme smart-log /dev/nvme0 | grep "^temperature" | grep -oP '[0-9]+'
|
|
|
|
;command = iStats cpu temp --value-only
|
|
|
|
|
|
|
|
# When `type = file`: this is the path to the file. The path might be a glob pattern,
|
|
|
|
# but it must expand to a single file.
|
|
|
|
# When `type = hdd`: this is the path to the target device (might be a glob pattern)
|
|
|
|
# Mandatory when `type` equals to `file` or `hdd`.
|
|
|
|
path = /sys/class/hwmon/hwmon0/device/temp1_input
|
|
|
|
;path = /sys/devices/pci0000:00/0000:00:01.3/0000:03:00.2/0000:20:08.0/0000:2a:00.0/hwmon/hwmon*/temp1_input
|
|
|
|
;path = /dev/sd?
|
|
|
|
|
|
|
|
# Name of the temperature filter.
|
|
|
|
# Optional, unfiltered observations will be used if not specified.
|
|
|
|
filter = moving_median_p3
|
|
|
|
|
|
|
|
# Temperature at which a fan should be running at minimum speed
|
|
|
|
# Must be set for `hdd`. Can be detected automatically for `file`
|
|
|
|
# and `exec` (but not always).
|
|
|
|
min = 30
|
|
|
|
|
|
|
|
# Temperature at which a fan should be running at full speed
|
|
|
|
# Must be set for `hdd`. Can be detected automatically for `file`
|
|
|
|
# and `exec` (but not always).
|
|
|
|
max = 40
|
|
|
|
|
|
|
|
# Temperature at which this sensor will enter the panic mode
|
|
|
|
# Default: (empty value)
|
|
|
|
;panic =
|
|
|
|
|
|
|
|
# Temperature at which this sensor will enter the threshold mode
|
|
|
|
# Default: (empty value)
|
|
|
|
;threshold =
|
|
|
|
|
|
|
|
# Sensor panic enter shell command
|
|
|
|
# Default: None
|
|
|
|
;panic_enter_cmd =
|
|
|
|
|
|
|
|
# Sensor panic leave shell command
|
|
|
|
# Default: None
|
|
|
|
;panic_leave_cmd =
|
|
|
|
|
|
|
|
# Sensor threshold enter shell command
|
|
|
|
# Default: None
|
|
|
|
;threshold_enter_cmd =
|
|
|
|
|
|
|
|
# Sensor threshold leave shell command
|
|
|
|
# Default: None
|
|
|
|
;threshold_leave_cmd =
|
|
|
|
|
|
|
|
[readonly_fan: cpu]
|
|
|
|
# A readonly fan: i.e. just read RPM and never attempt to control it.
|
|
|
|
# Useful for exposing a CPU fan speed in metrics.
|
|
|
|
#
|
|
|
|
# The properties are the same as in `[fan: ...]`. Both sections share
|
|
|
|
# the same namespace, which means that a single fan name can be used
|
|
|
|
# only in one of the sections.
|
|
|
|
type = linux
|
|
|
|
fan_input = /sys/class/hwmon/hwmon0/device/fan1_input
|
|
|
|
|
|
|
|
|
|
|
|
# [fan:name] - is a PWM fan section. The `name` must be unique.
|
|
|
|
[fan: hdd]
|
|
|
|
# Type of the fan.
|
|
|
|
# Possible values:
|
|
|
|
# `linux`: The default fan type. This is a fan connected to
|
|
|
|
# the motherboard using a 4-pin connector and exposed by lm-sensors
|
|
|
|
# as a file like `/sys/class/hwmon/hwmon0/device/pwm2`.
|
|
|
|
# `arduino`: A PWM fan connected via an Arduino board.
|
|
|
|
# `freeipmi`: A PWM fan exposed via IPMI. Requires `freeipmi-tools` package.
|
|
|
|
# Currently supported only in the `[readonly_fan: ...]` sections.
|
|
|
|
# Default: linux
|
|
|
|
type = linux
|
|
|
|
|
|
|
|
# Path to the PWM file of the fan.
|
|
|
|
# Mandatory when `type = linux`, optional in `[readonly_fan: ...]` sections.
|
|
|
|
pwm = /sys/class/hwmon/hwmon0/device/pwm2
|
|
|
|
|
|
|
|
# Path to the RPM file of the fan.
|
|
|
|
# Mandatory when `type = linux`.
|
|
|
|
fan_input = /sys/class/hwmon/hwmon0/device/fan2_input
|
|
|
|
|
|
|
|
# Arduino board name as described by an `[arduino: name]` section.
|
|
|
|
# Mandatory when `type = arduino`.
|
|
|
|
;arduino_name = mymicro
|
|
|
|
|
|
|
|
# The pin of the Arduino board where the PWM wire is connected to
|
|
|
|
# (usually the blue one).
|
|
|
|
# Mandatory when `type = arduino`, optional in `[readonly_fan: ...]` sections.
|
|
|
|
;pwm_pin = 9
|
|
|
|
|
|
|
|
# The pin of the Arduino board where the Tachometer wire is connected to
|
|
|
|
# (usually the yellow one).
|
|
|
|
# Mandatory when `type = arduino`.
|
|
|
|
;tacho_pin = 3
|
|
|
|
|
|
|
|
# The name of the fan as reported by the `ipmi-sensors --sensor-types Fan` command.
|
|
|
|
# Mandatory when `type = freeipmi`.
|
|
|
|
;name = FAN1
|
|
|
|
|
|
|
|
# Some fans have almost linear correlation between PWM and RPM, some haven't.
|
|
|
|
# `pwm_line_start` is the PWM value where the linear correlation starts,
|
|
|
|
# `pwm_line_end` is where it ends.
|
|
|
|
# You can use the `afancontrol fantest` command to run a test which would
|
|
|
|
# allow you to find out these values your your specific fans.
|
|
|
|
#
|
|
|
|
# Default: 100. Must not be set in the `[readonly_fan: ...]` sections.
|
|
|
|
pwm_line_start = 100
|
|
|
|
# Default 240. Must not be set in the `[readonly_fan: ...]` sections.
|
|
|
|
pwm_line_end = 240
|
|
|
|
|
|
|
|
# Should the fan be stopped on speed 0% or not. If not, it would be running
|
|
|
|
# with the `pwm_line_start` PWM value.
|
|
|
|
# Default: yes. Must not be set in the `[readonly_fan: ...]` sections.
|
|
|
|
never_stop = no
|
|
|
|
|
|
|
|
# [arduino:name] - a section describing an Arduino board with PWM fans connected to it.
|
|
|
|
;[arduino: mymicro]
|
|
|
|
# The Serial interface url.
|
|
|
|
# Mandatory.
|
|
|
|
;serial_url = /dev/ttyACM0
|
|
|
|
|
|
|
|
# The Serial interface Baudrate.
|
|
|
|
# Default: 115200
|
|
|
|
;baudrate = 115200
|
|
|
|
|
|
|
|
# The Status command timeout in seconds. The board periodically sends
|
|
|
|
# a Status command -- the current RPM and PWM values. When the status
|
|
|
|
# haven't been received for that amount of time, the corresponding fans
|
|
|
|
# would be considered failing.
|
|
|
|
# Default: 5
|
|
|
|
;status_ttl = 5
|
|
|
|
|
|
|
|
|
|
|
|
# Relationships between fans and temps
|
|
|
|
[mapping:1]
|
|
|
|
# Comma-separated list of fans for this mapping. Fan names might be
|
|
|
|
# multiplied by float, e.g. `name * 0.55`. This means that the speed
|
|
|
|
# for that fan will be just 55% when the specified temperatures would be
|
|
|
|
# at their `max` value.
|
|
|
|
#
|
|
|
|
# You may want to apply a multiplier if the fan is far from
|
|
|
|
# the corresponding temperature sensors.
|
|
|
|
#
|
|
|
|
# Multiple mappings can be specified, each temp and fan might be used
|
|
|
|
# in different mappings multiple times.
|
|
|
|
#
|
|
|
|
# Readonly fans cannot be used in mappings.
|
|
|
|
#
|
|
|
|
# The resulting fan speed would be the maximum value calculated along
|
|
|
|
# all mappings.
|
|
|
|
|
|
|
|
# Comma-separated list of fans with modifiers.
|
|
|
|
# Example: `fans = myfan, myfan2 * 0.6, myfan3`.
|
|
|
|
# Mandatory.
|
|
|
|
fans = hdd*0.6
|
|
|
|
|
|
|
|
# Comma-separated list of temp sensors.
|
|
|
|
# Mandatory.
|
|
|
|
temps = mobo
|