Cómo hacer que tu IBM x3550 M4 Server sea más silencioso
Cuando encendí por primera vez mi IBM x3550 M4, una de las cosas que más me sorprendió fue el ruido de los ventiladores. Este servidor fue diseñado para centros de datos, donde el ruido no importa… pero en casa, es otra historia.
Después de investigar un poco, descubrí que puedes controlar manualmente la velocidad de los ventiladores con ipmitool, ¡y eso abre muchas posibilidades!
Advertencia
Reducir la velocidad de los ventiladores puede causar sobrecalentamiento si no se controla bien. Haz esto bajo tu propio riesgo y monitorea siempre las temperaturas.
¿Qué es ipmitool?
ipmitool es una herramienta de línea de comandos que permite comunicarse con la interfaz de gestión de la placa base (BMC) de un servidor mediante el protocolo IPMI (Intelligent Platform Management Interface).
Con ipmitool puedes realizar acciones como:
- Leer sensores de temperatura, voltaje, ventiladores, etc.
- Encender/apagar/reiniciar el servidor de forma remota.
- Controlar manualmente el hardware, incluyendo los ventiladores.
Es una herramienta extremadamente útil para automatizar la gestión de servidores sin necesidad de tener acceso físico.
sudo apt update
sudo apt install ipmitool
Control manual de la velocidad del ventilador
Puedes variar la velocidad de los ventiladores enviando un comando IPMI. El valor clave es el byte de velocidad, que va desde 0x12
(mínima) hasta 0xff
(máxima). Aquí un ejemplo básico:
ipmitool -I lanplus -H "IP DEL IMM2" -U "USUARIO DEL IMM2" -P "CONTRASEÑA DEL IMM2" raw 0x3a 0x07 0x01 VELOCIDAD 0x01
Reemplaza VELOCIDAD
por alguno de estos valores:
Nivel | Valor HEX | Descripción |
---|---|---|
Muy bajo | 0x12 | Silencioso |
Bajo | 0x25 | Poco ruido |
Medio | 0x50 | Equilibrado |
Alto | 0x65 | Buena ventilación |
Muy alto | 0x80 | Refrigeración fuerte |
Máximo | 0xff | Full fan (modo turbo) |
Por ejemplo, para fijar la velocidad en nivel medio:
ipmitool -I lanplus -H 10.10.0.103 -U USERID -P PASSW0RD raw 0x3a 0x07 0x01 0x50 0x01
Automatizando con un script
Creé un script que ajusta la velocidad según la temperatura promedio del CPU:
controller.sh:
#!/bin/bash
# Configuración de IPMI
IPMI_HOST="LA IP DE TU IMM2"
IPMI_USER="EL USUARIO DE TU IMM2"
IPMI_PASS="LA CONTRASEÑA DE TU IMM2"
output=$(ipmitool -I lanplus -H "$IPMI_HOST" -U "$IPMI_USER" -P "$IPMI_PASS" sensor)
temps=$(echo "$output" | grep -i "CPU" | grep "degrees C" | awk -F'|' '{gsub(",",".",$2); print $2}' | tr -d ' ')
suma=0
count=0
for temp in $temps; do
suma=$(echo "$suma + $temp" | bc)
count=$((count + 1))
done
if [ $count -gt 0 ]; then
promedio=$(echo "scale=2; $suma / $count" | bc)
echo "Temperatura promedio: $promedio °C"
else
echo "No se encontraron temperaturas."
exit 1
fi
# Definir velocidad dependiendo de la temperatura
# 0x12 -> muy bajo
# 0x25 -> bajo
# 0x50 -> medio
# 0x65 -> alto
# 0x80 -> muy alto
# 0xff -> máxima
velocidad=""
if (( $(echo "$promedio <= 35" | bc -l) )); then
velocidad="0x12" # Muy baja
elif (( $(echo "$promedio <= 45" | bc -l) )); then
velocidad="0x25" # Baja
elif (( $(echo "$promedio <= 55" | bc -l) )); then
velocidad="0x50" # Media
elif (( $(echo "$promedio <= 65" | bc -l) )); then
velocidad="0x65" # Alta
elif (( $(echo "$promedio <= 75" | bc -l) )); then
velocidad="0x80" # Muy alta
else
velocidad="0xff" # A tope
fi
echo "Ajustando velocidad de ventiladores a: $velocidad"
ipmitool -I lanplus -H "$IPMI_HOST" -U "$IPMI_USER" -P "$IPMI_PASS" raw 0x3a 0x07 0x01 "$velocidad" 0x01
echo "$(date) - Script ejecutado - Temperatura: $promedio" >> ~/Fan_Control_controller.log
Ejecutarlo automáticamente con cron
- Abre tu crontab:
crontab -e
2. Agrega esta línea para ejecutarlo cada 5 minutos:
*/5 * * * * /home/usuario/controller.sh
Resultado
Este método te permite tener un control fino de la velocidad del ventilador y reducir considerablemente el ruido del servidor en casa. Puedes experimentar con los valores 0x12
a 0xff
hasta encontrar el equilibrio perfecto entre temperatura y silencio.