¿Tu Raspberry Pi tiene un ventilador que zumba día y noche aunque el sistema esté sin hacer nada? Es lo que pasa cuando el ventilador va directo a 5 V: enfría, pero nunca descansa. Con una curva por temperatura, el ventilador parte recién cuando la CPU se calienta y, si es PWM, además ajusta su velocidad. No necesitas placas extra: Raspberry Pi OS trae los controladores y todo se activa con una línea en config.txt.
En esta guía vas a aprender a:
- leer la temperatura real de la CPU y saber si tu Pi ya se estranguló por calor;
- conectar el ventilador al conector FAN del Raspberry Pi 5 y cambiar su curva;
- controlar en el Raspberry Pi 4 un ventilador de 2 cables (con transistor), el ventilador oficial de carcasa y uno PWM de 4 cables;
- ajustar las temperaturas para el verano chileno, cuando dentro de una casa en Santiago o en el norte el ambiente ya pasa los 30 °C.
El concepto: por qué el ventilador no debería ir siempre prendido
Un control de ventilador hace una sola cosa: mira la temperatura de la CPU y decide si el ventilador gira, y a qué velocidad. Hay dos formas de hacerlo:
- Encendido/apagado: un pin GPIO abre o cierra el paso de corriente. Sirve con cualquier ventilador, pero gira a tope o no gira.
- PWM (modulación por ancho de pulso): el ventilador recibe 5 V fijos y una señal que se prende y se apaga miles de veces por segundo. La proporción del tiempo en alto (el ciclo de trabajo) le dice a qué velocidad girar. Solo funciona con ventiladores de 4 cables que tienen entrada de control.
El Raspberry Pi 5 trae su propio conector de ventilador con una curva ya configurada. En el Pi 4 y modelos anteriores, el control pasa por un pin GPIO y se configura con los overlays gpio-fan o pwm-fan en config.txt.
Qué camino te toca
| Modelo y ventilador | Conexión | Control |
|---|---|---|
| Pi 5 con Active Cooler o ventilador con conector JST | Conector FAN de la placa | Automático, 4 velocidades |
| Pi 4 con ventilador oficial de carcasa | Pines 4, 6 y 8 | Encendido/apagado con raspi config |
| Pi 4 con ventilador de 2 cables a 5 V | Pines 4 y 6 más un transistor | Encendido/apagado con gpio fan |
| Pi 4 con ventilador PWM de 4 cables a 5 V | 5 V, GND y GPIO 18 | Velocidad con pwm fan |
| Carcasas con placa propia (Argon ONE y similares) | Por la carcasa | Software del fabricante |
Un ventilador de 2 cables, como el de muchas torres de disipación, no tiene entrada de control. Mientras esté conectado directo a 5 V va a girar siempre; se vuelve controlable recién con el transistor de la sección del Pi 4.
Antes de tocar nada: mide la temperatura
Conviene saber de qué número partes. Raspberry Pi OS te da la temperatura con:
vcgencmd measure_temp
Según la documentación de Raspberry Pi, desde los 80 °C el firmware empieza a bajar de a poco la frecuencia de los núcleos, y a los 85 °C estrangula CPU y GPU. Para saber si eso ya te pasó, usa vcgencmd get_throttled: cualquier cosa distinta de throttled=0x0 significa que el voltaje bajo o el calor limitaron el rendimiento en algún momento. Ojo, porque ese mismo comando también delata una fuente de poder débil: si ves el bit de bajo voltaje, un ventilador no lo arregla.
Para probar el control después, genera carga con stress-ng y mira la temperatura en otra terminal:
sudo apt install stress-ng
stress-ng --cpu 4 --timeout 300s
watch -n 2 vcgencmd measure_temp
Hardware: Raspberry Pi 5 y su conector FAN
El Pi 5 es el primer modelo con conector propio para ventilador. Está arriba a la derecha, entre la tira GPIO y los USB 2.0, y dice "FAN" en la serigrafía. El Active Cooler oficial y el Argon THRML de 30 mm calzan directo, y la carcasa oficial del Pi 5 también lo usa.
Es un conector JST SH de 4 pines con paso de 1 mm. Si quieres poner tu propio ventilador, necesitas un conector JST SH: los de ventilador de PC no calzan. Casi siempre viene tapado con una pequeña tapa que hay que sacar antes. La asignación de pines, según la documentación oficial:
| Pin | Función | Color del cable |
|---|---|---|
| 1 | +5 V | rojo |
| 2 | PWM | azul |
| 3 | GND | negro |
| 4 | Tacómetro (señal de velocidad) | amarillo |

