Lm_sensors: sensores de la placa base

Todas las placas base actuales incluyen una serie de sensores para monitorizar temperaturas y voltajes. Gracias a lm-sensors podemos leer estos sensores en Linux. Como siempre, la instalación en Gentoo resulta sencilla :-)

Configuración del kernel

Esta es la configuración básica que cualquier modelo de placa requiere.

Code maturity level options --->
    [*] Prompt for development and/or incomplete code/drivers
Bus options (PCI etc.) --->
    [*] PCI support
Device Drivers --->
    I2C support --->
      <M> I2C support
      <M>   I2C device interface
Hardware Monitoring support  --->
      <M> Hardware Monitoring support

A esta configuración hay que añadir las opciones que el comando sensors-detect (explicado a continuación) nos indique que son necesarias para nuestra placa. En concreto, para mi placa base actual, una DFI Lanparty UT 250GB con chipset Nforce3, he tenido que añadir dos opciones más, por lo que mi configuración final del kernel queda asi

Code maturity level options --->
    [*] Prompt for development and/or incomplete code/drivers
Bus options (PCI etc.) --->
    [*] PCI support
Device Drivers --->
    I2C support --->
      <M> I2C support
      <M>   I2C device interface
            I2C Hardware Bus support --->
              <M> ISA Bus support
    I2C Hardware Sensors Chip support --->
      <M> ITE IT87xx and compatibles

Instalación de lm_sensors

Antes de nada, para evitar que se detecten mal los sensores deberemos de eliminar cualquier modulo i2c que este ejecutandose. También hay que asegurarse de que la versión de lm-sensors que se va a instalar es la recomendada para nuestra versión de kernel. Una vez comprobado ejecutar

# emerge -av lm_sensors

Para detectar los sensores que son necesarios y por tanto saber que opciones hay que añadir al kernel (además de las anteriores), ejecutar

# sensors-detect

En mi caso, la parte interesante de la salida del comando es

# sensors-detect
...
Driver `it87' (should be inserted):
Detects correctly:
* ISA bus address 0x0290 (Busdriver `i2c-isa')
Chip `ITE 8712F Super IO Sensors' (confidence: 9)
...

De ahi que en el apartado anterior haya añadido las dos opciones que he comentado.

Tras ejecutar este comando se nos genera el /etc/conf.d/lm_sensors que contiene los módulos que se cargarán para poder leer los sensores. Para no tener problemas, asegúrate de que todos los modulos que se listan en dicho archivo están marcados en el kernel. En mi caso, para mi placa base este es el contenido que me ha generado sensors-detect:

LOADMODULES=yes
INITSENSORS=yes
MODULE_0=i2c-isa
MODULE_1=it87

Como en mi placa no está bien indicado el nombre de los sensores, he editado /etc/sensors.conf y en la sección chip "it87-*" he establecido los siguientes nombres:

label in0 "VCore"

    label in1 "Vchipset"
    ...
    label temp1       "CPU Temp"
    label temp2       "Mosfet Temp"
    label temp3       "Sys Temp"

Finalmente, para que se carguen los sensores al iniciar añadimos el servicio lm_sensors al arranque e iniciamos el servicio

# rc-update add lm_sensors default
# /etc/init.d/lm_sensors start

Para leer los valores podemos usar el comando sensors o cualquiera de los otros muchos programas que soportan lm_sensors como kde-misc/ksensors, xfce-extra/xfce4-sensors, x11-plugins/wmsensormon, x11-plugins/gkrellm-sensors, gnome-extra/sensors-applet, x11-misc/superkaramba, gnome-extra/gdesklets-core, ...