afancontrol/pkg/afancontrol.conf
2021-10-27 08:42:14 +02:00

270 lines
9.6 KiB
Plaintext

[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
# Hddtemp location. Used by the `type = hdd` temperature sensors.
# Default: hddtemp
;hddtemp = /usr/local/bin/hddtemp
# `ipmi-sensors` location from the `freeipmi-tools` package.
# Used by the `type = freeipmi` fans.
# Default: ipmi-sensors
;ipmi_sensors = /usr/local/bin/ipmi-sensors
# 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