Foto: SparkFun Electronics, CC BY 2.0, editada por raspberry.tips para marcar el conector.
Un detalle que casi nadie considera: el conector FAN comparte el presupuesto de corriente con los puertos USB. Si tienes un disco externo, un teclado y una cámara conectados, un ventilador que consume mucho puede ser el que haga caer el voltaje.
La curva de fábrica
No hay que configurar nada. Al arrancar, el firmware prende el ventilador un momento y revisa por el tacómetro si gira. Si gira, activa el control con cuatro escalones:
| Temperatura de CPU | Velocidad | Valor PWM (0-255) |
|---|---|---|
| bajo 50 °C | apagado | 0 |
| desde 50 °C | ~30 % | 75 |
| desde 60 °C | ~50 % | 125 |
| desde 67,5 °C | ~70 % | 175 |
| desde 75 °C | máxima | 250 |
Al enfriarse aplica una histéresis de 5 °C: baja un escalón recién 5 grados por debajo del umbral. Por qué importa: sin histéresis, si la CPU queda justo en 60,0 °C el ventilador subiría y bajaría de velocidad cada pocos segundos, porque al subir enfría, y al enfriar vuelve a bajar. Esa banda muerta es lo que evita el efecto de "motor que acelera y frena" que se escucha en montajes mal configurados.
Cambiar la curva en config.txt
Cada escalón tiene tres parámetros, donde N va de 0 a 3:
fan_tempN: el umbral, en milésimas de grado (55 °C se escribe 55000);fan_tempN_hyst: la histéresis, también en milésimas de grado;fan_tempN_speed: el valor PWM, de 0 a 255.
Abre el archivo:
sudo nano /boot/firmware/config.txt
Si lo que quieres es silencio en reposo, sube los dos primeros umbrales. Las líneas van al final del archivo:
# Quieter fan curve for the Raspberry Pi 5: start later
dtparam=fan_temp0=55000
dtparam=fan_temp1=63000
Los valores que no escribas quedan con su valor de fábrica; todos los parámetros están en la documentación de overlays en GitHub. Si tu Pi está con overclock o bajo carga permanente, haz lo contrario y baja los umbrales. El cambio entra en vigor después de sudo reboot. Revisa que los umbrales suban del escalón 0 al 3, y las velocidades también.
Leer la velocidad real
El control del Pi 5 deja sus valores en el sistema de archivos. Las RPM y el valor PWM actual se leen así:
cat /sys/devices/platform/cooling_fan/hwmon/*/fan1_input
cat /sys/devices/platform/cooling_fan/hwmon/*/pwm1
Si el primer comando da más de 0 con el Pi frío, el ventilador simplemente todavía no baja de escalón (recuerda la histéresis). Si el comando no encuentra el archivo, el firmware no detectó ningún ventilador al arrancar; eso se ve en la sección de problemas.
Hardware: Raspberry Pi 4 y los pines GPIO
El Pi 4, el Pi 3 y los anteriores no tienen conector de ventilador. La alimentación sale de la tira GPIO y otro pin se encarga de controlar. Una regla que te puede salvar la placa: cambia cables solo con el Pi apagado. Si un cable de 5 V se resbala a un GPIO vecino, puedes dañar el Pi.
Por qué tu ventilador gira todo el tiempo
La mayoría de los ventiladores de carcasa traen dos cables: rojo al pin 4 (5 V) y negro al pin 6 (GND). Esos dos pines tienen voltaje siempre que el Pi tenga energía, y ninguna configuración de software lo cambia.
Tampoco sirve alimentar el ventilador desde un GPIO: entrega solo 3,3 V y unos pocos miliamperios, muy poco para un motor, y con sobrecarga puedes dañar el Pi. Para controlar necesitas un ventilador con entrada de control o un transistor.
Ventilador oficial de carcasa en GPIO 14
El ventilador oficial para la carcasa del Pi 4 trae tres cables y la electrónica de conmutación incorporada. Según su hoja de producto va así:
| Cable | Función | Pin |
|---|---|---|
| rojo | 5 V | 4 |
| negro | GND | 6 |
| azul | Control (GPIO 14) | 8 |
Después configuras el control con raspi config:
- Ejecuta
sudo raspi-config. - Elige 4 Performance Options y después P4 Fan.
- Responde Yes a la pregunta sobre control de ventilador por temperatura.
- Confirma GPIO 14 (el valor por defecto).
- Escribe la temperatura de encendido. raspi config propone 80 °C y acepta entre 60 y 120 °C.
- Sal con Finish y reinicia.
Los 80 °C quedan justo en el límite donde la CPU empieza a estrangularse. Para uso continuo, 60 °C es más razonable; raspi config no deja bajar de eso, pero en config.txt sí se puede. Por debajo, raspi config solo escribe una línea, por ejemplo dtoverlay=gpio-fan,gpiopin=14,temp=60000.
Ventilador de 2 cables con transistor
Para un ventilador común de 2 cables a 5 V, el interruptor lo armas tú. Un transistor NPN corta el negativo del ventilador y el GPIO solo maneja la base del transistor. Necesitas:
- un transistor NPN, por ejemplo 2N2222 o BC337;
- una resistencia de 470 Ω para la base;
- un diodo de rueda libre, por ejemplo 1N4007, 1N4001 o 1N4148;
- jumpers o una placa perforada pequeña.
El cableado:
- GPIO 14 (pin 8) a la base del transistor, pasando por la resistencia de 470 Ω;
- emisor a GND (pin 6);
- colector al cable negro (negativo) del ventilador;
- cable rojo (positivo) del ventilador a 5 V (pin 4);
- diodo en paralelo con el ventilador: cátodo (el lado con la franja) a 5 V y ánodo al colector.

