Android Things OS para Raspberry Pi 3

Al final G00gle ha lanzado una versión de Android a la que mucha gente ya le había puesto cara y que creo que va a defraudar a la mayoría. Se trata del antiguo proyecto denominado Brillo y que ahora se ha renombrado como Android Things.

Android Things es un sistema operativo de tipo servidor y que va más en la línea de Windows 10 IoT o de Ubuntu Snap Core, que son los otros dos grandes sistemas operativos que todo el mundo quiere tener en su Raspberry Pi y que solo proveen de versiones tipo servidor sin escritorio y sin interfaz gráfica para usuarios.

android-things-platform-architecture

Para los que aún sigáis interesados, podéis entrar para probar la Developer Preview después de haberlo instalado en vuestra Raspberry Pi 3: Android Things para Raspberry Pi 3 en concreto desde la página de descargas de Android Things y que necesita una microSD de al menos 8GB.

android-things-driver-stack

En el PC con Linux, Mac o Windows que utilicéis para conectaros necesitaréis tener instaladas las adb tools igual que si fuerais a desarrollar una aplicación para Android.

Una vez arranca y os conectáis a ella por red con cable usando adb y la dirección IP de vuestra Raspberry, que tendréis que buscar en la configuración de vuestro router o usando algún detector de equipos conectados como Fing:

$ adb connect <ip-de-la-raspberry>
connected to <ip-de-la-raspberry>:5555

Si queréis configurar el Wi-Fi de la Raspberry Pi 3 con estos comandos y el nombre y clave de vuestra red:

$ adb shell am startservice \
-n com.google.wifisetup/.WifiSetupService \
-a WifiSetupService.Connect \
-e ssid <el-SSID-de-tu-Wi-Fi> \
-e passphrase <contraseña-de-tu-Wi-Fi>

Confirmamos que todo está funcionando con logcat:

$ adb logcat -d | grep Wifi
...
V WifiWatcher: Network state changed to CONNECTED
V WifiWatcher: SSID changed: ...
I WifiConfigurator: Successfully connected to ...

Una vez quitamos el cable de red hacemos ping a algún servidor para confirmar que realmente funciona el Wi-Fi:

$ adb shell ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=57 time=6.67 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=57 time=55.5 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=57 time=23.0 ms
64 bytes from 8.8.8.8: icmp_seq=4 ttl=57 time=245 ms

Ya podéis probar alguno de los ejemplos disponibles para los que hace falta tener un pequeño kit de electrónica y algunos componentes.

Para los muy curiosos aquí va una batería de enlaces:

https://www.facebook.com/raspberryparatorpes