sensors.conf(5)


NAME

   sensors.conf - libsensors configuration file

DESCRIPTION

   sensors.conf  describes  how  libsensors, and so all programs using it,
   should translate the raw readings from the kernel modules to real-world
   values.

SEMANTICS

   On  a given system, there may be one or more hardware monitoring chips.
   Each chip may have several features. For example, the LM78  monitors  7
   voltage   inputs,  3  fans  and  one  temperature.  Feature  names  are
   standardized. Typical feature names are in0, in1,  in2...  for  voltage
   inputs,  fan1,  fan2,  fan3...  for fans and temp1, temp2, temp3... for
   temperature inputs.

   Each  feature  may  in  turn  have  one  or  more  sub-features,   each
   representing  an attribute of the feature: input value, low limit, high
   limit, alarm, etc. Sub-feature names  are  standardized  as  well.  For
   example,   the   first   voltage   input  (in0)  would  typically  have
   sub-features in0_input (measured value), in0_min (low  limit),  in0_max
   (high  limit)  and  in0_alarm  (alarm  flag).  Which  sub-features  are
   actually present depend on the exact chip type.

   The sensors.conf configuration file will let you configure  each  chip,
   feature and sub-feature in a way that makes sense for your system.

   The  rest  of  this section describes the meaning of each configuration
   statement.

   CHIP STATEMENT
   A chip statement selects for which chips all following compute,  label,
   ignore  and  set  statements  are meant. A chip selection remains valid
   until the next chip statement. Example:

          chip "lm78-*" "lm79-*"

   If a chip matches at least one of the chip descriptions, the  following
   configuration lines are examined for it, otherwise they are ignored.

   A chip description is built from several elements, separated by dashes.
   The first element is the chip type, the second element is the  name  of
   the  bus, and the third element is the hexadecimal address of the chip.
   Such chip descriptions are printed by sensors(1) as the first line  for
   every chip.

   The  name of the bus is either isa, pci, virtual, spi-* or i2c-N with N
   being a bus number as bound with  a  bus  statement.  This  list  isn't
   necessarily  exhaustive  as support for other bus types may be added in
   the future.

   You may substitute the wildcard operator  *  for  every  element.  Note
   however  that it wouldn't make any sense to specify the address without
   the bus type, so the address part is plain omitted when  the  bus  type
   isn't specified.  Here is how you would express the following matches:

   LM78 chip at address 0x2d on I2C bus 1      lm78-i2c-1-2d

   LM78 chip at address 0x2d on any I2C bus    lm78-i2c-*-2d
   LM78 chip at address 0x290 on the ISA bus   lm78-isa-0290
   Any LM78 chip on I2C bus 1                  lm78-i2c-1-*
   Any LM78 on any I2C bus                     lm78-i2c-*-*
   Any LM78 chip on the ISA bus                lm78-isa-*
   Any LM78 chip                               lm78-*
   Any chip at address 0x2d on I2C bus 1       *-i2c-1-2d
   Any chip at address 0x290 on the ISA bus    *-isa-0290

   If  several  chip  statements  match  a  specific  chip,  they  are all
   considered.

   LABEL STATEMENT
   A label statement describes how a feature should  be  called.  Features
   without  a  label  statement  are  just  called  by their feature name.
   Applications can use this to label the readings they present. Example:

          label in3 "+5V"

   The first argument is the feature name.  The  second  argument  is  the
   feature description.

   Note  that  you must use the raw feature name, which is not necessarily
   the one displayed by "sensors" by default. Use "sensors -u" to see  the
   raw feature names. Same applies to all other statement types below.

   IGNORE STATEMENT
   An ignore statement is a hint that a specific feature should be ignored
   - probably because it returns bogus values (for example, because a  fan
   or temperature sensor is not connected). Example:

          ignore fan1

   The  only  argument is the feature name. Please note that this does not
   disable anything in the actual sensor chip; it simply hides the feature
   in question from libsensors users.

   COMPUTE STATEMENT
   A  compute  statement  describes  how  a  feature's raw value should be
   translated to a real-world value, and how a real-world value should  be
   translated  back  to a raw value again. This is most useful for voltage
   sensors, because in general sensor  chips  have  a  limited  range  and
   voltages  outside  this  range must be divided (using resistors) before
   they can be monitored.  Example:

          compute in3 ((6.8/10)+1)*@, @/((6.8/10)+1)

   The example above expresses the fact that the voltage input is  divided
   using two resistors of values 6.8 Ohm and 10 Ohm, respectively. See the
   VOLTAGE COMPUTATION DETAILS section below for details.

   The first argument is the feature  name.  The  second  argument  is  an
   expression  which  specifies  how  a  raw value must be translated to a
   real-world value; `@' stands here  for  the  raw  value.  This  is  the
   formula  which  will  be applied when reading values from the chip. The
   third argument is an expression that specifies how a  real-world  value
   should  be  translated  back  to  a  raw value; `@' stands here for the
   real-world value. This is  the  formula  which  will  be  applied  when
   writing values to the chip. The two formulas are obviously related, and
   are separated by a comma.

   A compute statement applies to all sub-features of the  target  feature
   for  which  it makes sense. For example, the above example would affect
   sub-features in3_min and in3_max (which are  voltage  values)  but  not
   in3_alarm (which is a boolean flag.)

   The following operators are supported in compute statements:
          + - * / ( ) ^ `
   ^x means exp(x) and `x means ln(x).

   You  may  use  the  name  of sub-features in these expressions; current
   readings are  substituted.  You  should  be  careful  though  to  avoid
   circular references.

   If  at any moment a translation between a raw and a real-world value is
   called for, but no compute statement applies, a one-on-one  translation
   is used instead.

   SET STATEMENT
   A  set  statement  is used to write a sub-feature value to the chip. Of
   course not all sub-feature values can be set that  way,  in  particular
   input  values  and  alarm flags can not. Valid sub-features are usually
   min/max limits.  Example:

          set in3_min  5 * 0.95
          set in3_max  5 * 1.05

   The example above basically configures the chip to allow a 5%  deviance
   for the +5V power input.

   The  first  argument  is  the  feature  name. The second argument is an
   expression which determines the written value. If there is an  applying
   compute statement, this value is fed to its third argument to translate
   it to a raw value.

   You may use the name of  sub-features  in  these  expressions;  current
   readings  are  substituted.  You  should  be  careful  though  to avoid
   circular references.

   Please note that set statements are only executed  by  sensors(1)  when
   you  use  the  -s option. Typical graphical sensors applications do not
   care about these statements at all.

   BUS STATEMENT
   A bus statement binds the description of an I2C or SMBus adapter  to  a
   bus  number.   This  makes  it  possible  to refer to an adapter in the
   configuration file, independent of the  actual  correspondence  of  bus
   numbers  and  actual adapters (which may change from moment to moment).
   Example:

          bus "i2c-0" "SMBus PIIX4 adapter at e800"

   The first argument is the bus number. It  is  the  literal  text  i2c-,
   followed  by  a  number.  As  there is a dash in this argument, it must
   always be quoted.

   The second argument is the adapter name,  it  must  match  exactly  the
   adapter  name  as  it appears in /sys/class/i2c-adapter/i2c-*/name.  It
   should always be quoted as well  as  it  will  most  certainly  contain
   spaces or dashes.

   The   bus   statements   may   be  scattered  randomly  throughout  the
   configuration file; there is no need to place the bus line  before  the
   place  where  its  binding  is  referred to. Still, as a matter of good
   style, we suggest you place all bus statements together at the  top  of
   your configuration file.

   Running sensors --bus-list will generate these lines for you.

   In  the  case where multiple configuration files are used, the scope of
   each bus statement is the configuration file it was  defined  in.  This
   makes  it  possible  to  have bus statements in all configuration files
   which will not unexpectedly interfere with each other.

   STATEMENT ORDER
   Statements can go in any order, however it is recommended to  put  `set
   fanX_div' statements before `set fanX_min' statements, in case a driver
   doesn't preserve the  fanX_min  setting  when  the  fanX_div  value  is
   changed.  Even  if  the  driver  does,  it's  still  better  to put the
   statements in this order to avoid accuracy loss.

