Encendiendo el PC desde Android

wol-wakeonlanHace tiempo solía dejar el PC encendido las 24 horas del día, no sólo por que pudiese en algún momento estar descargando alguna cosa si no por la comodidad de no tener que encenderlo cuando quisiese usarlo, y por saber que podría acceder en cualquier momento a mi librería Plex.

Últimamente en cambio entre que la luz es cada vez más cara y que el PC ha dejado de ser silencioso (todos los días me digo que tendría que abrirlo y limpiarlo pero al final nunca lo hago) sólo lo enciendo cuando realmente lo necesito.

El problema es que ya no tengo disponible la librería Plex cuando estoy fuera, y dado que estoy fuera tampoco puedo encender el ordenador… a no ser que exista alguna forma de encenderlo remotamente.

Y existe (desde hace cantidad de años). Se llama Wake On LAN.

Para quien no le suene, el Wake On LAN (WOL para los amigos) es una característica de las tarjetas de red que permite enviar un paquete especial (MagicPacket) que hará que el ordenador se encienda. Dado que un ordenador apagado ni tiene IP asignada ni nada de nada la forma de identificarlo es por un identificador del hardware de red llamado MAC (que a pesar del nombre no tiene nada que ver ni con Apple ni con el primo malparido de ET).

Para esto necesitamos que la funcionalidad de WOL esté soportada por la tarjeta de red (todas las tarjetas modernas suelen soportarlo) y que además esté activado en la BIOS (suele estarlo, pero no está de más verificarlo).

La opción de la BIOS que activa esto tiene un nombre del estilo de “Wake On PCIE”, y deberá estar en “enabled”. La localización de esta opción dentro de los menús de la BIOS depende del modelo de la misma, así que toca buscar un poco.

Además de la BIOS necesitamos que el sistema operativo configure el interfaz para recibir este MagicPacket. Si apagásemos el ordenador sin tener esto configurado, aun teniendo el WOL activado en la BIOS, el Wake On LAN no funcionará.

Para activarlo en Linux usaremos la herramienta ethtool, que nos permite cambiar las opciones de configuración de los interfaces. Si no la tenemos instalada:

sudo apt-get install ethtool

La opción que nos activará el WOL en un interfaz es la siguiente:

sudo ethtool -s eth0 wol g

El interfaz por el que yo me conecto a internet es eth0, en tu caso puede ser otro. Puedes ver qué interfaces tienes en la salida del comando ifconfig:

ifconfig

Además del nombre del interfaz, ifconfig nos da otro dato que necesitaremos para usar el Wake On LAN: la dirección MAC de la tarjeta de red. En la captura superior es la cadena de parejas de números y letras que aparece a la derecha de “direcciónHW”.

Como comentaba antes ethtool nos permite activar la funcionalidad que queremos PERO no lo hace de forma permanente: cuando reiniciemos perderemos esa configuración.

Necesitaremos que el ethtool se ejecute cada vez que arranquemos el PC, y dado que Ubuntu usa el sistema upstart aprovecharemos y nos crearemos un script upstart que lance el comando después de levantar los interfaces de red.

Creamos el script en /etc/init:

sudo gedit /etc/init/wakeonlan.conf

Y pegamos el siguiente texto:

start on started network
script
for interface in $(cut -d: -f1 /proc/net/dev | tail -n +3); do
logger -t 'wakeonlan init script' enabling wake on lan for $interface
ethtool -s $interface wol g
done
end script

Ya lo tenemos todo listo en lo que respecta a nuestro PC… pero ahora cómo hacemos que arranque?

Hay varias aplicaciones de WOL en el Play Store de Android, la que yo he probado es Wol Wake On Lan Wan. El interfaz es bastante cutre, pero funciona.

Al abrir la aplicación pulsamos en el botón “Añadir nuevo” y rellenaremos los siguientes campos:

wol

  • Nombre: el que queremos, que nos sirva para saber qué PC vamos a arrancar.
  • MAC: la que nos salía en el ifconfig del que hablaba más arriba (donde en el ifconfig nos aparecen dos puntos aquí deberemos poner un guión, tal como nos sale en el ejemplo).
  • IP o dominio: de momento para probar que funciona en nuestra red local basta que pongamos la IP del PC que vamos a intentar arrancar.
  • Puerto: como luego querremos poder usar el WOL desde fuera de casa y por tanto tendremos que abrir un puerto en nuestro router, pondremos aquí el puerto que queramos pero preferentemente que sea por encima del 1024, por ejemplo 10500.

El resto de las opciones las podemos dejar como están y pulsamos en guardar.

Si hemos ejecutado el comando ethtool (el script upstart se ejecutará la próxima vez que se arranque el ordenador, para probar ahora sin tener que apagar, arrancar y volver a apagar tendremos que ejecutar el comando a mano) podemos apagar el PC y desde la aplicación del Android pulsar en “Enviar paquete(s)” (o simplemente pulsar en el nombre que hemos puesto a estar configuración en la pantalla principal de la aplicación).

Si toda la configuración es correcta (y si tenemos el móvil conectado a la red local de casa, o sea a nuestro WiFi) el ordenador debería encenderse automágicamente.

Siguiente paso: poder encender el ordenador desde fuera de casa a través de la conexión 3g.

Necesitaremos:

  • Abrir el puerto que habíamos configurado en la aplicación de Android en nuestro router (el dónde hacer esto depende del modelo de router que tengamos).
  • Para facilitar las cosas y dado que es casi seguro que tengas una IP dinámica, darse de alta en algún servicio de DNS gratuito como por ejemplo no-ip.com. Además en el caso de no-ip podemos instalarnos la aplicación noip que actualizará automáticamente el registro en caso de que nuestro proveedor nos cambie nuestra IP.
  • Crear una nueva entrada en nuestra aplicación de Wake On Lan de Android indicando esta vez en el campo “IP o dominio” el nombre de Host que hayamos elegido en no-ip.

Y ya está, todo listo. Podemos apagar el ordenador de nuevo, desconectar nuestro móvil del WiFi y verificar que efectivamente el ordenador arranca al pulsar sobre la nueva entrada que acabamos de crear en la app de Android.

Como extra añadido a poder arrancar el ordenador desde fuera de casa ahora además podemos añadirnos un +1 a vaguería y encender el PC sin levantarnos del sofá.

  • JamesPMI

    Fenomenal, muchas gracias…