MyGica resolucion VGA

Mygica ATV586 Cambiar Resolución HDMI a VGA (Amlogic s805)

El dispositivo Mygica ATV586 es un Android TV box con chip Amlogic S805, similar a otros muchos, pero con un sintonizador TDT incorporado.

Un problema que me surgió fue a la hora de conectarlo a una vieja TV LCD por la resolución de su única salida de video HDMI. Describiré poco a poco y con detalle todo…

Quizá esto sea válido para otros Android TV Box…

El Problema

La TV es una Samsung de 15” LCD, con entradas de video RCA y VGA (con resolución 1024×768). Para conectar el Android TV box he usado sendos adaptadores de HDMI a video compuesto AV y de HDMI a VGA (ambos se encuentran fácilmente en ebay , son del tipo “mini adapter HDMI2AV / mini adapter HDMI2VGA”

No hay ningún problema con el adaptador HDMI a AV, pero la imagen que se ve en la pantalla tiene una calidad pésima:

MyGica AV

Sin embargo, de esta manera, se puede seleccionar la resolución 1024×768 en el menú de ajustes de HDMI, y cambiando el cable HDMI de un adaptador a otro, es decir, sin apagar nada, conectarlo al adaptador HDMI a VGA, el resultado es mucho mejor, obteniendo la resolución correcta. La resolución 480p también funciona con este adaptador, pero con una calidad un poco peor que la VGA:

MyGica VGA

Pero al apagar (desenchufar) el TV Box, y volver a encenderlo, esta vez conectado con el adaptador HDMI a VGA, la pantalla no muestra ninguna imagen, advirtiendo con un mensaje de “Modo de video incompatible”

Análisis de las Causas del problema

Se hacía necesario un análisis para solucionar el problema y disfrutar de la resolución VGA al apagar y encender el TV box

Para ello, y puesto que la imagen no será visible en la TV, se hace necesario poder acceder al MyGica mediante un PC, para ello instalé la app SSHDroid y la configuré para que arrancara al inicio de Android, y poder acceder desde un cliente SSH en el PC.

Tras consultar muchos foros, son ciertos archivos los que contienen los valores de la resolución de salida del HDMI

Consulté dichos valores en los dos casos anteriores, con el adaptador HDMI a AV y con el adaptador HDMI a VGA, ambos funcionando con imagen en pantalla:

El problema principal de la TV es que no acepta el modo 1080p ni 720p, el único que acepta es el 480p (y el VGA)

Conexión a la TV con adaptador HDMI2 AV

Adjunto capturas de pantalla de la sesión ssh mostrando los valores de algunos parámetros y archivos( /sys/class/display  y  /sys/class/amhdmitx/amhdmitx0 ). Antes de todo, y dado que el ATV586 viene rooteado, ejecuté la sesión de superusuario:

$ /system/xbin/su

Valores AV

Existen otros archivos pero no cambian sus valores según la resolución.

 

Conexión a la TV con adaptador HDMI2 VGA

Adjunto capturas de pantalla de la sesión ssh mostrando los valores anteriores:

Valores VGA

Se comprueba que los modos de EDID de la TV aparece uno nuevo correspondiente al VGA.

La Clave y la Solución

Uno de las pistas para resolver el problema está en el archivo (/sys/class/amhdmitx/amhdmitx0/vga_resolution_state) :

vga configuracion

Al escribir Enable en él, aparece como modo disponible la resolución 1024x768p60hz en el menú de ajustes de HDMI del Android TV. Pero al reiniciar el dispositivo se inicializa de nuevo a Disable.

El archivo clave es uno de los scripts de inicio, /system/bin/set_display_mode.sh

Ahí se selecciona el modo de salida de video HDMI, y de ahí se pueden copiar los comandos necesarios para cambiar la resolución, siguiendo el código y viendo lo que hace.

Para editar este archivo es necesario montar la carpeta system en modo escritura (desde una Shell superusuario)

$ /system/xbin/su
#mount -ro remount,rw /system

Lo primero que hice fue forzar la resolución a 480p, pues en la TV se veía imagen y así no causo problemas a la hora de conectar a otra pantalla.

Para ello se edita el script /system/bin/set_display_mode.sh a (justo antes de llamar a getAxis

[]
### Fuerzo salida a 480p, para poder evitar el modo incompatible desde el principio con la TV
outputmode=480p
###
getAxis
[]

Una vez arrancado el TV Box, uso la aplicación de Google Play Script Manager para lanzar un script al inicio (boot), con permisos superusuario y en segundo plano (background) (existen muchos tutoriales para esto, y es muy sencillo). Eso hace posible que tras el arranque, y tras unos segundos con la pantalla en negro, todo vuelva a funcionar correctamente.

El contenido del script es el siguiente:

Script Para ScripManager (Boot + Background + Root)

#!/system/bin/sh
echo Enable > /sys/class/amhdmitx/amhdmitx0/vga_resolution_state

echo 1 > /sys/class/graphics/fb0/blank
echo 1 > /sys/class/graphics/fb1/blank
echo 0 > /sys/class/graphics/fb1/free_scale
 
echo 1024x768p60hz > /sys/class/display/mode
 
echo 1 > /sys/class/graphics/fb0/freescale_mode
echo 1 > /sys/class/graphics/fb1/freescale_mode

echo 0 0 1919 1079 > /sys/class/graphics/fb0/free_scale_axis
echo 0 0 1022 767 > /sys/class/video/axis
echo 0 0 1022 767 > /sys/class/graphics/fb0/window_axis
 
echo 0 > /sys/class/graphics/fb0/blank
 

Ahora, por fin, puedo usar perfectamente my MyGica ATV586 con mi vieja TV LCD con la resolución 1024×768, apagar el dispositivo, volverlo a encender, etc…., sin perder la configuración.

Podría haber copiado todo el script anterior al final del script de inicio de MyGica /system/bin/set_display_mode.sh, y me habría ahorrado la app ScriptManager, pero no lo he probado…

 

Leave a Reply

Tu dirección de correo electrónico no será publicada.