Guía para Servidores Mac Mini: Encendido Automático con Linux

Como muchos ya saben, tengo en casa 2 Mac Mini 2012 con procesadores Intel que están haciendo la función de servidores, uno con Ubuntu Server y otro con Debian. Estos equipos son ideales para usarlos como servidores porque consumen muy poco, tienen buena refrigeración, son silenciosos, y se pueden actualizar en cuanto a memoria RAM y disco duro.

Por diversos motivos he tenido interrupciones de electricidad, y estaba buscando como configurar ambos Mac Mini para que, cuando detectaran que tienen corriente nuevamente, se enciendan automáticamente y esta es la solución.

Lo primero que tenemos que hacer es identificar el bus PCI del dispositivo de gestión de energía. Para ellos usamos este comando:

lspci | grep -i "LPC"
00:1f.0 ISA bridge: Intel Corporation HM77 Express Chipset LPC Controller (rev 04)

Lo que necesitamos es lo que dice 00:1f.0. El código al principio (00:1f.0) es el ID del Bus PCI.

  • 0: Es el número de función.
  • 00: Es el número de bus.
  • 1f: Es el número de dispositivo.

Teniendo esa información ejecutamos entonces este comando:

$ sudo setpci -s 00:1f.0 0xa4.b                      
09

En mi caso como pueden ver me devuelve un 09, pero en otros casos debería devolver 00 o 01 según si está activado o no. El valor está en hexadecimal. Para entenderlo, debemos mirar los bits individuales (binario):

  • 09 en hex es 0000 1001 en binario.
  • El bit 0 (el de la derecha) es el que suele controlar esta función. Al estar en 1, significa que actualmente está configurado para permanecer apagado ("Stay Off").
  • Al cambiarlo a 0, el valor pasaría de 09 a 08 (binario 0000 1000), lo cual activa el encendido automático ("Power On").

Por lo tanto, como necesito que el valor en mi caso esté en 08 debo ejecutar este comando:

$ sudo setpci -s 00:1f.0 0xa4.b=08

Y luego al volver ejecutar el comando anterior, me debe salir así:

$ sudo setpci -s 00:1f.0 0xa4.b                      
0
8

Como este cambio se borra al apagar el equipo por completo (especialmente si la pila CR2032 está fallando), lo ideal es crear un servicio que lo aplique en cada arranque:

$ sudo nano /etc/systemd/system/auto-poweron.service

Y le añadimos esto adentro:

[Unit]
Description=Configurar auto-encendido tras corte de luz (Mac Mini 2012)
After=multi-user.target
[Service]
Type=oneshot
ExecStart=/usr/bin/setpci -s 00:1f.0 0xa4.b=08
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target

Guardamos el fichero y para que el sistema reconozca el nuevo servicio y lo ejecute en cada inicio, lanza estos comandos:

$ sudo systemctl daemon-reload
$ sudo systemctl enable mac-autoon.service

Aunque la pila esté muerta, en el momento en que el Mac Mini reciba corriente (ya sea porque tú pulsaste el botón o por un remanente de energía), el kernel de Linux cargará este servicio de systemd casi de inmediato.

Esto asegura que, aunque el hardware se resetee a sus valores de fábrica, el sistema operativo vuelva a "inyectar" la instrucción de auto-encendido en el chipset Intel para la próxima vez que se vaya la luz.

Y con esto ya estaría todo. Para probar que funciona solo hay que apagar el Mac Mini, quitarle el cable de la corriente y luego de unos segundos conectarlo de nuevo..

← Volver a los artículos