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