Publi

Píldora: Modificar a mano la velocidad de los ventiladores de nuestro ordenador

Velocidad de los ventiladores

Normalmente el control de los ventiladores que hace automáticamente el sistema está bien. Cuando la CPU se calienta mucho los ventiladores aumentan su velocidad y ésta disminuye cuando se enfrían. El objetivo es mantener el procesador a una temperatura estable y que no se rompan los componentes. Porque seguro que más de uno nos hemos cargado algún aparato cuando se ha sobrecalentado.

El caso es que no siempre está bien el control automático. Bien porque alguna vez se le puede ir la olla, por tema de drivers en ocasiones un ventilador se vuelve loco; puede haberse roto el sensor de temperatura, porque todo se puede romper, y nosotros nos resistimos a cambiar el equipo; estamos experimentando rompiendo cosas, queremos ponerlo a tope un rato para aumentar el rendimiento general a pesar de que haya mayor consumo energético, o puede que lo principal sea dejarnos dormir y no nos importa que se caliente la CPU un poco.

He de decir, que los ventiladores que podemos controlar son los que están conectados a un dispositivo capaz de gestionar una señal PWM. Sí, como la de Arduino, es la misma tecnología, enviamos pulsos a un ventilador para que varíe su velocidad. Y podemos encontrar varios puertos PWM para ventiladores en nuestras placas base, aunque en los portátiles normalmente tenemos sólo uno; en los ordenadores de sobremesa podemos encontrar más ventiladores y ahí está mucho más chulo hacerlo.

Ya lo tenemos hecho!!

Existe un software llamado fancontrol que lo hace por nosotros. Le decimos temperaturas y velocidades de ventilador y automáticamente cada cierto tiempo hará un sondeo en los sensores de temperatura y actuará en consecuencia.

Pero, ¿cómo se hace a mano?

Pero, ¿y si queremos cambiar la velocidad del ventilador a mano? Por ejemplo, para hacer algo rápido, porque no siempre podemos o queremos instalar un paquete en un equipo. Y, como la magia de GNU/Linux está en que casi casi todo son ficheros nos aprovecharemos de eso.

Antes de nada, debemos saber que todo esto depende mucho del driver que utilice nuestro sistema para gestionar esta capacidad. Es decir, el circuito que controla la velocidad de los ventiladores necesita un módulo específico en el kernel y puede que éste cambie un poco la forma de acceso, suele ser parecida, pero a lo mejor cambian un poco los nombres. También puede que no tengamos dicho soporte en nuestro kernel, o que nuestra placa base sea incapaz de hacerlo… todo puede pasar, pero para eso estamos, para investigar 🙂

Buscar ficheros importantes

Me voy a basar en la forma de encontrar la temperatura actual (los sensores) y modificar la velocidad de los ventiladores. Así que vamos a ello. En los kernels más antiguos podíamos encontrar todo esto dentro de /proc/acpi/ aunque en los núcleos más modernos lo encontramos en /sys/devices/. Así que, hagamos las búsquedas, pondré los resultados que salen en mi equipo principal, no tiene por qué coincidir con el tuyo, pero sí puede ser parecido.

El primer fichero será temp1_input que nos dice la temperatura del sensor, seguramente sea el sensor de la CPU, aunque podemos tener más sensores repartidos por la placa base. (Generalmente podremos acceder desde /sys/class/hwmon/, en mi sistema tengo enlaces desde /sys/class/hwmon/hwmonX que apuntan a las rutas a continuación; pero otras veces no)

find /sys/ -name ‘temp1_input’
/sys/devices/platform/asus-nb-wmi/hwmon/hwmon2/temp1_input
/sys/devices/platform/coretemp.0/hwmon/hwmon1/temp1_input
/sys/devices/virtual/hwmon/hwmon0/temp1_input

Podemos encontrar varios ficheros parecidos, correspondientes a cada uno de los drivers y a veces puede coincidir que el mismo sensor sea leído por dos drivers distintos. Estos ficheros, al final, podemos leerlos con cat. Por ejemplo:
cat /sys/devices/platform/coretemp.0/hwmon/hwmon1/temp1_input
52000

Pues eso, 52ºC

Generalmente estos ficheros suelen tener en el mismo directorio los ficheros temp1_label, temp1_max, temp1_crit especificando, qué sensor es, su temperatura máxima y crítica respectivamente. Y todos los valores podemos verlos con cat, aunque puede que en algunos sistemas necesitemos privilegios de root.

Si queremos, también podemos mirar en el mismo directorio qué más hay, puede que encontremos más sensores, temp2_input, temp3_input, etc.

Ventiladores

Dentro de /sys/class/hwmon/hwmonX/ también puede que encontremos ficheros llamados fan1_input, fan1_label (que nos dirá qué ventilador es), pwm1 o de forma general, dependiendo de la cantidad que haya fanX_input y pwmX. De todoas formas, si queremos buscarlos, aquí os dejo el comando:

find /sys/ -name ‘pwm*’
/sys/devices/platform/asus-nb-wmi/hwmon/hwmon2/pwm1
/sys/devices/platform/asus-nb-wmi/hwmon/hwmon2/pwm1_enable
/sys/class/pwm

Qué podemos hacer

Hemos visto que podemos ver la temperatura del sensor haciendo cat al fichero. También podemos ver información de los ventiladores:

cat /sys/devices/platform/asus-nb-wmi/hwmon/hwmon2/fan1_input
1400
cat /sys/devices/platform/asus-nb-wmi/hwmon/hwmon2/fan1_label
cpu_fan

En este caso vemos la velocidad en revoluciones por minuto (rpm) del ventilador, y también a qué corresponde el ventilador, que es el ventilador de la CPU.

Ahora vemos qué hacen los ficheros PWM

cat /sys/devices/platform/asus-nb-wmi/hwmon/hwmon2/pwm1_enable
2
cat /sys/devices/platform/asus-nb-wmi/hwmon/hwmon2/pwm1
85

El primero es el modo de funcionamiento, puede ser 1 (manual) o 2 (automático). Se puede utilizar el 0 pero suele ser lo mismo que el 2. Además, no hace falta establecer este valor antes de cambiar a modo maunal. Lo veremos en un ejemplo más adelante.
El segundo es la velocidad del ventilador expresado con el valor del byte que controla el PWM. Es decir, un valor entre 0 y 255 donde 0 es el mínimo (ventilador parado, y por tanto, muy peligroso) y 255 es el máximo, por lo que nuestro ordenador puede parecer un cohete espacial. Ahora, si queremos dar una velocidad a mano al motor haremos:

echo “120” > /sys/devices/platform/asus-nb-wmi/hwmon/hwmon2/pwm1

Si somos root, pero si lo hacemos desde un usuario, podremos hacer:
echo “120” | sudo tee /sys/devices/platform/asus-nb-wmi/hwmon/hwmon2/pwm1

De esta forma se establecerán los valores de pwm1_enable a 1 (no tenemos que hacer nada para ir a modo manual) y el valor de pwm1 será de 120. Además, escucharemos el ventilador de nuestro ordenador más rápido. Eso sí, tenemos que tener cuidado cuando demos una velocidad manual, ya que el modo automático lo hemos desactivado y puede que el sistema requiera más frío del que le estamos dando y se caliente demasiado. ¡Un gran poder conlleva una gran responsabilidad!

Si queremos volver al modo de ventilador automático, basta con hacer:

echo 2 | sudo tee /sys/devices/platform/asus-nb-wmi/hwmon/hwmon2/pwm1_enable

También podría interesarte...

Leave a Reply