VOLTAGE COMPUTATION DETAILS

   Most voltage sensors in sensor chips have a range of 0 to 4.08 V.  This
   is  generally  sufficient for the +3.3V and CPU supply voltages, so the
   sensor chip reading is the actual voltage.

   Other supply voltages must be scaled with an external resistor network.
   The  driver  reports  the value at the chip's pin (0 - 4.08 V), and the
   userspace application must convert this raw value to an actual voltage.
   The compute statements provide this facility.

   Unfortunately   the  resistor  values  vary  among  motherboard  types.
   Therefore you have to figure out the correct resistor values  for  your
   own motherboard.

   For positive voltages (typically +5V and +12V), two resistors are used,
   with the following formula:
           R1 = R2 * (Vs/Vin - 1)

   where:
           R1 and R2 are the resistor values
           Vs is the actual voltage being monitored
           Vin is the voltage at the pin

   This leads to the following compute formula:
           compute inX @*((R1/R2)+1),  @/(((R1/R2)+1)

   Real-world formula for +5V and +12V would look like:
           compute in3 @*((6.8/10)+1), @/((6.8/10)+1)
           compute in4 @*((28/10)+1),  @/((28/10)+1)

   For negative voltages (typically -5V and -12V), two resistors are  used
   as  well,  but  different  boards use different strategies to bring the
   voltage value into the  0  -  4.08  V  range.  Some  use  an  inverting
   amplifier,  others  use  a  positive  reference  voltage. This leads to
   different computation formulas. Note that most users won't have to care
   because  most modern motherboards make little use of -12V and no use of
   -5V so they do not bother monitoring these voltage inputs.

   Real-world examples for the inverting amplifier case:
           compute in5 -@*(240/60), -@/(240/60)
           compute in6 -@*(100/60), -@/(100/60)

   Real-world examples for the positive voltage reference case:
           compute    in5    @*(1+232/56)    -    4.096*232/56,    (@    +
   4.096*232/56)/(1+232/56)
           compute    in6    @*(1+120/56)    -    4.096*120/56,    (@    +
   4.096*120/56)/(1+120/56)

   Many recent monitoring chips have a  0  -  2.04  V  range,  so  scaling
   resistors are even more needed, and resistor values are different.

   There  are  also  a  few  chips  out  there which have internal scaling
   resistors, meaning that their value is known and  doesn't  change  from
   one  motherboard  to  the  next.  For  these  chips, the driver usually
   handles the scaling so it is transparent to the  user  and  no  compute
   statements are needed.

TEMPERATURE CONFIGURATION

   On  top  of  the  usual  features,  temperatures  can have two specific
   sub-features:  temperature  sensor  type  (tempX_type)  and  hysteresis
   values (tempX_max_hyst, tempX_crit_hyst etc.).

   THERMAL SENSOR TYPES
   Available thermal sensor types:

   1   PII/Celeron Diode
   2   3904 transistor
   3   thermal diode
   4   thermistor
   5   AMD AMDSI
   6   Intel PECI

   For example, to set temp1 to thermistor type, use:

          set temp1_type 4

   Only  certain  chips support thermal sensor type change, and even these
   usually only support some of the  types  above.  Please  refer  to  the
   specific  driver documentation to find out which types are supported by
   your chip.

   In theory, the BIOS should have configured the sensor types  correctly,
   so you shouldn't have to touch them, but sometimes it isn't the case.

   THERMAL HYSTERESIS MECHANISM
   Many  monitoring  chips do not handle the high and critical temperature
   limits as simple limits. Instead, they have two values for each  limit,
   one  which triggers an alarm when the temperature rises and another one
   which clears the alarm  when  the  temperature  falls.  The  latter  is
   typically  a  few  degrees below the former. This mechanism is known as
   hysteresis.

   The reason for implementing things that way is  that  high  temperature
   alarms  typically trigger an action to attempt to cool the system down,
   either by scaling down the CPU frequency, or by  kicking  in  an  extra
   fan.  This should normally let the temperature fall in a timely manner.
   If this was clearing the alarm immediately, then the  system  would  be
   back  to  its  original state where the temperature rises and the alarm
   would immediately trigger again, causing an undesirable tight  fan  on,
   fan  off  loop.  The  hysteresis  mechanism  ensures that the system is
   really cool before the fan stops, so that it will not have to  kick  in
   again immediately.

   So,  in  addition  to  tempX_max, many chips have a tempX_max_hyst sub-
   feature.  Likewise,  tempX_crit  often  comes   with   tempX_crit_hyst.
   tempX_emerg_hyst,  tempX_min_hyst  and  tempX_lcrit_hyst  exist too but
   aren't as common.  Example:

          set temp1_max      60
          set temp1_max_hyst 56

   The hysteresis mechanism can be disabled by giving both limits the same
   value.

   Note  that it is strongly recommended to set the hysteresis value after
   the limit value it relates to in the configuration file. Implementation
   details  on the hardware or driver side may cause unexpected results if
   the hysteresis value is set first.

BEEPS

   Some chips  support  alarms  with  beep  warnings.  When  an  alarm  is
   triggered  you  can be warned by a beeping signal through your computer
   speaker. On top of per-feature beep flags, there is  usually  a  master
   beep  control  switch  to  enable  or  disable beeping globally. Enable
   beeping using:

          set beep_enable 1

   or disable it using:

          set beep_enable 0

WHICH STATEMENT APPLIES

   If more than one statement of  the  same  kind  applies  at  a  certain
   moment, the last one in the configuration file is used. So usually, you
   should put more general chip statements at the top, so you can overrule
   them below.

SYNTAX

   Comments  are  introduced by hash marks. A comment continues to the end
   of the line. Empty lines,  and  lines  containing  only  whitespace  or
   comments  are  ignored.  Other lines have one of the below forms. There
   must be whitespace between each element, but the amount  of  whitespace
   is  unimportant.  A line may be continued on the next line by ending it
   with a backslash; this does not work within a comment, NAME or NUMBER.

          bus NAME NAME NAME
          chip NAME-LIST
          label NAME NAME
          compute NAME EXPR , EXPR
          ignore NAME
          set NAME EXPR

   A  NAME  is  a  string.  If  it  only  contains  letters,  digits   and
   underscores,  it  does  not  have to be quoted; in all other cases, you
   must use double quotes around it.   Within  quotes,  you  can  use  the
   normal escape-codes from C.

   A  NAME-LIST  is one or more NAME items behind each other, separated by
   whitespace.

   A EXPR is of one of the below forms:

          NUMBER
          NAME
          @
          EXPR + EXPR
          EXPR - EXPR
          EXPR * EXPR
          EXPR / EXPR
          - EXPR
          ^ EXPR
          ` EXPR
          ( EXPR )

   A NUMBER is a floating-point number. `10', `10.4' and `.4' are examples
   of valid floating-point numbers; `10.' or `10E4' are not valid.

FILES

   /etc/sensors3.conf
   /etc/sensors.conf
          The     system-wide     libsensors(3)     configuration    file.
          /etc/sensors3.conf is tried first,  and  if  it  doesn't  exist,
          /etc/sensors.conf is used instead.

   /etc/sensors.d
          A   directory   where   you   can   put   additional  libsensors
          configuration files.  Files found  in  this  directory  will  be
          processed  in alphabetical order after the default configuration
          file. Files with names that start with a dot are ignored.

SEE ALSO

   libsensors(3)

AUTHOR

   Frodo Looijaard and the lm_sensors group http://www.lm-sensors.org/





Opportunity


Personal Opportunity - Free software gives you access to billions of dollars of software at no cost. Use this software for your business, personal use or to develop a profitable skill. Access to source code provides access to a level of capabilities/information that companies protect though copyrights. Open source is a core component of the Internet and it is available to you. Leverage the billions of dollars in resources and capabilities to build a career, establish a business or change the world. The potential is endless for those who understand the opportunity.

Business Opportunity - Goldman Sachs, IBM and countless large corporations are leveraging open source to reduce costs, develop products and increase their bottom lines. Learn what these companies know about open source and how open source can give you the advantage.





Free Software


Free Software provides computer programs and capabilities at no cost but more importantly, it provides the freedom to run, edit, contribute to, and share the software. The importance of free software is a matter of access, not price. Software at no cost is a benefit but ownership rights to the software and source code is far more significant.


Free Office Software - The Libre Office suite provides top desktop productivity tools for free. This includes, a word processor, spreadsheet, presentation engine, drawing and flowcharting, database and math applications. Libre Office is available for Linux or Windows.





Free Books


The Free Books Library is a collection of thousands of the most popular public domain books in an online readable format. The collection includes great classical literature and more recent works where the U.S. copyright has expired. These books are yours to read and use without restrictions.


Source Code - Want to change a program or know how it works? Open Source provides the source code for its programs so that anyone can use, modify or learn how to write those programs themselves. Visit the GNU source code repositories to download the source.





Education


Study at Harvard, Stanford or MIT - Open edX provides free online courses from Harvard, MIT, Columbia, UC Berkeley and other top Universities. Hundreds of courses for almost all major subjects and course levels. Open edx also offers some paid courses and selected certifications.


Linux Manual Pages - A man or manual page is a form of software documentation found on Linux/Unix operating systems. Topics covered include computer programs (including library and system calls), formal standards and conventions, and even abstract concepts.