Productos FTTH

Tienda FFTH

Entradas Mensuales

Síguenos en:

Canal Oficial Telegram de elhacker.NET Grupo Facebook elhacker.NET Twitter elhacker.NET Canal Youtube elhacker.NET Comunidad Steam: Grupo elhacker.NET Mastodon

Entradas populares

PostHeaderIcon Fan Control, pwmConfig y lm_sensors para configurar las rpm de tus ventiladores en Linux


Es posible monitorizar y controlar los ventiladores en en Linux  a través de la terminal, aunque es un proceso que requiere precaución al no tener monitor físico para observar cambios térmicos inmediatos. 

Para lograrlo, se utiliza el paquete lm_sensors para la lectura y fancontrol para la gestión. 


 



. La diferencia entre pwmconfig y fancontrol

  • pwmconfig (El asistente): Es un script interactivo de una sola ejecución. Su única función es detectar los sensores, probar qué ventilador se detiene al bajar cada señal PWM y generar un archivo de configuración llamado /etc/fancontrol.

  • fancontrol (El servicio): Es el proceso que se queda corriendo en segundo plano (daemon). Lee el archivo que generó pwmconfig y ajusta las RPM de tus ventiladores en tiempo real según la temperatura de tu procesador 

Si quieres que un ventilador se quede a una velocidad fija (por ejemplo, al 100% o al 50%) sin que el sistema lo cambie, puedes escribir directamente en los archivos de control del kernel (sysfs).

Los valores van de 0 (parado) a 255 (máximo):

# 1. Poner el ventilador en modo manual (sustituye hwmonX y pwmY por los tuyos)
echo 1 | sudo tee /sys/class/hwmon/hwmonX/device/pwmY_enable

# 2. Fijar la velocidad (ejemplo 200 de 255, aprox 80% de potencia)
echo 200 | sudo tee /sys/class/hwmon/hwmonX/device/pwmY

 



Limitar velocidades en el archivo de configuración

