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:
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:
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
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:
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) :
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…
hola yo tengo un conversor de hdmi a vga y no me deja subir la resolucion a mas de 1024×768 y mi monitor soporta hasta 1600×900. cada vez que intento subir la resolucion se pone la pantalla en negro y sale un error. como lo puedo solucionar?? desde ya muchas gracias.
Quizá sea el propio conversor hdmi-vga, mira bien las especificaciones y prueba con un ordenador o portátil para garantizar que permite resoluciones más altas
Hola, yo tengo un tv box marca mecool, me compré un conversor de HDMI a AV, para poder usarlo en mi televisor antiguo, da todo bien, funciona bien pero NO TIENE COLOR y mi televisor es un DAEWOO SUMMUS-neoSlim a color. He intentado ajustar la resolución y profundidad pero no sale esa opción. Cómo podría hacer para que tenga color, gracias por tu respuesta de antemano.
Tendrías que comprobar con otra TV que el adaptador y el tv box se ve en color (tanto en HDMI como en AV).
Comprueba bien los cables AV, o quizá algún modo de la TV (PAL,SECAM…)
Buenas tengo una TV Box Android la cual conecto a un proyector de vídeo mediante un cable HDMI VGA y el proyector no admite la resolución del TV Box, intento bajar la resolución en el TV Box pero nunca me guarda los cambios qué solución me podéis ofrecer?.
El cable funciona correctamente conectado a un televisor muchísimas gracias por vuestra aportación y vuestra ayuda.
Hola, en general no guardará los cambios al reiniciar, una opción es la que se explica en el post, que es con un script que se ejecuta al iniciar y cambia la resolución.