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:

NivelValor HEXDescripción
Muy bajo0x12Silencioso
Bajo0x25Poco ruido
Medio0x50Equilibrado
Alto0x65Buena ventilación
Muy alto0x80Refrigeración fuerte
Máximo0xffFull 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

  1. 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.