Dentro del archivo /etc/fancontrol, puedes definir los parámetros de comportamiento para cada ventilador:

  • MINPWM: La velocidad mínima (0-255) por debajo de la cual el ventilador nunca bajará.

  • MAXPWM: El techo de velocidad (0-255) que el sistema nunca superará, incluso si el CPU se calienta.

 

  • Usar fancontrol para que haya una curva automática. Si dejas un valor fijo muy bajo y el servidor realiza una tarea pesada de repente, podrías tener un apagado por seguridad térmica.

  • Configurar el servicio:

    sudo systemctl enable --now fancontrol
    
  • Monitorizar remotamente: Puedes vigilar las velocidades y temperaturas desde cualquier sitio vía SSH simplemente ejecutando watch sensors.

     

    Paso A: Pasar a modo manual

    # Cambia el '1' por el número de hwmon que corresponda a tu placa (mira 'ls /sys/class/hwmon/')
    echo 1 | sudo tee /sys/class/hwmon/hwmonX/pwm1_enable

     Paso B: Fijar las RPM (vía PWM) Si quieres que el ventilador de la CPU no baje de una velocidad audible para saber que está vivo, o que no suba de cierto punto:

    # Ejemplo: fijar al 75% de potencia (aprox. 190 de 255)
    echo 190 | sudo tee /sys/class/hwmon/hwmonX/pwm1 

     



    ¿Cómo sé cuál es el valor PWM para mis RPM deseadas?

    Como no tienes monitor, puedes usar una regla de tres simple, aunque no es lineal al 100%:

    • PWM 64: ~25% de velocidad.

    • PWM 127: ~50% de velocidad.

    • PWM 191: ~75% de velocidad.

    • PWM 255: 100% (Máximas RPM del ventilador).

     

    Entendiendo las variables del archivo

    Para que el archivo funcione, cada línea debe apuntar a la ruta del sensor en /sys/class/hwmon/.

    • FCTEMPS: Mapea el control del ventilador (PWM) con el sensor de temperatura.

    • FCFANS: Mapea el control del ventilador con su lectura de RPM.

    • MINTEMP / MAXTEMP: El rango de temperatura (Celsius) donde el ventilador empezará a acelerar y donde llegará al máximo.

    • MINPWM / MAXPWM: El valor de fuerza (0-255) mínimo y máximo.

       

  • Ejemplo /etc/fancontrol

     

    # Intervalo de actualización en segundos
    INTERVAL=2

    # Mapeo: pwm1 (Fan1) sigue al sensor de temp de la CPU
    FCTEMPS=hwmon4/device/pwm1=hwmon4/device/temp1_input
    FCFANS=hwmon4/device/pwm1=hwmon4/device/fan1_input

    # Temperaturas: empieza a subir a los 45°C, al máximo a los 80°C
    MINTEMP=hwmon4/device/pwm1=45
    MAXTEMP=hwmon4/device/pwm1=80

    # Potencia: mínimo 100 (para que siempre gire), máximo 255 (100%)
    MINPWM=hwmon4/device/pwm1=100
    MAXPWM=hwmon4/device/pwm1=255 

     

    ¿Cómo verificarlo ahora?

    Para quedarte tranquilo de que todo funciona sin monitor, usa:

    watch -n 1 sensors

     O bien

    watch -n 1 "sensors | grep -E 'Core 0|fan1'" 

     

     pwmconfig


    Found the following PWM controls:
       hwmon4/pwm1           current value: 255
       hwmon4/pwm2           current value: 255
       hwmon4/pwm4           current value: 255
       hwmon4/pwm5           current value: 255
       hwmon4/pwm6           current value: 255
       hwmon4/pwm7           current value: 255

    Giving the fans some time to reach full speed...
    Found the following fan sensors:
       hwmon4/fan1_input     current speed: 1582 RPM
       hwmon4/fan2_input     current speed: 1454 RPM
       hwmon4/fan4_input     current speed: 954 RPM
       hwmon4/fan5_input     current speed: 1193 RPM
       hwmon4/fan6_input     current speed: 0 ... skipping!
       hwmon4/fan7_input     current speed: 0 ... skipping! 

     

    Control Manual:

     

    # Poner todos los ventiladores en modo manual
    echo 1 | sudo tee /sys/class/hwmon/hwmon4/pwm1_enable
    echo 1 | sudo tee /sys/class/hwmon/hwmon4/pwm2_enable
    echo 1 | sudo tee /sys/class/hwmon/hwmon4/pwm4_enable
    echo 1 | sudo tee /sys/class/hwmon/hwmon4/pwm5_enable

    # Bajar la potencia a 100 (de un máximo de 255)
    echo 100 | sudo tee /sys/class/hwmon/hwmon4/pwm1
    echo 100 | sudo tee /sys/class/hwmon/hwmon4/pwm2
    echo 100 | sudo tee /sys/class/hwmon/hwmon4/pwm4
    echo 100 | sudo tee /sys/class/hwmon/hwmon4/pwm5 

     

     sudo fancontrol
    Loading configuration from /etc/fancontrol ...
    Some mandatory settings missing, please check your config file! 

     

    Ejemplo configuración:

    INTERVAL=2
    DEVPATH=hwmon3=devices/platform/coretemp.0 hwmon4=devices/platform/nct6775.656
    DEVNAME=hwmon3=coretemp hwmon4=nct6798
    FCTEMPS=hwmon4/pwm1=hwmon3/temp1_input
    FCFANS=hwmon4/pwm1=hwmon4/fan1_input
    MINTEMP=hwmon4/pwm1=45
    MAXTEMP=hwmon4/pwm1=85
    MINPWM=hwmon4/pwm1=100
    MAXPWM=hwmon4/pwm1=160
    MINSTART=hwmon4/pwm1=150
    MINSTOP=hwmon4/pwm1=100

    Configuración Global

    • INTERVAL=2: Es el tiempo de refresco en segundos. Cada 2 segundos, el script lee la temperatura y decide si subir o bajar las revoluciones.

    • DEVPATH: Le dice al sistema en qué ruta física del hardware están los chips. Aquí asocias hwmon3 con el procesador y hwmon4 con el chip de control de la placa base (el bus .656 que descubrimos).

    • DEVNAME: Asigna nombres legibles a esos dispositivos (coretemp para el i9 y nct6798 para el controlador de ventiladores).

    Lógica de Control (Mapeo)

    • FCTEMPS=hwmon4/pwm1=hwmon3/temp1_input: Esta es la orden principal. Dice: "Para controlar la potencia del ventilador 1 (pwm1), fíjate en la temperatura del sensor del procesador (temp1_input)".

    • FCFANS=hwmon4/pwm1=hwmon4/fan1_input: Vincula la salida de energía (pwm1) con la lectura de revoluciones (fan1_input). Sirve para que el sistema sepa a qué velocidad real está girando lo que está controlando.

    La Curva de Velocidad

    • MINTEMP=45: El "suelo" térmico. Por debajo de 45°C, el ventilador se quedará siempre en su velocidad mínima.

    • MAXTEMP=85: El "techo" térmico. Has subido esto a 85°C, lo cual es razonable para un i9; a partir de aquí, el ventilador dará todo lo que le permitas.

    • MINPWM=100: La potencia mínima (de 0 a 255). 100 es aproximadamente un 40% de energía. Es el valor que te da el silencio que buscabas.

    • MAXPWM=160: Tu limitador de ruido. Has decidido que, aunque el CPU llegue a 85°C, el ventilador no pase de 160 (un 62% de su capacidad total). Es muy silencioso, pero vigila las temperaturas si haces renderizado pesado.

    Parámetros de Seguridad

    • MINSTART=150: El "impulso de arranque". Cuando el ventilador tiene que empezar a girar desde cero, el sistema le da un choque de 150 de potencia durante un instante para vencer la fricción y luego lo baja a lo que corresponda.

    • MINSTOP=100: El valor por debajo del cual el sistema consideraría apagar el ventilador. Al ponerlo igual al MINPWM, le estás diciendo: "Nunca bajes de 100, mantente siempre girando".

    ¿Cómo se comportan ahora los ventiladores?

    • Si el procesador está a 40°C: El ventilador gira fijo a potencia 100 (~900 RPM). Silencio total.

    • Si la CPU sube a 65°C: El sistema calculará un valor intermedio (aprox. 130) y el ventilador subirá un poco de tono de forma suave.

    • Si la CPU llega a 85°C: El ventilador se quedará en 160. No hará el ruido infernal de antes, pero enfriará mucho más que en reposo.



    0 comentarios :

    Publicar un comentario

    Los comentarios pueden ser revisados en cualquier momento por los moderadores.

    Serán publicados aquellos que cumplan las siguientes condiciones:
    - Comentario acorde al contenido del post.
    - Prohibido mensajes de tipo SPAM.
    - Evite incluir links innecesarios en su comentario.
    - Contenidos ofensivos, amenazas e insultos no serán permitidos.

    Debe saber que los comentarios de los lectores no reflejan necesariamente la opinión del STAFF.