Monitorizar temperaturas de hardware

De Guía Ubuntu
Revisión a fecha de 01:41 8 feb 2008; Infinito (Discusión | contribuciones)

(dif) ← Revisión anterior | Revisión actual (dif) | Revisión siguiente → (dif)
Saltar a: navegación, buscar

En GNU/Linux se puede monitorizar las temperaturas del procesador, la placa base, los discos duros, así como las velocidades de los ventiladores. Todo esto gracias a lm-sensors.


Instalar lm-sensors

Lo primero que hemos de hacer es instalar el paquete lm-sensors y posiblemente sensord desde synaptic ó desde linea de comandos con un simple:

$ sudo apt-get install lm-sensors sensord

Una vez instalado vamos a comprobar si tenemos creados los archivos de dispositivos i2c necesarios para lm-sensors, para comprobarlo hacemos lo siguiente:

$ sudo ls /dev/i2c*

Si te aparece una lista de archivos i2c (i2c-0, i2c-1, etc...) entonces salta directamente al apartado de la configuración de lm-sensors, de lo contrario continúa.

Crear dispositivos

Ahora creamos los archivos i2c, para ello utilizamos:

$ cd /dev
$ sudo MAKEDEV i2c
$ ls i2c*
Nota clasica.png La siguiente información sobre la creación de los archivos de dispositivos en Ubuntu Dapper ha sido extraído de la guía Ubuntu Dapper en inglés.

Ahora puede que aparezca una lista con los archivos i2c creados, si todavía no os aparece ninguno o dice que no ha encontrado ningún archivo, entonces hacemos:

$ sudo gedit makedev.sh

Copiamos el siguiente script y lo pegamos en el archivo que acabamos de crear:

#!/bin/bash

# Here you can set several defaults.

# The number of devices to create (max: 256)
NUMBER=32

# The owner and group of the devices
OUSER=root
OGROUP=root
# The mode of the devices
MODE=600

# This script doesn't need to be run if devfs is used
if [ -r /proc/mounts ] ; then
if grep -q "/dev devfs" /proc/mounts ; then
echo "You do not need to run this script as your system uses devfs."
exit;
fi
fi

i=0;

while [ $i -lt $NUMBER ] ; do
echo /dev/i2c-$i
mknod -m $MODE /dev/i2c-$i c 89 $i || exit
chown "$OUSER:$OGROUP" /dev/i2c-$i || exit
i=$[$i + 1]
done
#end of file

Ahora le damos permiso de ejecución y lo ejecutamos:

$ sudo chmod +x makedev.sh
$ sudo ./makedev.sh
$ ls i2c*

Ahora sí que os aparecerá una lista con los dichosos archivos i2c creados, y por fín podemos configurar lm-sensors.


Configuración de lm-sensors

Ahora que tenemos los archivos de dispositivos i2c podemos empezar a configurar lm-sensors, pero antes necesitamos cargar el módulo específico para el kernel:

$ sudo modprobe i2c-dev

Ahora ya podemos ejecutar el script para configurar los sensores que queremos usar:

$ sudo sensors-detect

Irá preguntando. Es recomendable contestar a las preguntas por defecto. Antes de la última pregunta, muestra en pantalla algo como:

To make the sensors modules behave correctly, add these lines to /etc/modules:
#----cut here----
[Sensores que te ha detectado]
#----cut here----

Copiamos los sensores que te ha detectado, las líneas que están entre los #----cut here----, y abrimos como administrador el archivo /etc/modules:

$ sudo gedit /etc/modules

Pegamos al final del archivo modules las líneas copiadas y listo.

Para comprobar que funcionan correctamente se pueden cargar los sensores de forma manual. Por ejemplo, a mí me ha detectado el sensor i2c-isa, eeprom entre otros. Para cargar los sensores:

$ sudo modprobe eeprom 
$ sudo modprobe i2c-isa
$ sudo modprobe [nombre del sensor]
$ sudo depmod -a
$ sudo update-modules

Una vez cargados:

$ sensors

Y comprueba que los valores que da sean posibles.

Nota clasica.png Muchas veces el orden en que se cargan los módulos, el orden en que están en el archivo /etc/modules, es importante. Por eso si algún sensor no funciona correctamente o da valores imposibles, prueba cambiar el orden de carga, el orden en el archivo.

Despues de configurar debemos reiniciar el sistema para que se aplique la configuración.

Podemos consultar las temperaturas/velocidades con el comando "sensors".

Interfaces gráficas

Para visualizar las temperaturas y/o velocidades que nos proporciona lm-sensors podemos usar multitud de interfaces como: