blob: 678c9c60b5a3743c0ab8d1f8ead3f789c2d3ab3b [file] [log] [blame]
David Brazdil0f672f62019-12-10 10:32:29 +00001Naming and data format standards for sysfs files
2================================================
3
4The libsensors library offers an interface to the raw sensors data
5through the sysfs interface. Since lm-sensors 3.0.0, libsensors is
6completely chip-independent. It assumes that all the kernel drivers
7implement the standard sysfs interface described in this document.
8This makes adding or updating support for any given chip very easy, as
9libsensors, and applications using it, do not need to be modified.
10This is a major improvement compared to lm-sensors 2.
11
12Note that motherboards vary widely in the connections to sensor chips.
13There is no standard that ensures, for example, that the second
14temperature sensor is connected to the CPU, or that the second fan is on
15the CPU. Also, some values reported by the chips need some computation
16before they make full sense. For example, most chips can only measure
17voltages between 0 and +4V. Other voltages are scaled back into that
18range using external resistors. Since the values of these resistors
19can change from motherboard to motherboard, the conversions cannot be
20hard coded into the driver and have to be done in user space.
21
22For this reason, even if we aim at a chip-independent libsensors, it will
23still require a configuration file (e.g. /etc/sensors.conf) for proper
24values conversion, labeling of inputs and hiding of unused inputs.
25
26An alternative method that some programs use is to access the sysfs
27files directly. This document briefly describes the standards that the
28drivers follow, so that an application program can scan for entries and
29access this data in a simple and consistent way. That said, such programs
30will have to implement conversion, labeling and hiding of inputs. For
31this reason, it is still not recommended to bypass the library.
32
33Each chip gets its own directory in the sysfs /sys/devices tree. To
34find all sensor chips, it is easier to follow the device symlinks from
35`/sys/class/hwmon/hwmon*`.
36
37Up to lm-sensors 3.0.0, libsensors looks for hardware monitoring attributes
38in the "physical" device directory. Since lm-sensors 3.0.1, attributes found
39in the hwmon "class" device directory are also supported. Complex drivers
40(e.g. drivers for multifunction chips) may want to use this possibility to
41avoid namespace pollution. The only drawback will be that older versions of
42libsensors won't support the driver in question.
43
44All sysfs values are fixed point numbers.
45
46There is only one value per file, unlike the older /proc specification.
47The common scheme for files naming is: <type><number>_<item>. Usual
48types for sensor chips are "in" (voltage), "temp" (temperature) and
49"fan" (fan). Usual items are "input" (measured value), "max" (high
50threshold, "min" (low threshold). Numbering usually starts from 1,
51except for voltages which start from 0 (because most data sheets use
52this). A number is always used for elements that can be present more
53than once, even if there is a single element of the given type on the
54specific chip. Other files do not refer to a specific element, so
55they have a simple name, and no number.
56
57Alarms are direct indications read from the chips. The drivers do NOT
58make comparisons of readings to thresholds. This allows violations
59between readings to be caught and alarmed. The exact definition of an
60alarm (for example, whether a threshold must be met or must be exceeded
61to cause an alarm) is chip-dependent.
62
63When setting values of hwmon sysfs attributes, the string representation of
64the desired value must be written, note that strings which are not a number
65are interpreted as 0! For more on how written strings are interpreted see the
66"sysfs attribute writes interpretation" section at the end of this file.
67
68-------------------------------------------------------------------------
69
70======= ===========================================
71`[0-*]` denotes any positive number starting from 0
72`[1-*]` denotes any positive number starting from 1
73RO read only value
74WO write only value
75RW read/write value
76======= ===========================================
77
78Read/write values may be read-only for some chips, depending on the
79hardware implementation.
80
81All entries (except name) are optional, and should only be created in a
82given driver if the chip has the feature.
83
84
85*****************
86Global attributes
87*****************
88
89`name`
90 The chip name.
91 This should be a short, lowercase string, not containing
92 whitespace, dashes, or the wildcard character '*'.
93 This attribute represents the chip name. It is the only
94 mandatory attribute.
95 I2C devices get this attribute created automatically.
96
97 RO
98
99`update_interval`
100 The interval at which the chip will update readings.
101 Unit: millisecond
102
103 RW
104
105 Some devices have a variable update rate or interval.
106 This attribute can be used to change it to the desired value.
107
108
109********
110Voltages
111********
112
113`in[0-*]_min`
114 Voltage min value.
115
116 Unit: millivolt
117
118 RW
119
120`in[0-*]_lcrit`
121 Voltage critical min value.
122
123 Unit: millivolt
124
125 RW
126
127 If voltage drops to or below this limit, the system may
128 take drastic action such as power down or reset. At the very
129 least, it should report a fault.
130
131`in[0-*]_max`
132 Voltage max value.
133
134 Unit: millivolt
135
136 RW
137
138`in[0-*]_crit`
139 Voltage critical max value.
140
141 Unit: millivolt
142
143 RW
144
145 If voltage reaches or exceeds this limit, the system may
146 take drastic action such as power down or reset. At the very
147 least, it should report a fault.
148
149`in[0-*]_input`
150 Voltage input value.
151
152 Unit: millivolt
153
154 RO
155
156 Voltage measured on the chip pin.
157
158 Actual voltage depends on the scaling resistors on the
159 motherboard, as recommended in the chip datasheet.
160
161 This varies by chip and by motherboard.
162 Because of this variation, values are generally NOT scaled
163 by the chip driver, and must be done by the application.
164 However, some drivers (notably lm87 and via686a)
165 do scale, because of internal resistors built into a chip.
166 These drivers will output the actual voltage. Rule of
167 thumb: drivers should report the voltage values at the
168 "pins" of the chip.
169
170`in[0-*]_average`
171 Average voltage
172
173 Unit: millivolt
174
175 RO
176
177`in[0-*]_lowest`
178 Historical minimum voltage
179
180 Unit: millivolt
181
182 RO
183
184`in[0-*]_highest`
185 Historical maximum voltage
186
187 Unit: millivolt
188
189 RO
190
191`in[0-*]_reset_history`
192 Reset inX_lowest and inX_highest
193
194 WO
195
196`in_reset_history`
197 Reset inX_lowest and inX_highest for all sensors
198
199 WO
200
201`in[0-*]_label`
202 Suggested voltage channel label.
203
204 Text string
205
206 Should only be created if the driver has hints about what
207 this voltage channel is being used for, and user-space
208 doesn't. In all other cases, the label is provided by
209 user-space.
210
211 RO
212
213`in[0-*]_enable`
214 Enable or disable the sensors.
215
216 When disabled the sensor read will return -ENODATA.
217
218 - 1: Enable
219 - 0: Disable
220
221 RW
222
223`cpu[0-*]_vid`
224 CPU core reference voltage.
225
226 Unit: millivolt
227
228 RO
229
230 Not always correct.
231
232`vrm`
233 Voltage Regulator Module version number.
234
235 RW (but changing it should no more be necessary)
236
237 Originally the VRM standard version multiplied by 10, but now
238 an arbitrary number, as not all standards have a version
239 number.
240
241 Affects the way the driver calculates the CPU core reference
242 voltage from the vid pins.
243
Olivier Deprez157378f2022-04-04 15:47:50 +0200244`in[0-*]_rated_min`
245 Minimum rated voltage.
246
247 Unit: millivolt
248
249 RO
250
251`in[0-*]_rated_max`
252 Maximum rated voltage.
253
254 Unit: millivolt
255
256 RO
257
David Brazdil0f672f62019-12-10 10:32:29 +0000258Also see the Alarms section for status flags associated with voltages.
259
260
261****
262Fans
263****
264
265`fan[1-*]_min`
266 Fan minimum value
267
268 Unit: revolution/min (RPM)
269
270 RW
271
272`fan[1-*]_max`
273 Fan maximum value
274
275 Unit: revolution/min (RPM)
276
277 Only rarely supported by the hardware.
278 RW
279
280`fan[1-*]_input`
281 Fan input value.
282
283 Unit: revolution/min (RPM)
284
285 RO
286
287`fan[1-*]_div`
288 Fan divisor.
289
290 Integer value in powers of two (1, 2, 4, 8, 16, 32, 64, 128).
291
292 RW
293
294 Some chips only support values 1, 2, 4 and 8.
295 Note that this is actually an internal clock divisor, which
296 affects the measurable speed range, not the read value.
297
298`fan[1-*]_pulses`
299 Number of tachometer pulses per fan revolution.
300
301 Integer value, typically between 1 and 4.
302
303 RW
304
305 This value is a characteristic of the fan connected to the
306 device's input, so it has to be set in accordance with the fan
307 model.
308
309 Should only be created if the chip has a register to configure
310 the number of pulses. In the absence of such a register (and
311 thus attribute) the value assumed by all devices is 2 pulses
312 per fan revolution.
313
314`fan[1-*]_target`
315 Desired fan speed
316
317 Unit: revolution/min (RPM)
318
319 RW
320
321 Only makes sense if the chip supports closed-loop fan speed
322 control based on the measured fan speed.
323
324`fan[1-*]_label`
325 Suggested fan channel label.
326
327 Text string
328
329 Should only be created if the driver has hints about what
330 this fan channel is being used for, and user-space doesn't.
331 In all other cases, the label is provided by user-space.
332
333 RO
334
335`fan[1-*]_enable`
336 Enable or disable the sensors.
337
338 When disabled the sensor read will return -ENODATA.
339
340 - 1: Enable
341 - 0: Disable
342
343 RW
344
345Also see the Alarms section for status flags associated with fans.
346
347
348***
349PWM
350***
351
352`pwm[1-*]`
353 Pulse width modulation fan control.
354
355 Integer value in the range 0 to 255
356
357 RW
358
359 255 is max or 100%.
360
361`pwm[1-*]_enable`
362 Fan speed control method:
363
364 - 0: no fan speed control (i.e. fan at full speed)
365 - 1: manual fan speed control enabled (using `pwm[1-*]`)
366 - 2+: automatic fan speed control enabled
367
368 Check individual chip documentation files for automatic mode
369 details.
370
371 RW
372
373`pwm[1-*]_mode`
374 - 0: DC mode (direct current)
375 - 1: PWM mode (pulse-width modulation)
376
377 RW
378
379`pwm[1-*]_freq`
380 Base PWM frequency in Hz.
381
382 Only possibly available when pwmN_mode is PWM, but not always
383 present even then.
384
385 RW
386
387`pwm[1-*]_auto_channels_temp`
388 Select which temperature channels affect this PWM output in
389 auto mode.
390
391 Bitfield, 1 is temp1, 2 is temp2, 4 is temp3 etc...
392 Which values are possible depend on the chip used.
393
394 RW
395
396`pwm[1-*]_auto_point[1-*]_pwm` / `pwm[1-*]_auto_point[1-*]_temp` / `pwm[1-*]_auto_point[1-*]_temp_hyst`
397 Define the PWM vs temperature curve.
398
399 Number of trip points is chip-dependent. Use this for chips
400 which associate trip points to PWM output channels.
401
402 RW
403
404`temp[1-*]_auto_point[1-*]_pwm` / `temp[1-*]_auto_point[1-*]_temp` / `temp[1-*]_auto_point[1-*]_temp_hyst`
405 Define the PWM vs temperature curve.
406
407 Number of trip points is chip-dependent. Use this for chips
408 which associate trip points to temperature channels.
409
410 RW
411
412There is a third case where trip points are associated to both PWM output
413channels and temperature channels: the PWM values are associated to PWM
414output channels while the temperature values are associated to temperature
415channels. In that case, the result is determined by the mapping between
416temperature inputs and PWM outputs. When several temperature inputs are
417mapped to a given PWM output, this leads to several candidate PWM values.
418The actual result is up to the chip, but in general the highest candidate
419value (fastest fan speed) wins.
420
421
422************
423Temperatures
424************
425
426`temp[1-*]_type`
427 Sensor type selection.
428
429 Integers 1 to 6
430
431 RW
432
433 - 1: CPU embedded diode
434 - 2: 3904 transistor
435 - 3: thermal diode
436 - 4: thermistor
437 - 5: AMD AMDSI
438 - 6: Intel PECI
439
440 Not all types are supported by all chips
441
442`temp[1-*]_max`
443 Temperature max value.
444
445 Unit: millidegree Celsius (or millivolt, see below)
446
447 RW
448
449`temp[1-*]_min`
450 Temperature min value.
451
452 Unit: millidegree Celsius
453
454 RW
455
456`temp[1-*]_max_hyst`
457 Temperature hysteresis value for max limit.
458
459 Unit: millidegree Celsius
460
461 Must be reported as an absolute temperature, NOT a delta
462 from the max value.
463
464 RW
465
466`temp[1-*]_min_hyst`
467 Temperature hysteresis value for min limit.
468 Unit: millidegree Celsius
469
470 Must be reported as an absolute temperature, NOT a delta
471 from the min value.
472
473 RW
474
475`temp[1-*]_input`
476 Temperature input value.
477
478 Unit: millidegree Celsius
479
480 RO
481
482`temp[1-*]_crit`
483 Temperature critical max value, typically greater than
484 corresponding temp_max values.
485
486 Unit: millidegree Celsius
487
488 RW
489
490`temp[1-*]_crit_hyst`
491 Temperature hysteresis value for critical limit.
492
493 Unit: millidegree Celsius
494
495 Must be reported as an absolute temperature, NOT a delta
496 from the critical value.
497
498 RW
499
500`temp[1-*]_emergency`
501 Temperature emergency max value, for chips supporting more than
502 two upper temperature limits. Must be equal or greater than
503 corresponding temp_crit values.
504
505 Unit: millidegree Celsius
506
507 RW
508
509`temp[1-*]_emergency_hyst`
510 Temperature hysteresis value for emergency limit.
511
512 Unit: millidegree Celsius
513
514 Must be reported as an absolute temperature, NOT a delta
515 from the emergency value.
516
517 RW
518
519`temp[1-*]_lcrit`
520 Temperature critical min value, typically lower than
521 corresponding temp_min values.
522
523 Unit: millidegree Celsius
524
525 RW
526
527`temp[1-*]_lcrit_hyst`
528 Temperature hysteresis value for critical min limit.
529
530 Unit: millidegree Celsius
531
532 Must be reported as an absolute temperature, NOT a delta
533 from the critical min value.
534
535 RW
536
537`temp[1-*]_offset`
538 Temperature offset which is added to the temperature reading
539 by the chip.
540
541 Unit: millidegree Celsius
542
543 Read/Write value.
544
545`temp[1-*]_label`
546 Suggested temperature channel label.
547
548 Text string
549
550 Should only be created if the driver has hints about what
551 this temperature channel is being used for, and user-space
552 doesn't. In all other cases, the label is provided by
553 user-space.
554
555 RO
556
557`temp[1-*]_lowest`
558 Historical minimum temperature
559
560 Unit: millidegree Celsius
561
562 RO
563
564`temp[1-*]_highest`
565 Historical maximum temperature
566
567 Unit: millidegree Celsius
568
569 RO
570
571`temp[1-*]_reset_history`
572 Reset temp_lowest and temp_highest
573
574 WO
575
576`temp_reset_history`
577 Reset temp_lowest and temp_highest for all sensors
578
579 WO
580
581`temp[1-*]_enable`
582 Enable or disable the sensors.
583
584 When disabled the sensor read will return -ENODATA.
585
586 - 1: Enable
587 - 0: Disable
588
589 RW
590
Olivier Deprez157378f2022-04-04 15:47:50 +0200591`temp[1-*]_rated_min`
592 Minimum rated temperature.
593
594 Unit: millidegree Celsius
595
596 RO
597
598`temp[1-*]_rated_max`
599 Maximum rated temperature.
600
601 Unit: millidegree Celsius
602
603 RO
604
David Brazdil0f672f62019-12-10 10:32:29 +0000605Some chips measure temperature using external thermistors and an ADC, and
606report the temperature measurement as a voltage. Converting this voltage
607back to a temperature (or the other way around for limits) requires
608mathematical functions not available in the kernel, so the conversion
609must occur in user space. For these chips, all temp* files described
610above should contain values expressed in millivolt instead of millidegree
611Celsius. In other words, such temperature channels are handled as voltage
612channels by the driver.
613
614Also see the Alarms section for status flags associated with temperatures.
615
616
617********
618Currents
619********
620
621`curr[1-*]_max`
622 Current max value
623
624 Unit: milliampere
625
626 RW
627
628`curr[1-*]_min`
629 Current min value.
630
631 Unit: milliampere
632
633 RW
634
635`curr[1-*]_lcrit`
636 Current critical low value
637
638 Unit: milliampere
639
640 RW
641
642`curr[1-*]_crit`
643 Current critical high value.
644
645 Unit: milliampere
646
647 RW
648
649`curr[1-*]_input`
650 Current input value
651
652 Unit: milliampere
653
654 RO
655
656`curr[1-*]_average`
657 Average current use
658
659 Unit: milliampere
660
661 RO
662
663`curr[1-*]_lowest`
664 Historical minimum current
665
666 Unit: milliampere
667
668 RO
669
670`curr[1-*]_highest`
671 Historical maximum current
672 Unit: milliampere
673 RO
674
675`curr[1-*]_reset_history`
676 Reset currX_lowest and currX_highest
677
678 WO
679
680`curr_reset_history`
681 Reset currX_lowest and currX_highest for all sensors
682
683 WO
684
685`curr[1-*]_enable`
686 Enable or disable the sensors.
687
688 When disabled the sensor read will return -ENODATA.
689
690 - 1: Enable
691 - 0: Disable
692
693 RW
694
Olivier Deprez157378f2022-04-04 15:47:50 +0200695`curr[1-*]_rated_min`
696 Minimum rated current.
697
698 Unit: milliampere
699
700 RO
701
702`curr[1-*]_rated_max`
703 Maximum rated current.
704
705 Unit: milliampere
706
707 RO
708
David Brazdil0f672f62019-12-10 10:32:29 +0000709Also see the Alarms section for status flags associated with currents.
710
711*****
712Power
713*****
714
715`power[1-*]_average`
716 Average power use
717
718 Unit: microWatt
719
720 RO
721
722`power[1-*]_average_interval`
723 Power use averaging interval. A poll
724 notification is sent to this file if the
725 hardware changes the averaging interval.
726
727 Unit: milliseconds
728
729 RW
730
731`power[1-*]_average_interval_max`
732 Maximum power use averaging interval
733
734 Unit: milliseconds
735
736 RO
737
738`power[1-*]_average_interval_min`
739 Minimum power use averaging interval
740
741 Unit: milliseconds
742
743 RO
744
745`power[1-*]_average_highest`
746 Historical average maximum power use
747
748 Unit: microWatt
749
750 RO
751
752`power[1-*]_average_lowest`
753 Historical average minimum power use
754
755 Unit: microWatt
756
757 RO
758
759`power[1-*]_average_max`
760 A poll notification is sent to
761 `power[1-*]_average` when power use
762 rises above this value.
763
764 Unit: microWatt
765
766 RW
767
768`power[1-*]_average_min`
769 A poll notification is sent to
770 `power[1-*]_average` when power use
771 sinks below this value.
772
773 Unit: microWatt
774
775 RW
776
777`power[1-*]_input`
778 Instantaneous power use
779
780 Unit: microWatt
781
782 RO
783
784`power[1-*]_input_highest`
785 Historical maximum power use
786
787 Unit: microWatt
788
789 RO
790
791`power[1-*]_input_lowest`
792 Historical minimum power use
793
794 Unit: microWatt
795
796 RO
797
798`power[1-*]_reset_history`
799 Reset input_highest, input_lowest,
800 average_highest and average_lowest.
801
802 WO
803
804`power[1-*]_accuracy`
805 Accuracy of the power meter.
806
807 Unit: Percent
808
809 RO
810
811`power[1-*]_cap`
812 If power use rises above this limit, the
813 system should take action to reduce power use.
814 A poll notification is sent to this file if the
815 cap is changed by the hardware. The `*_cap`
816 files only appear if the cap is known to be
817 enforced by hardware.
818
819 Unit: microWatt
820
821 RW
822
823`power[1-*]_cap_hyst`
824 Margin of hysteresis built around capping and
825 notification.
826
827 Unit: microWatt
828
829 RW
830
831`power[1-*]_cap_max`
832 Maximum cap that can be set.
833
834 Unit: microWatt
835
836 RO
837
838`power[1-*]_cap_min`
839 Minimum cap that can be set.
840
841 Unit: microWatt
842
843 RO
844
845`power[1-*]_max`
846 Maximum power.
847
848 Unit: microWatt
849
850 RW
851
852`power[1-*]_crit`
853 Critical maximum power.
854
855 If power rises to or above this limit, the
856 system is expected take drastic action to reduce
857 power consumption, such as a system shutdown or
858 a forced powerdown of some devices.
859
860 Unit: microWatt
861
862 RW
863
864`power[1-*]_enable`
865 Enable or disable the sensors.
866
867 When disabled the sensor read will return
868 -ENODATA.
869
870 - 1: Enable
871 - 0: Disable
872
873 RW
874
Olivier Deprez157378f2022-04-04 15:47:50 +0200875`power[1-*]_rated_min`
876 Minimum rated power.
877
878 Unit: microWatt
879
880 RO
881
882`power[1-*]_rated_max`
883 Maximum rated power.
884
885 Unit: microWatt
886
887 RO
888
David Brazdil0f672f62019-12-10 10:32:29 +0000889Also see the Alarms section for status flags associated with power readings.
890
891******
892Energy
893******
894
895`energy[1-*]_input`
896 Cumulative energy use
897
898 Unit: microJoule
899
900 RO
901
902`energy[1-*]_enable`
903 Enable or disable the sensors.
904
905 When disabled the sensor read will return
906 -ENODATA.
907
908 - 1: Enable
909 - 0: Disable
910
911 RW
912
913********
914Humidity
915********
916
917`humidity[1-*]_input`
918 Humidity
919
920 Unit: milli-percent (per cent mille, pcm)
921
922 RO
923
924
925`humidity[1-*]_enable`
926 Enable or disable the sensors
927
928 When disabled the sensor read will return
929 -ENODATA.
930
931 - 1: Enable
932 - 0: Disable
933
934 RW
935
Olivier Deprez157378f2022-04-04 15:47:50 +0200936`humidity[1-*]_rated_min`
937 Minimum rated humidity.
938
939 Unit: milli-percent (per cent mille, pcm)
940
941 RO
942
943`humidity[1-*]_rated_max`
944 Maximum rated humidity.
945
946 Unit: milli-percent (per cent mille, pcm)
947
948 RO
949
David Brazdil0f672f62019-12-10 10:32:29 +0000950******
951Alarms
952******
953
954Each channel or limit may have an associated alarm file, containing a
955boolean value. 1 means than an alarm condition exists, 0 means no alarm.
956
957Usually a given chip will either use channel-related alarms, or
958limit-related alarms, not both. The driver should just reflect the hardware
959implementation.
960
961+-------------------------------+-----------------------+
962| **`in[0-*]_alarm`, | Channel alarm |
963| `curr[1-*]_alarm`, | |
964| `power[1-*]_alarm`, | - 0: no alarm |
965| `fan[1-*]_alarm`, | - 1: alarm |
966| `temp[1-*]_alarm`** | |
967| | RO |
968+-------------------------------+-----------------------+
969
970**OR**
971
972+-------------------------------+-----------------------+
973| **`in[0-*]_min_alarm`, | Limit alarm |
974| `in[0-*]_max_alarm`, | |
975| `in[0-*]_lcrit_alarm`, | - 0: no alarm |
976| `in[0-*]_crit_alarm`, | - 1: alarm |
977| `curr[1-*]_min_alarm`, | |
978| `curr[1-*]_max_alarm`, | RO |
979| `curr[1-*]_lcrit_alarm`, | |
980| `curr[1-*]_crit_alarm`, | |
981| `power[1-*]_cap_alarm`, | |
982| `power[1-*]_max_alarm`, | |
983| `power[1-*]_crit_alarm`, | |
984| `fan[1-*]_min_alarm`, | |
985| `fan[1-*]_max_alarm`, | |
986| `temp[1-*]_min_alarm`, | |
987| `temp[1-*]_max_alarm`, | |
988| `temp[1-*]_lcrit_alarm`, | |
989| `temp[1-*]_crit_alarm`, | |
990| `temp[1-*]_emergency_alarm`** | |
991+-------------------------------+-----------------------+
992
993Each input channel may have an associated fault file. This can be used
994to notify open diodes, unconnected fans etc. where the hardware
995supports it. When this boolean has value 1, the measurement for that
996channel should not be trusted.
997
998`fan[1-*]_fault` / `temp[1-*]_fault`
999 Input fault condition
1000
1001 - 0: no fault occurred
1002 - 1: fault condition
1003
1004 RO
1005
1006Some chips also offer the possibility to get beeped when an alarm occurs:
1007
1008`beep_enable`
1009 Master beep enable
1010
1011 - 0: no beeps
1012 - 1: beeps
1013
1014 RW
1015
1016`in[0-*]_beep`, `curr[1-*]_beep`, `fan[1-*]_beep`, `temp[1-*]_beep`,
1017 Channel beep
1018
1019 - 0: disable
1020 - 1: enable
1021
1022 RW
1023
1024In theory, a chip could provide per-limit beep masking, but no such chip
1025was seen so far.
1026
1027Old drivers provided a different, non-standard interface to alarms and
1028beeps. These interface files are deprecated, but will be kept around
1029for compatibility reasons:
1030
1031`alarms`
1032 Alarm bitmask.
1033
1034 RO
1035
1036 Integer representation of one to four bytes.
1037
1038 A '1' bit means an alarm.
1039
1040 Chips should be programmed for 'comparator' mode so that
1041 the alarm will 'come back' after you read the register
1042 if it is still valid.
1043
1044 Generally a direct representation of a chip's internal
1045 alarm registers; there is no standard for the position
1046 of individual bits. For this reason, the use of this
1047 interface file for new drivers is discouraged. Use
1048 `individual *_alarm` and `*_fault` files instead.
1049 Bits are defined in kernel/include/sensors.h.
1050
1051`beep_mask`
1052 Bitmask for beep.
1053 Same format as 'alarms' with the same bit locations,
1054 use discouraged for the same reason. Use individual
1055 `*_beep` files instead.
1056 RW
1057
1058
1059*******************
1060Intrusion detection
1061*******************
1062
1063`intrusion[0-*]_alarm`
1064 Chassis intrusion detection
1065
1066 - 0: OK
1067 - 1: intrusion detected
1068
1069 RW
1070
1071 Contrary to regular alarm flags which clear themselves
1072 automatically when read, this one sticks until cleared by
1073 the user. This is done by writing 0 to the file. Writing
1074 other values is unsupported.
1075
1076`intrusion[0-*]_beep`
1077 Chassis intrusion beep
1078
1079 0: disable
1080 1: enable
1081
1082 RW
1083
1084****************************
1085Average sample configuration
1086****************************
1087
1088Devices allowing for reading {in,power,curr,temp}_average values may export
1089attributes for controlling number of samples used to compute average.
1090
1091+--------------+---------------------------------------------------------------+
1092| samples | Sets number of average samples for all types of measurements. |
1093| | |
1094| | RW |
1095+--------------+---------------------------------------------------------------+
1096| in_samples | Sets number of average samples for specific type of |
1097| power_samples| measurements. |
1098| curr_samples | |
1099| temp_samples | Note that on some devices it won't be possible to set all of |
1100| | them to different values so changing one might also change |
1101| | some others. |
1102| | |
1103| | RW |
1104+--------------+---------------------------------------------------------------+
1105
1106sysfs attribute writes interpretation
1107-------------------------------------
1108
1109hwmon sysfs attributes always contain numbers, so the first thing to do is to
1110convert the input to a number, there are 2 ways todo this depending whether
1111the number can be negative or not::
1112
1113 unsigned long u = simple_strtoul(buf, NULL, 10);
1114 long s = simple_strtol(buf, NULL, 10);
1115
1116With buf being the buffer with the user input being passed by the kernel.
1117Notice that we do not use the second argument of strto[u]l, and thus cannot
1118tell when 0 is returned, if this was really 0 or is caused by invalid input.
1119This is done deliberately as checking this everywhere would add a lot of
1120code to the kernel.
1121
1122Notice that it is important to always store the converted value in an
1123unsigned long or long, so that no wrap around can happen before any further
1124checking.
1125
1126After the input string is converted to an (unsigned) long, the value should be
1127checked if its acceptable. Be careful with further conversions on the value
1128before checking it for validity, as these conversions could still cause a wrap
1129around before the check. For example do not multiply the result, and only
1130add/subtract if it has been divided before the add/subtract.
1131
1132What to do if a value is found to be invalid, depends on the type of the
1133sysfs attribute that is being set. If it is a continuous setting like a
1134tempX_max or inX_max attribute, then the value should be clamped to its
1135limits using clamp_val(value, min_limit, max_limit). If it is not continuous
1136like for example a tempX_type, then when an invalid value is written,
1137-EINVAL should be returned.
1138
1139Example1, temp1_max, register is a signed 8 bit value (-128 - 127 degrees)::
1140
1141 long v = simple_strtol(buf, NULL, 10) / 1000;
1142 v = clamp_val(v, -128, 127);
1143 /* write v to register */
1144
1145Example2, fan divider setting, valid values 2, 4 and 8::
1146
1147 unsigned long v = simple_strtoul(buf, NULL, 10);
1148
1149 switch (v) {
1150 case 2: v = 1; break;
1151 case 4: v = 2; break;
1152 case 8: v = 3; break;
1153 default:
1154 return -EINVAL;
1155 }
1156 /* write v to register */