27 ene 2021

Jugando a Cyberpunk 2077 en la pantalla del coche con Android Auto



Aunque ya llevo algunos meses con un vehículo que dispone de Android Auto, no había encontrado el momento de hacer algunas pruebas para investigar un poco al respecto. Sin embargo, durante este tiempo me he preguntado varias veces cómo aumentar las posibilidades de la pantalla del coche.

La idea es bastante sencilla. No es algo nuevo la posibilidad de hacer stream desde un ordenador. NVIDIA Gamestream permite el stream desde un PC a dispositivos NVIDIA Shield. Sin embargo, existen aplicaciones no oficiales que utilizan un cliente para desbloquear el stream hacia casi cualquier dispositivo. En nuestro caso utilizamos la aplicación más famosa, Moonlight Stream. Así que el primer paso es conseguir hacer streaming de nuestra biblioteca de juegos hacia nuestro dispositivo Android. Para que podáis haceros una idea de cómo todo esto es posible, al final del post deberíamos tener un esquema como el que se muestra a continuación.


FASE 1: Vinculación de Moonlight

Necesitamos tener instalado GeForce Experience en el PC desde el que vayamos a realizar el stream. Una vez dentro del programa, debemos activar Gamestream dentro de la configuración en el apartado de Shield. Por defecto no todos los juegos son compatibles, pero el Gamestream nos permite añadir cualquier ejecutable para que podamos usarlo.

Una vez activado el server de NVIDIA, hemos de instalar el cliente en el dispositivo Android que vayamos a utilizar. Podemos hacerlo directamente desde Play Store o desde su GitHub. Una vez instalado deberíamos probar que la conexión funciona en local. Si todo se ha configurado de forma correcta, bastará con poner la IP local del servidor para acceder a los juegos que haya en nuestro PC desde el dispositivo móvil. Moonlight tiene bastantes opciones de configuración por defecto, y obviamente, para que podamos utilizarlo siempre que tengamos conexión de red móvil, necesitamos acceso externo. Un DDNS (DNS Dinámico), o un dominio que podamos redireccionar a la IP externa de la red donde se encuentra el servidor puede sernos de ayuda. Pero llega la hora de hacer el primero de los dos "disclaimer" del post.

DISCLAIMER I: Usad VPN, usad ZeroTier, pero no abráis los puertos de Moonlight hacia el exterior. A fin de cuentas, funciona como un servicio RDP optimizado para juegos, y permite la interacción no solo con el mando, también con teclado y ratón o incluso táctil desde el propio dispositivo.

Para más información con respecto a como vincular Moonlight con GeForce Experience, tenéis varias guías en el "Quick Guide" del programa.


FASE 2: Mirroring en el HeadUnit vía Android Auto (Necesita ROOT)

DISCLAIMER II: No es seguro utilizar un dispositivo Android con Root de forma habitual como nuestro smartphone principal. Existen muchas aplicaciones que pueden parecer inofensivas, pero que una vez tienen permisos suficientes pueden realizar procesos maliciosos. Para las pruebas se ha utilizado un dispositivo alternativo, ya que necesitamos permisos de superusuario para poder hacer mirroring desde Android Auto. Si aún así decidís hacerlo, podéis usar Magisk

Android Auto, al ser una extensión del sistema para vehículos, ha de cumplir una serie de certificaciones bastante exhaustivas sobre el uso que pueden tener las aplicaciones desarrolladas para él. Obviamente, jugar a videojuegos o ver videos mientras conduces no debería ser posible. Sin embargo, mi pregunta es, por qué no se ha limitado un uso ampliado de las funciones de Android Auto a cuando el coche esté en marcha. ¿Por qué no puedo usar una pantalla de tamaño considerable mientras estoy parado con mi coche?.

Para conseguir el mirroring necesitamos modo desarrollador en Android Auto y dos apps que usan root:

AA-Phenotype-Patcher(GitHub)

Esta aplicación permite parchear 3rd party apps como AAMirror para que puedan ejecutarse en Android Auto. Para poder aplicar el parcheo a una aplicación, debe haber sido instalada previamente.

AAMirror (GitHub)

Por otro lado, esta app permite hacer mirroring tanto de la pantalla como del audio, incluyendo el control del dispositivo desde la propia pantalla táctil del Head Unit. Debemos activar el envío de audio desde esta aplicación para que el audio se envíe al equipo de sonido del vehículo.

Android Auto funciona mediante un Head Unit, es decir, el software que reside en el vehículo no es más que un cliente que se conecta al servidor que levanta la aplicación en nuestro dispositivo móvil. Así que, realmente no es necesario ningún tipo de procedimiento adicional desde el propio vehículo, porque es en el servidor donde se ejecutan las aplicaciones. 

Una vez tengamos todo el setup preparado, tendremos acceso al mirroring de la pantalla del dispositivo accediendo a la aplicación AAMirror desde la pantalla del Head Unit. Conectamos un mando vía bluetooth, arrancamos Moonlight y ponemos la IP o el dominio de nuestro servidor de Nvidia Gamestreaming. Y voilá, podemos jugar a toda nuestra biblioteca de juegos desde Android Auto. 


Por supuesto, incluiremos este tipo de problemas en los controles de Infotainment de OMSP (Open Mobility Security Project):

https://github.com/zerolynx/omsp/tree/master/document/Infotainment


|Disfrutad de CyberBug! 😋



No hay comentarios:

Publicar un comentario