El orden de colector, base y emisor cambia según el fabricante, y ahí está la trampa clásica: el BC337 y el 2N2222 no tienen las patas en el mismo orden, y hasta dos 2N2222 de fábricas distintas pueden venir cambiados. Revisa la hoja de datos de tu transistor antes de soldar.
Por qué el diodo no es opcional. El motor del ventilador es una bobina, y una bobina se opone a que la corriente cambie de golpe. Cuando el transistor corta, la corriente no tiene por dónde seguir y el voltaje en el colector se dispara muy por encima de los 5 V. Ese pico, repetido cada vez que el ventilador se apaga, termina rompiendo la unión del transistor. El diodo le da a esa corriente un camino cerrado de vuelta por la bobina hasta que se disipa. Por eso va "al revés" respecto de la alimentación: en funcionamiento normal no conduce.
Por qué 470 Ω. El GPIO entrega 3,3 V y la unión base emisor se come unos 0,7 V, así que por la resistencia pasan (3,3 a 0,7) / 470 ≈ 5,5 mA. Para el pin es una carga tranquila. Un ventilador típico de 30 mm consume de 100 a 150 mA, o sea que al transistor le pides unas 20 a 27 veces la corriente de base: bastante menos que la ganancia mínima de un BC337 o un 2N2222, así que queda saturado (totalmente cerrado) y casi no se calienta. Si tu ventilador consume más de unos 300 mA, cambia a un MOSFET de nivel lógico.
Como el circuito queda en GPIO 14, la configuración con raspi config de la sección anterior sirve igual. Si usas la consola serial, elige otro pin: GPIO 14 también es la salida de transmisión del puerto serie.
gpio fan directo en config.txt
Sin raspi config, escribes tú mismo el overlay en /boot/firmware/config.txt. Así puedes usar umbrales bajo 60 °C y una histéresis propia:
# Switch the fan on GPIO 14 on at 55 °C and off again at 45 °C
dtoverlay=gpio-fan,gpiopin=14,temp=55000,hyst=10000
Sin parámetros, el overlay usa GPIO 12, 55 °C y 10 °C de histéresis. Después de reiniciar, calienta el Pi con stress-ng y comprueba que el ventilador parta en el umbral.
Ventilador PWM de 4 cables con pwm fan
Con un ventilador PWM de 4 cables, el Pi 4 también gana control de velocidad por escalones, igual que el Pi 5. Tiene que ser un ventilador de 5 V, como el Noctua NF-A4x10 5V PWM: los ventiladores de PC de 12 V no arrancan bien a 5 V.
Los cuatro cables de un ventilador PWM estándar van así:
| Pin del ventilador | Función | Raspberry Pi |
|---|---|---|
| 1 (negro) | GND | Pin 6 |
| 2 (amarillo o rojo) | +5 V | Pin 4 |
| 3 (verde) | Tacómetro | no se conecta |
| 4 (azul) | PWM | GPIO 18, pin 12 |

