Updated: 2022/Sep/29

Please read Privacy Policy. It's for your privacy.


DBCOOL(4)                    Device Drivers Manual                   DBCOOL(4)

NAME
     dbcool, adm1027, adm1030, adm1031, adt7463, adt7466, adt7467, adt7468,
     adt7473, adt7475, adt7476, adt7490, emc6d103s - dbCool(tm) family of
     environmental monitors and fan controllers

SYNOPSIS
     dbcool* at ki2c?
     dbcool* at iic? addr 0x2e

DESCRIPTION
     The dbcool driver provides support for the Analog Devices dbCool and the
     SMSC EMC6D103S environmental monitor chips to be used with the envsys(4)
     API.

     These chips support up to fifteen sensors.  Not all of the following
     sensors are supported on all chips.

           Sensor    Units    Typical Use
           l_temp    uK       local chip temperature
           r1_temp   uK       CPU temperature
           r2_temp   uK       GPU temperature
           Vccp      uV DC    CPU Vcore
           Vcc       uV DC    Chip's supply voltage
           2.5V      uV DC    2.5V supply
           5V        uV DC    5V supply
           12V       uV DC    12V supply
           Vtt       uV DC    PECI ref. voltage (2.25V ref, ADT7490 only)
           Imon      uV DC    Current monitor (2.25V ref, ADT7490 only)
           AIN1      uV DC    Analog In (2.25V ref, ADT7466 only)
           AIN2      uV DC    Analog In (2.25V ref, ADT7466 only)
           fan1      RPM      Chassis Fan
           fan2      RPM      Chassis Fan
           fan3      RPM      Chassis Fan
           fan4      RPM      Chassis Fan
           VID       (none)   CPU VID code (selected chips only)

     Each temperature and voltage sensor has programmable hardware high- and
     low-limits; fan sensors have only a low-limit.  These limits can be set
     using the envstat(8) utility.  Due to hardware limitations, the minimum
     permissible value for the fan speed low-limits is 83 RPM.

     Temperature sensors also have Tmin, Trange, Thyst, and Ttherm sysctl(8)
     variables; these values are used by the fan speed controllers.  Their
     values are in units of degC, since this is the unit which is programmed
     into the device registers.

     All members of the dbCool family support Pulse-Width Modulated (PWM) fan
     speed control based on temperature thresholds - the fan will spin up when
     its associated thermal sensor(s) exceeds its configured Tmin value.  The
     fan will go faster as the temperature rises, and will slow down as the
     temperature falls.  If the temperature exceeds the sensor's Ttherm value,
     the THERM signal will be asserted, and if enabled the fan will run at
     full speed.  The fan will be turned off when the sensor(s) that triggered
     it reports a temperature which is at least Thyst degrees below its Tmin
     threshold.

     Each fan controller is programmable using the following sysctl(8)
     variables.

           hw.dbcool0.fan_ctl_0.behavior
           hw.dbcool0.fan_ctl_0.min_duty
           hw.dbcool0.fan_ctl_0.max_duty
           hw.dbcool0.fan_ctl_0.cur_duty

     The behavior variable controls the selection of temperature sensors
     associated with the fan controller.  When the associated temperature
     sensor reaches its Tmin value, the fan controller starts the fan at its
     minimum duty cycle; when the associated temperature sensor reaches its
     Ttherm value and asserts the THERM signal (or if an external THERM signal
     is asserted), the fan controller sets the fan speed to a 100% duty cycle.
     Between these two settings, each temperature sensor is used to calculate
     a duty cycle linearly based on the slope defined by the temperature
     sensor's range variable.  When the associated temperature falls at least
     Thyst degrees below its Tmin value, the fan controller will turn off the
     fan.  (On the ADM1030, the value for Thyst is fixed at 5 degC.)

     Valid values for the behavior variable are:

           local           (not available on ADM1030)
           remote1
           remote2         (not available on ADM1030)
           local+remote2   (not available on ADM1030)
           all-temps
           full-speed      (not available on ADM1030)
           manual
           disabled

     When the behavior variable is set to "manual", the cur-duty variable
     becomes user-writable and can be set to any value between 0 and 100
     inclusive to control the fan's duty cycle manually.  In all other
     behavior modes, the cur-duty variable is read-only and updates are
     ignored.

     The min-duty and max-duty variables define the range over which the fan
     controller will manage the fan's duty cycle.  On the ADM1030, these
     values are not separately controllable.  The max-duty is fixed at 100%,
     and the cur-duty variable is used to specify the minimum duty cycle when
     the fan controller is running in automatic mode.

     Note that the duty-cycle value does not directly correspond to the fan's
     speed.  That is, a 33% duty cycle does not mean that the fan runs at 33%
     of its maximum speed; in actuality, a 33% duty cycle drives the fan at a
     speed close to 50% of its maximum.  Fan speed correlates approximately to
     the square root of the duty cycle.

EXAMPLES
     The envstat(8) utility can be used to determine the sensors supported:

                       Current  CritMax  WarnMax  WarnMin  CritMin Unit
            l_temp:     44.250                                     degC
           r1_temp:     41.250                                     degC
           r2_temp:        N/A
              Vccp:      0.002                                     V
               Vcc:      3.351                                     V
              fan1:        N/A
              fan2:        N/A
              fan3:        N/A
              fan4:        N/A

     Using this information, the following commands in /etc/envsys.conf will
     set appropriate limits for CPU temperature and chip supply voltage, and
     powerd will be notified if the limits are exceeded:

           dbcool0 {
                   sensor1 {
                           warning-max  = 60C;
                           critical-max = 65C;
                   }
                   sensor4 {
                           critical-min = 3.1;
                           warning-min =  3.2;
                           critical-max = 3.5;
                   }
           }

SEE ALSO
     envsys(4), iic(4), envstat(8), powerd(8), sysctl(8)

HISTORY
     The dbcool device appeared in NetBSD 5.0.

BUGS
     Although the sensor limit registers can be programmed, there is currently
     no use of the dbCool chips' ability to generate an SMBus interrupt when
     the limits are exceeded.  Limit checking and event generation are done in
     software, and are performed only when the sensor values are polled and
     refreshed.

     The ADT7466 chip, although officially a member of the dbCool family, is
     programmed quite differently.  The fan controllers on this chip are not
     currently implemented.

     The PECI (Processor Environment Control Interface) temperature sensors
     and the associated PWM behavior modes on the ADT7490 are not currently
     supported.

NetBSD 10.99                     June 10, 2016                    NetBSD 10.99