hwmon: Update the sysfs interface documentation
[linux-2.6] / Documentation / hwmon / sysfs-interface
1 Naming and data format standards for sysfs files
2 ------------------------------------------------
3
4 The libsensors library offers an interface to the raw sensors data
5 through the sysfs interface. See libsensors documentation and source for
6 further information. As of writing this document, libsensors
7 (from lm_sensors 2.8.3) is heavily chip-dependent. Adding or updating
8 support for any given chip requires modifying the library's code.
9 This is because libsensors was written for the procfs interface
10 older kernel modules were using, which wasn't standardized enough.
11 Recent versions of libsensors (from lm_sensors 2.8.2 and later) have
12 support for the sysfs interface, though.
13
14 The new sysfs interface was designed to be as chip-independent as
15 possible.
16
17 Note that motherboards vary widely in the connections to sensor chips.
18 There is no standard that ensures, for example, that the second
19 temperature sensor is connected to the CPU, or that the second fan is on
20 the CPU. Also, some values reported by the chips need some computation
21 before they make full sense. For example, most chips can only measure
22 voltages between 0 and +4V. Other voltages are scaled back into that
23 range using external resistors. Since the values of these resistors
24 can change from motherboard to motherboard, the conversions cannot be
25 hard coded into the driver and have to be done in user space.
26
27 For this reason, even if we aim at a chip-independent libsensors, it will
28 still require a configuration file (e.g. /etc/sensors.conf) for proper
29 values conversion, labeling of inputs and hiding of unused inputs.
30
31 An alternative method that some programs use is to access the sysfs
32 files directly. This document briefly describes the standards that the
33 drivers follow, so that an application program can scan for entries and
34 access this data in a simple and consistent way. That said, such programs
35 will have to implement conversion, labeling and hiding of inputs. For
36 this reason, it is still not recommended to bypass the library.
37
38 If you are developing a userspace application please send us feedback on
39 this standard.
40
41 Note that this standard isn't completely established yet, so it is subject
42 to changes. If you are writing a new hardware monitoring driver those
43 features can't seem to fit in this interface, please contact us with your
44 extension proposal. Keep in mind that backward compatibility must be
45 preserved.
46
47 Each chip gets its own directory in the sysfs /sys/devices tree.  To
48 find all sensor chips, it is easier to follow the device symlinks from
49 /sys/class/hwmon/hwmon*.
50
51 All sysfs values are fixed point numbers.
52
53 There is only one value per file, unlike the older /proc specification.
54 The common scheme for files naming is: <type><number>_<item>. Usual
55 types for sensor chips are "in" (voltage), "temp" (temperature) and
56 "fan" (fan). Usual items are "input" (measured value), "max" (high
57 threshold, "min" (low threshold). Numbering usually starts from 1,
58 except for voltages which start from 0 (because most data sheets use
59 this). A number is always used for elements that can be present more
60 than once, even if there is a single element of the given type on the
61 specific chip. Other files do not refer to a specific element, so
62 they have a simple name, and no number.
63
64 Alarms are direct indications read from the chips. The drivers do NOT
65 make comparisons of readings to thresholds. This allows violations
66 between readings to be caught and alarmed. The exact definition of an
67 alarm (for example, whether a threshold must be met or must be exceeded
68 to cause an alarm) is chip-dependent.
69
70
71 -------------------------------------------------------------------------
72
73 [0-*]   denotes any positive number starting from 0
74 [1-*]   denotes any positive number starting from 1
75 RO      read only value
76 RW      read/write value
77
78 Read/write values may be read-only for some chips, depending on the
79 hardware implementation.
80
81 All entries (except name) are optional, and should only be created in a
82 given driver if the chip has the feature.
83
84
85 ********
86 * Name *
87 ********
88
89 name            The chip name.
90                 This should be a short, lowercase string, not containing
91                 spaces nor dashes, representing the chip name. This is
92                 the only mandatory attribute.
93                 I2C devices get this attribute created automatically.
94                 RO
95
96
97 ************
98 * Voltages *
99 ************
100
101 in[0-*]_min     Voltage min value.
102                 Unit: millivolt
103                 RW
104                 
105 in[0-*]_max     Voltage max value.
106                 Unit: millivolt
107                 RW
108                 
109 in[0-*]_input   Voltage input value.
110                 Unit: millivolt
111                 RO
112                 Voltage measured on the chip pin.
113                 Actual voltage depends on the scaling resistors on the
114                 motherboard, as recommended in the chip datasheet.
115                 This varies by chip and by motherboard.
116                 Because of this variation, values are generally NOT scaled
117                 by the chip driver, and must be done by the application.
118                 However, some drivers (notably lm87 and via686a)
119                 do scale, because of internal resistors built into a chip.
120                 These drivers will output the actual voltage. Rule of
121                 thumb: drivers should report the voltage values at the
122                 "pins" of the chip.
123
124 in[0-*]_label   Suggested voltage channel label.
125                 Text string
126                 Should only be created if the driver has hints about what
127                 this voltage channel is being used for, and user-space
128                 doesn't. In all other cases, the label is provided by
129                 user-space.
130                 RO
131
132 cpu[0-*]_vid    CPU core reference voltage.
133                 Unit: millivolt
134                 RO
135                 Not always correct.
136
137 vrm             Voltage Regulator Module version number. 
138                 RW (but changing it should no more be necessary)
139                 Originally the VRM standard version multiplied by 10, but now
140                 an arbitrary number, as not all standards have a version
141                 number.
142                 Affects the way the driver calculates the CPU core reference
143                 voltage from the vid pins.
144
145 Also see the Alarms section for status flags associated with voltages.
146
147
148 ********
149 * Fans *
150 ********
151
152 fan[1-*]_min    Fan minimum value
153                 Unit: revolution/min (RPM)
154                 RW
155
156 fan[1-*]_input  Fan input value.
157                 Unit: revolution/min (RPM)
158                 RO
159
160 fan[1-*]_div    Fan divisor.
161                 Integer value in powers of two (1, 2, 4, 8, 16, 32, 64, 128).
162                 RW
163                 Some chips only support values 1, 2, 4 and 8.
164                 Note that this is actually an internal clock divisor, which
165                 affects the measurable speed range, not the read value.
166
167 fan[1-*]_target
168                 Desired fan speed
169                 Unit: revolution/min (RPM)
170                 RW
171                 Only makes sense if the chip supports closed-loop fan speed
172                 control based on the measured fan speed.
173
174 fan[1-*]_label  Suggested fan channel label.
175                 Text string
176                 Should only be created if the driver has hints about what
177                 this fan channel is being used for, and user-space doesn't.
178                 In all other cases, the label is provided by user-space.
179                 RO
180
181 Also see the Alarms section for status flags associated with fans.
182
183
184 *******
185 * PWM *
186 *******
187
188 pwm[1-*]        Pulse width modulation fan control.
189                 Integer value in the range 0 to 255
190                 RW
191                 255 is max or 100%.
192
193 pwm[1-*]_enable
194                 Fan speed control method:
195                 0: no fan speed control (i.e. fan at full speed)
196                 1: manual fan speed control enabled (using pwm[1-*])
197                 2+: automatic fan speed control enabled
198                 Check individual chip documentation files for automatic mode
199                 details.
200                 RW
201
202 pwm[1-*]_mode   0: DC mode (direct current)
203                 1: PWM mode (pulse-width modulation)
204                 RW
205
206 pwm[1-*]_freq   Base PWM frequency in Hz.
207                 Only possibly available when pwmN_mode is PWM, but not always
208                 present even then.
209                 RW
210
211 pwm[1-*]_auto_channels_temp
212                 Select which temperature channels affect this PWM output in
213                 auto mode. Bitfield, 1 is temp1, 2 is temp2, 4 is temp3 etc...
214                 Which values are possible depend on the chip used.
215                 RW
216
217 pwm[1-*]_auto_point[1-*]_pwm
218 pwm[1-*]_auto_point[1-*]_temp
219 pwm[1-*]_auto_point[1-*]_temp_hyst
220                 Define the PWM vs temperature curve. Number of trip points is
221                 chip-dependent. Use this for chips which associate trip points
222                 to PWM output channels.
223                 RW
224
225 OR
226
227 temp[1-*]_auto_point[1-*]_pwm
228 temp[1-*]_auto_point[1-*]_temp
229 temp[1-*]_auto_point[1-*]_temp_hyst
230                 Define the PWM vs temperature curve. Number of trip points is
231                 chip-dependent. Use this for chips which associate trip points
232                 to temperature channels.
233                 RW
234
235
236 ****************
237 * Temperatures *
238 ****************
239
240 temp[1-*]_type  Sensor type selection.
241                 Integers 1 to 6
242                 RW
243                 1: PII/Celeron Diode
244                 2: 3904 transistor
245                 3: thermal diode
246                 4: thermistor
247                 5: AMD AMDSI
248                 6: Intel PECI
249                 Not all types are supported by all chips
250
251 temp[1-*]_max   Temperature max value.
252                 Unit: millidegree Celsius (or millivolt, see below)
253                 RW
254
255 temp[1-*]_min   Temperature min value.
256                 Unit: millidegree Celsius
257                 RW
258
259 temp[1-*]_max_hyst
260                 Temperature hysteresis value for max limit.
261                 Unit: millidegree Celsius
262                 Must be reported as an absolute temperature, NOT a delta
263                 from the max value.
264                 RW
265
266 temp[1-*]_input Temperature input value.
267                 Unit: millidegree Celsius
268                 RO
269
270 temp[1-*]_crit  Temperature critical value, typically greater than
271                 corresponding temp_max values.
272                 Unit: millidegree Celsius
273                 RW
274
275 temp[1-*]_crit_hyst
276                 Temperature hysteresis value for critical limit.
277                 Unit: millidegree Celsius
278                 Must be reported as an absolute temperature, NOT a delta
279                 from the critical value.
280                 RW
281
282 temp[1-*]_offset
283                 Temperature offset which is added to the temperature reading
284                 by the chip.
285                 Unit: millidegree Celsius
286                 Read/Write value.
287
288 temp[1-*]_label Suggested temperature channel label.
289                 Text string
290                 Should only be created if the driver has hints about what
291                 this temperature channel is being used for, and user-space
292                 doesn't. In all other cases, the label is provided by
293                 user-space.
294                 RO
295
296 Some chips measure temperature using external thermistors and an ADC, and
297 report the temperature measurement as a voltage. Converting this voltage
298 back to a temperature (or the other way around for limits) requires
299 mathematical functions not available in the kernel, so the conversion
300 must occur in user space. For these chips, all temp* files described
301 above should contain values expressed in millivolt instead of millidegree
302 Celsius. In other words, such temperature channels are handled as voltage
303 channels by the driver.
304
305 Also see the Alarms section for status flags associated with temperatures.
306
307
308 ************
309 * Currents *
310 ************
311
312 Note that no known chip provides current measurements as of writing,
313 so this part is theoretical, so to say.
314
315 curr[1-*]_max   Current max value
316                 Unit: milliampere
317                 RW
318
319 curr[1-*]_min   Current min value.
320                 Unit: milliampere
321                 RW
322
323 curr[1-*]_input Current input value
324                 Unit: milliampere
325                 RO
326
327
328 **********
329 * Alarms *
330 **********
331
332 Each channel or limit may have an associated alarm file, containing a
333 boolean value. 1 means than an alarm condition exists, 0 means no alarm.
334
335 Usually a given chip will either use channel-related alarms, or
336 limit-related alarms, not both. The driver should just reflect the hardware
337 implementation.
338
339 in[0-*]_alarm
340 fan[1-*]_alarm
341 temp[1-*]_alarm
342                 Channel alarm
343                 0: no alarm
344                 1: alarm
345                 RO
346
347 OR
348
349 in[0-*]_min_alarm
350 in[0-*]_max_alarm
351 fan[1-*]_min_alarm
352 temp[1-*]_min_alarm
353 temp[1-*]_max_alarm
354 temp[1-*]_crit_alarm
355                 Limit alarm
356                 0: no alarm
357                 1: alarm
358                 RO
359
360 Each input channel may have an associated fault file. This can be used
361 to notify open diodes, unconnected fans etc. where the hardware
362 supports it. When this boolean has value 1, the measurement for that
363 channel should not be trusted.
364
365 in[0-*]_fault
366 fan[1-*]_fault
367 temp[1-*]_fault
368                 Input fault condition
369                 0: no fault occured
370                 1: fault condition
371                 RO
372
373 Some chips also offer the possibility to get beeped when an alarm occurs:
374
375 beep_enable     Master beep enable
376                 0: no beeps
377                 1: beeps
378                 RW
379
380 in[0-*]_beep
381 fan[1-*]_beep
382 temp[1-*]_beep
383                 Channel beep
384                 0: disable
385                 1: enable
386                 RW
387
388 In theory, a chip could provide per-limit beep masking, but no such chip
389 was seen so far.
390
391 Old drivers provided a different, non-standard interface to alarms and
392 beeps. These interface files are deprecated, but will be kept around
393 for compatibility reasons:
394
395 alarms          Alarm bitmask.
396                 RO
397                 Integer representation of one to four bytes.
398                 A '1' bit means an alarm.
399                 Chips should be programmed for 'comparator' mode so that
400                 the alarm will 'come back' after you read the register
401                 if it is still valid.
402                 Generally a direct representation of a chip's internal
403                 alarm registers; there is no standard for the position
404                 of individual bits. For this reason, the use of this
405                 interface file for new drivers is discouraged. Use
406                 individual *_alarm and *_fault files instead.
407                 Bits are defined in kernel/include/sensors.h.
408
409 beep_mask       Bitmask for beep.
410                 Same format as 'alarms' with the same bit locations,
411                 use discouraged for the same reason. Use individual
412                 *_beep files instead.
413                 RW