Foto: Laserlicht, CC BY SA 4.0, editada por raspberry.tips para marcar los pines. El ventilador oficial de carcasa usa el pin 8 en vez del 12.
En el Pi 4 el tacómetro queda sin conectar: el control no lo necesita. Si igual quieres leerlo, va a un GPIO solo con una resistencia pull up a 3,3 V, nunca a 5 V. Muchos ventiladores PWM de 5 V reconocen los 3,3 V del Pi como "alto", pero no está garantizado; si dudas, revisa la hoja de datos del ventilador.
El overlay existe solo en kernels recientes. Revisa primero si tu sistema lo trae:
ls /boot/firmware/overlays/ | grep fan
Si pwm-fan.dtbo no aparece, actualiza con sudo apt update && sudo apt full-upgrade. En versiones antiguas de Raspberry Pi OS eso no alcanza, porque su kernel no incluye el overlay; ahí usa pwm-gpio-fan, que también regula en cuatro escalones pero genera el PWM por software y por defecto parte recién a los 55 °C. Con pwm-fan basta una línea:
# PWM fan on GPIO 18 with the default four-step curve
dtoverlay=pwm-fan
El overlay maneja el ventilador a 25 kHz, la frecuencia estándar de los ventiladores de PC, y copia la curva del Pi 5 con los mismos escalones y nombres de parámetros. Una curva propia se agrega en la misma línea, por ejemplo dtoverlay=pwm-fan,fan_temp0=55000,fan_temp1=63000. En vez de GPIO 18 puedes elegir otro pin con PWM con fan_gpio_12, fan_gpio_13 o fan_gpio_19.
Por qué 25 kHz y no menos. El oído humano llega a unos 20 kHz. Si el PWM trabaja a pocos kHz, las bobinas del motor vibran a esa frecuencia y se oye un pito agudo, sobre todo a media velocidad. A 25 kHz ese ruido queda fuera del rango audible.
En el Pi 4, el ventilador y la salida de audio analógica usan bloques PWM separados. En el Pi 3 y anteriores comparten el mismo, y el jack de 3,5 mm puede quedar con interferencia; si lo necesitas, usa el montaje con transistor y gpio-fan.
Software: control propio con Python
Los overlays trabajan dentro del kernel y no necesitan script ni servicio. Un script en Python solo vale la pena si quieres lógica propia, como apagar el ventilador de noche o registrar la temperatura. Este ejemplo, para el circuito con transistor en GPIO 14, usa gpiozero, que viene instalada en Raspberry Pi OS:
#!/usr/bin/env python3
"""Simple on/off fan control with hysteresis for a fan on GPIO 14."""
from time import sleep
from gpiozero import CPUTemperature, OutputDevice
ON_TEMP = 60.0 # switch the fan on at or above this temperature (°C)
OFF_TEMP = 50.0 # switch the fan off at or below this temperature (°C)
INTERVAL = 5 # seconds between two measurements
cpu = CPUTemperature()
fan = OutputDevice(14)
while True:
temp = cpu.temperature
if temp >= ON_TEMP and not fan.value:
fan.on()
elif temp <= OFF_TEMP and fan.value:
fan.off()
sleep(INTERVAL)
Guárdalo como /home/pi/fan_control.py y cambia la ruta según tu usuario. Para que parta con el sistema, crea un servicio systemd en /etc/systemd/system/fan-control.service:
[Unit]
Description=Temperature controlled fan
[Service]
ExecStart=/usr/bin/python3 /home/pi/fan_control.py
Restart=always
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now fan-control.service
Importante: el script y el overlay no pueden manejar el mismo pin a la vez. Si pasas al script, borra la línea gpio-fan de config.txt o desactiva la opción en raspi config.
Pruebas y problemas comunes
El ventilador del Pi 5 nunca gira. Bajo 50 °C es lo esperado. Calienta el Pi con stress-ng y mira si parte a los 50 °C. Si no parte, muchas veces el conector JST no está entrando completo.
No aparece el archivo de velocidad. El firmware no vio señal de tacómetro al arrancar, algo típico en ventiladores sin cable de tacómetro. Con dtparam=cooling_fan=on en config.txt activas el control sin depender de esa detección.
El ventilador del Pi 4 nunca parte. Revisa con grep fan /boot/firmware/config.txt que la línea del overlay esté y que el pin sea el correcto. Si el umbral quedó en los 80 °C que propone raspi config, un Pi con disipador puede no llegar nunca. En el montaje con transistor, el error más común es tener colector y emisor cambiados.
El ventilador en GPIO 14 gira un momento al arrancar. Si el puerto serie está activo, usa GPIO 14 para transmitir y de paso mueve el ventilador. Si te molesta, desactívalo en raspi config en Interface Options o pasa a otro pin, por ejemplo GPIO 12.
El ventilador pita a media velocidad. Suele ser una frecuencia PWM muy baja. El overlay por hardware pwm-fan trabaja a 25 kHz; si usas pwm-gpio-fan, cámbiate en cuanto tu sistema traiga pwm-fan.
¿Y un ventilador de 12 V? Solo con una fuente de 12 V aparte, porque la tira GPIO entrega como máximo 5 V. El ventilador va a la fuente externa y un transistor o un MOSFET de nivel lógico lo conmuta desde un GPIO, con las tierras de ambas fuentes unidas. Un ventilador de 5 V es mucho más simple.
Variantes y mejoras
- Curva de verano para Chile. Entre diciembre y marzo, un Pi dentro de un mueble en Santiago, Copiapó o Antofagasta puede estar en reposo a 50 °C o más, así que con la curva de fábrica el ventilador del Pi 5 parte "tarde" y llega a los escalones altos con la CPU ya caliente. Si prefieres margen, adelanta toda la curva unos 5 °C:
# Curva de verano para el Pi 5: arranca antes y sube más rápido
dtparam=fan_temp0=45000
dtparam=fan_temp1=55000
dtparam=fan_temp2=62000
dtparam=fan_temp3=70000
En invierno puedes volver a la curva de fábrica o a la silenciosa. Un buen criterio es mirar el get_throttled después de la primera ola de calor: si sigue en 0x0, la curva sirve.
- Registrar la temperatura en un CSV. Así ves de verdad si tu curva funciona, sin instalar un stack de monitoreo. Este script agrega una fila con fecha y temperatura cada minuto, y el archivo lo abres después en una planilla:
#!/usr/bin/env python3
"""Registra la temperatura de la CPU en un CSV cada 60 segundos."""
import csv
from datetime import datetime
from time import sleep
from gpiozero import CPUTemperature
cpu = CPUTemperature()
with open("/home/pi/temperatura.csv", "a", newline="") as f:
writer = csv.writer(f)
while True:
ahora = datetime.now().isoformat(timespec="seconds")
writer.writerow([ahora, round(cpu.temperature, 1)])
f.flush()
sleep(60)
Puedes correrlo como servicio systemd igual que el control de ventilador. Si además quieres gráficos de semanas, el paso siguiente es Prometheus con Grafana.
- Apagar el ventilador de noche. Si el Pi está en un dormitorio, suma al script de control una condición por hora (por ejemplo, entre 23:00 y 7:00 solo encender sobre 70 °C). Con el Pi 5 lo mismo se logra subiendo
fan_temp0en una segunda configuración, aunque requiere reiniciar.
Personalización para Chile
En Chile consigues los componentes de este montaje en MechatronicStore:
- Raspberry Pi 5 o Raspberry Pi 4: la placa que vas a enfriar. Con el Pi 5 el control viene incorporado en el conector FAN.
- Active Cooler para Raspberry Pi 5: disipador con ventilador y conector JST SH que se enchufa directo al conector FAN; es el camino más corto en el Pi 5.
- Ventilador de 5 V de 30 mm: el ventilador de 2 cables para el montaje con transistor en el Pi 4.
- Transistor NPN 2N2222: hace de interruptor del negativo del ventilador. Cumple la misma función que el BC337 del tutorial original; solo revisa el orden de las patas.
- Diodo 1N4007: diodo de rueda libre en paralelo con el ventilador. Es de la misma familia que el 1N4001 del original y tiene más margen de voltaje.
- Resistencia de 470 Ω: limita la corriente de base desde el GPIO.
- Jumpers hembra hembra: para llegar a la tira GPIO sin soldar sobre la placa.
Recursos
- Tutorial original (alemán): Raspberry Pi Lüftersteuerung: Lüfter anschließen und regeln, de Philipp Schweizer en raspberry.tips. Esta guía está basada en él.
- Documentación de overlays (todos los parámetros de
gpio-fan,pwm-fany la curva del Pi 5): README de overlays en GitHub - Pines del conector de ventilador del Pi 5: documentación oficial de Raspberry Pi
- Temperatura y estrangulamiento térmico: control de frecuencia y temperatura
- Hoja de producto del ventilador oficial de carcasa del Pi 4: case fan product brief.pdf
Versión chilena con componentes en stock local en MechatronicStore.




