forked from markusressel/fan2go
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathfan2go.yaml
More file actions
199 lines (182 loc) · 6.93 KB
/
fan2go.yaml
File metadata and controls
199 lines (182 loc) · 6.93 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
# The path of the database file
dbPath: "/etc/fan2go/fan2go.db"
# Allow the fan initialization sequence to run in parallel for all configured fans
runFanInitializationInParallel: false
# The maximum difference between consecutive RPM measurements to
# consider a fan speed "settled"
# Note: This parameter is only used for initial analysis of fan curve
# and has no effect during normal operation
maxRpmDiffForSettledFan: 20
# The time in seconds to wait before checking that a fan has responded to a control change
# Note: This parameter is only used for initial analysis of fan curve
# and has no effect during normal operation
fanResponseDelay: 2
# The rate to poll temperature sensors at
tempSensorPollingRate: 200ms
# The number of temp sensor values to keep in a rolling window array
tempRollingWindowSize: 10
# The rate to poll fan RPM input sensors at
rpmPollingRate: 1s
# The number of rpm sensor values to keep in a rolling window array
rpmRollingWindowSize: 10
# Configuration options for each fan controller responsible for an individual fan.
fanController:
# The rate to update fan speed targets at
adjustmentTickRate: 200ms
# Time to wait for a fan to respond to a control change
pwmSetDelay: 5ms
# A list of fans to control
fans:
# A user defined ID.
# Used for logging only
- id: cpu
# The type of fan configuration
hwmon:
# The platform of the controller which is
# connected to this fan (see sensor.platform below)
platform: nct6798-isa-0
# The channel of this fan's RPM sensor as displayed by `fan2go detect`
rpmChannel: 1
# The pwm channel that controls this fan; fan2go defaults to same channel number as fan RPM
pwmChannel: 1
# Indicates whether this fan should never stop rotating, regardless of
# how low the curve value is
neverStop: true
# The curve ID (defined above) that should be used to determine the
# speed of this fan
curve: cpu_curve
# (Optional) The algorithm how the target speed, determined by the curve is approached.
# direct: the target value will be directly applied to the fan
# pid: uses a PID loop with default tuning variables
controlAlgorithm:
direct:
# together with maxPwmChangePerCycle, fan speeds will approach target value
# with the given max speed.
maxPwmChangePerCycle: 10
# (Optional) Override for the lowest PWM value at which the
# fan is able to maintain rotation if it was spinning previously.
minPwm: 30
# (Optional) Override for the lowest PWM value at which the
# fan will still be able to start rotating.
# Note: Settings this to a value that is too small
# may damage your fans. Use at your own risk!
startPwm: 30
# (Optional) Override for the highest PWM value which still yields
# an increased rotational speed compared to lower values.
# Note: you can also use this to limit the max speed of a fan.
maxPwm: 255
# (Optional) Override for the PWM map used by fan2go for
# mapping the expected [0..255] value range to values actually supported by this fan.
# This can be used to compensate for fans with a very limited set of supported values
# (f.ex. off, low, high). If not set manually, fan2go will try to compute this mapping
# automatically during fan initialization. This process is not perfect though and may
# result in suboptimal fan control.
# Note: The values of the mapping must be strictly monotonically increasing. The Key-Set must
# be in [0..255] but may omit values. If keys are missing, fan2go will select a key that most
# closely matches the required target value (computed by the referenced curve) during operation.
pwmMap:
0: 0
64: 128
192: 255
# (Optional) Configuration options for sanity checks
sanityCheck:
# (Optional) Control the behavior of the "pwmValueChangedByThirdParty" sanity check
# This check is used to detect if the PWM value of a fan has changed between two consecutive
# control loop cycles, which is usually an indication that an external program is trying to control the fan
# at the same time as fan2go. This can lead to unexpected behavior and is usually not desired, so
# fan2go will log a warning if this happens.
pwmValueChangedByThirdParty:
# (Optional) Whether to enable this check or not
enabled: true
- id: in_front
hwmon:
platform: it8620
rpmChannel: 4
controlAlgorithm: direct
neverStop: true
curve: case_avg_curve
- id: out_back
hwmon:
platform: it8620
rpmChannel: 5
neverStop: true
curve: case_avg_curve
# A list of sensors to monitor
sensors:
# A user defined ID, which is used to reference
# a sensor in a curve configuration (see below)
- id: cpu_package
# The type of sensor configuration
hwmon:
# A regex matching a controller platform displayed by `fan2go detect`, f.ex.:
# "nouveau", "coretemp", "it8620", "corsaircpro-.*" etc.
platform: coretemp
# The index of this sensor as displayed by `fan2go detect`
index: 1
- id: mainboard
hwmon:
platform: it8620
index: 3
- id: sata_ssd
hwmon:
# at least if you have more than one SATA/SCSI disk/SSD,
# you should use the full platform string, not just "drivetemp"
platform: drivetemp-scsi-2-0
index: 1
# A list of control curves which can be utilized by fans
# or other curves
curves:
# A user defined ID, which is used to reference
# a curve in a fan configuration (see above)
- id: cpu_curve
# The type of curve configuration, one of: linear | function
linear:
# The sensor ID to use as a temperature input
sensor: cpu_package
# Steps to define a section-wise defined speed curve function
steps:
# Sensor value (degrees Celsius) -> Speed (0-255)
- 40: 0
- 50: 50
- 80: 255
- id: mainboard_curve
linear:
sensor: mainboard
# Sensor input value (in degrees Celsius)
# at which the curve is at minimum speed
min: 40
# Sensor input value at which the curve is at maximum speed
max: 80
- id: ssd_curve
linear:
sensor: sata_ssd
min: 40
max: 70
- id: case_avg_curve
function:
# Type of aggregation function to use, on of: minimum | maximum | average | delta | sum | difference
type: average
# A list of curve IDs to use
curves:
- cpu_curve
- mainboard_curve
- ssd_curve
statistics:
# Whether to enable the prometheus exporter or not
enabled: false
# The port to expose the exporter on
port: 9000
api:
# Whether to enable the API or not
enabled: false
# The host to listen for connections
host: localhost
# The port to listen for connections
port: 9001
profiling:
# Whether to enable the profiling webserver
enabled: false
# The host to listen for connections
host: localhost
# The port to listen for connections
port: 6060