Con la excusa de las nuevas tarifas eléctricas, he estado pensando en que no sería mala idea poder apagar y encender los equipos de mi red de forma remota en lugar de tenerlos siempre encendidos. Me he planteado resolverlo usando WoL (Wake on LAN) y he terminado consiguiéndolo con una sencilla Raspberry Pi W de intermediario con un minúsculo consumo en idle (su estado habitual) de tan solo 0,6W (120mA a 5,19V).
Os dejo una comparativa del consumo de los distintos modelos de Raspberry Pi hasta la 3B (no se incluye la última 4)
It’s become traditional for me to do power measurements of any new Pi and update my chart. People have even started asking me about it on launch days (the cheek of it)… @DavidGlaude No.…
raspi.tv
WoL es un estándar que permite "despertar" un equipo dormido (apagado pero conectado a la corriente) enviándole un paquete UDP desde otro dispositivo de la red, y para que funcione es necesario que tanto la placa base del equipo objetivo como la tarjeta de red lo soporten y lo tengan activado. En mi caso, tanto la placa base Gigabyte Z390 Designare como la tarjeta de red Intel I211 que lo conecta a la red, lo soportan y lo tienen activado.
El blog de británico Brian Slack (Depicus) es la fuente más completa que conozco en Internet sobre el tema, y os aconsejo pasaros por su web.
depicus is home to the computer nerd who is now cool, ably assisted by mara and mimi
www.depicus.com
Wake on LAN es un estándar en el mundo de los PCs con Windows y debiera serlo para los equipos que utilizan macOS, pero no es así. Los PCs con Windows llevan BIOS (UEFI o no) configurables por el usuario que son compatibles con ese estándar que permite apagar el equipo dejando la tarjeta de red encendida. Apple no lo hace así, y cuando apagas el equipo, se apaga completamente, incluida la tarjeta de red, por lo que no es posible despertarla desde la red.
Mi PC principal tiene instalado dos sistemas operativos: Windows 10 Pro y macOS Big Sur (con OpenCore). Si apago el equipo estando en Windows, puedo despertarlo desde la red sin problemas, pero si lo apago desde macOS, la tarjeta de red se apaga y no puedo hacerlo. Afortunadamente, hay una versión del controlador de la tarjeta de red adaptado para que la apague y pueda encenderlo también en ese caso.
Si alguno está interesado en ese driver, es un fork del proyecto acidanthera creado por el usuario fischerscode, y para ponerlo en marcha solo hay que cambiar el controlador IntelMausi por IntelMausi-WOL en la carpeta Kexts de la carpeta EFI de OpenCore, y referenciarlo en el archivo config.plist
Intel Ethernet LAN driver for macOS. Contribute to fischerscode/IntelMausi-WOL development by creating an account on GitHub.
github.com
Sin embargo, no es lo mismo despertar un equipo estando conectado a la red local, que si estamos fuera de ella. Si estoy en casa, puedo usar el iPhone utilizando el programa Mocha WOL. Solo tienes que crear una entrada para indicar la dirección MAC de la tarjeta de red y usando la opción "Wake Up", se envía el "magic-packet" al puerto 9 usando el protocolo UDP. No puede ser más sencillo y efectivo.
Wake-on-LAN for easy wake up calls. Use your iPhone or iPad to power up a sleeping Mac or PC on your network. FEATURES: - Easy detection of local computers with Bonjour and NETBIOS lookup. - Can ping your computer to check, when it it is ready. - Broadcast on a LAN. - Works from other...
apps.apple.com
Pero cuando estás fuera de casa y no estás conectado a la red local, la cosa se complica. Mocha WOL permite hacer lo mismo, indicando la dirección IP pública de tu router (que puedes tener con un nombre usando un servicio de DNS) y redirigir el puerto UDP número 9 a la dirección de broadcast de la red (192.168.x.255). De esa manera, usando la misma aplicación tienes el tema resuelto, con un perfil configurado para cuando estás en la LAN y otro perfil para cuando estás fuera de casa.
Esto no es tan fácil de conseguir, y depende de los equipos que tengas por medio y también del router para que sea efectiva. En mi caso esta segunda opción no funciona y me ha obligado a buscarme otra alternativa, que por otra parte me ha permitido pasar un buen rato de cacharreando con una Raspberry Pi, en la que he pensado para tenerla como equipo conectado permanentemente y al que me puedo conectar de forma remota para encender el equipo usando VNC desde el iPhone.
Una vez conectado, me ofrece esta interfaz gráfica y solo tengo que pulsar "Encender". Muy fácil y rápido, como quería. Y esto lo puedo usar estando fuera de casa a través de Internet, o dentro de la red local, con dos perfiles de VNC distintos.
Raspberry Pi tiene muchos modelos, unos más potentes y otros más sencillos, y pensando en que el uso que le iba a dar era muy básico y que quiero tener el mínimo consumo eléctrico posible, me he decido por el modelo Raspberry Pi Zero W, que es realmente pequeña y que incorpora una tarjeta Wi-Fi para no tener que pensar en conectar ningún accesorio. No voy a usar ni teclado, ni ratón, ni ningún dispositivo conectado, solo el cable microUSB conectado a un pequeño cargador de móvil para que le de alimentación, nada más.
Es bastante impresionante que un dispositivo tan compacto nos ofrezca la experiencia de un ordenador completo por un precio tan bajo. En Amazon tenéis un
kit con la Raspberry, caja oficial y unos adaptadores por solo 28€.
The Raspberry Pi Zero W extends the Pi Zero family and comes with added wireless LAN and Bluetooth connectivity.
www.raspberrypi.org
Yo he encontrado una con un par de cajas, una que protege la placa y la deja a la vista y otra que la protege completamente y te permite colgarla con una escarpia. Ahí la tenéis comparada con el AirTag que llevo en el llavero, para que veáis lo pequeña que es. Solo necesito el cable microUSB conectado a un cargador y a uno de los dos puertos microUSB de la Raspberry, pero si queréis conectarlo a un teclado, ratón y pantalla, necesitaréis adaptadores de microHDMI a HDMI, de microUSB a USB, y pienso que en ese caso otros modelos son más adecuados.
En un lateral lleva una ranura microSD que funciona como disco duro, y le he puesto la tarjeta más sencilla de 8GB que tenía por casa, que no es nada rápida ni tiene mucha capacidad, pero es más que suficiente para lo que busco.
Lo siguiente es conseguir el sistema operativo, y aunque puede funcionar con distintas distros de Linux, he preferido usar Raspeberry PI OS, que es la oficial, basada en Debian y que incluye una interfaz gráfica para poder usarla más allá de la línea de comandos.
El programa Raspberry Pi Imager está
disponible para su descarga aquí y se encarga de la descarga y la copia a la tarjeta microSD.
Una vez descargado, solo hay que ejecutar el programa, elegir el sistema operativo que queremos e indicar la tarjeta microSD de destino. El programa se encarga de borrarla, descargarla de Internet y copiarla en la tarjeta microSD.
Antes de colocarla en la ranura de la tarjeta microSD, y dado que no tenemos ni teclado, ni ratón, ni pantalla, ni cable de red, tenemos que hacer algo para poder preparar el sistema operativo para que se pueda conectar a nuestra red Wi-Fi, y también habilitar el acceso remoto para poder conectarnos desde otro ordenador.
Para que el nuevo sistema operativo se conecte a nuestra red Wi-Fi, solo hay que copiar en la raíz de la tarjeta microSD un archivo que llamaremos
wpa_supplicant.conf con el siguiente contenido.
Insertar CODE, HTML o PHP:
country=es
update_config=1
ctrl_interface=/var/run/wpa_supplicant
network={
scan_ssid=1
ssid="Tu_Red_WiFi"
psk="Su_contraseña"
}
Podéis descargar una plantilla desde aquí. Y mejor hacerlo, porque si creáis un archivo de texto sin más, no os funcionará.
Y para poder conectarnos a través del terminal, activaremos SSH, para lo que solo hace falta copiar en la raíz de la tarjeta microSD un archivo vacío con el nombre ssh.
Una vez hechas estas dos cosas, colocamos la microSD en la Raspberry Pi y la conectamos al cargador para que se encienda. En un minuto o dos, comprobaremos si seha conectado a nuestra red Wi-Fi, accediendo a la web de gestión de nuestro router o punto de acceso, en donde debiera aparecer conectada. Revisamos la dirección IP asignada que será del tipo 192.168.xxx.yyy y añadimos la dirección MAC a la tabla del servidor DHCP para que siempre le asigne la misma dirección.
Recordad que estamos haciendo esto sin pantalla, ni teclado, ni ratón conectados a nuestra Raspberry Pi, así que no nos queda otra que manejarla desde otro dispositivo. Y como hemos habilitado SSH y no tenemos VNC activado, la primera vez solo podemos conectaremos desde una línea de comando en Windows (o terminal en macOS), con el siguiente comando:
Insertar CODE, HTML o PHP:
Nota importante sobre seguridad: El usuario del sistema es pi, y la contraseña genérica es raspberry, algo que cambiaremos obligatoriamente cuando ejecutemos el asistente de configuración en el entorno gráfico. Este va a ser un equipo accesible desde Internet y no podemos permitirnos el lujo de usar ni contraseñas ni puertos genéricos que se lo pongan fáciles a los bots que rastrean equipos con agujeros abiertos.
Una vez conectados por SSH, y aunque ya viene instalado en el sistema, podemos instalar VNC con los dos siguientes comandos:
Insertar CODE, HTML o PHP:
sudo apt update
sudo apt install realvnc-vnc-server realvnc-vnc-viewer
En este caso vemos que tenemos VNC Server en su versión más reciente 6.7.2.42622 y el cliente VNC Viewer también en la 6.20.529.42646.
Ya solo nos queda acceder a través de la consola SSH a la configuración de Raspberry con el siguiente comando:
Insertar CODE, HTML o PHP:
Y acceder al punto 3 del menú "Interface Options"
Y acceder a la opción P3, para activar VNC Server.
Ya solo nos queda descargar el cliente VNC Viewer en el equipo desde el que nos estamos conectando, desde la web de RealVNC
Controle los equipos que tengan instalado VNC® con VNC® Viewer.
www.realvnc.com
Una vez descargado, lo ejecutamos y añadimos un acceso directo a nuestro equipo indicando la dirección IP y el nombre que queramos darle.
Accediendo a esa configuración nos pedirá usuario (pi) y contraseña (raspberry), tras lo que veremos por primera vez la interfaz gráfica en lugar de la interfaz en modo texto a través de SSH.
Ya tenemos la Raspberry Pi funcionando y accesible desde nuestro portátil o sobremesa en modo gráfico. Solo nos queda algún detalle para tenerlo todo listo.
Lo primero es instalar el programa gWakeOnLan para poder despertarlo. Tenéis la información
en su web, pero si queréis ir al grano, solo tenéis que ejecutar este comando.
Insertar CODE, HTML o PHP:
sudo apt-get install gwakeonlan
Y una vez instalado, tenemos accesible el programa en el menú > Internet > gWakeOnLan y también mediante un acceso directo al escritorio. Su interfaz no puede ser más sencilla y solo hay que indicar la dirección MAC y el nombre del equipo que querremos despertar. También se puede identificar un puerto UDP distinto al 9 que se usa por defecto.
Para encender el equipo, solo hay que seleccionarlo y hacer clic en el botón "Encender", tras lo cual se envía el "Magic Packet" y el equipo se enciende.
Si queréis saber más sobre el tema o si tenéis algún problema y necesitáis aseguraros de que el paquete llega correctamente a la LAN, podéis instalar un "sniffer" como Wireshark.
Wireshark: The world's most popular network protocol analyzer
www.wireshark.org