# Desbloquear el brillo máximo en el proyector HY-300 mediante ADB e ingeniería inversa del firmware Rockchip
Los fabricantes de proyectores económicos suelen limitar artificialmente el brillo, sin ofrecer controles al usuario. Usando el HY-300 con Rockchip RK3326 como ejemplo, te mostramos cómo obtener acceso root vía ADB, desactivar dm-verity y ajustar la tabla LUT de gamma para recuperar el brillo completo de la pantalla.
Análisis de la plataforma de hardware y el problema
El proyector HY-300 funciona con el SoC Rockchip RK3326 y Android TV OS. ¿El principal problema? No hay controles de brillo en la interfaz. El brillo cae justo después del arranque, quedando en torno al 70% de su potencial real. Al investigar más a fondo, descubrimos que el control estándar de retroiluminación de Android no funciona: el nodo de retroiluminación en el árbol de dispositivos está mal configurado, sin vinculación a un canal PWM.
Lo que intentamos sin éxito:
- Ajustar screen_brightness desde los ajustes
- Jugar con propiedades del sistema (persist.vendor.brightness.main)
- Control directo vía /sys/class/leds/Lcd_power
- Comandos de SurfaceFlinger para la matriz de color
Conexión ADB y obtención de acceso root
Las conexiones USB generan conflictos de energía, por lo que ADB por Wi-Fi es la única forma fiable. En Android TV, el modo desarrollador se activa tocando la versión del SO, pero aquí ADB y root venían habilitados de fábrica.
adb connect <IP del proyector>:5555
adb root
Una vez conectado, encontramos las particiones /system y /vendor bloqueadas por dm-verity, impidiendo escrituras. La solución: ejecutar adb disable-verity una vez y reiniciar. Esto activa overlayfs, permitiendo editar las particiones del sistema.
Búsqueda del mecanismo de control de brillo
Los logs de arranque señalaron un servicio testgamma que se ejecuta al inicio. Su script en /system/bin/testgammatx.sh contiene parámetros que afectan directamente la corrección de gamma:
testgamma --wb_r 1.0 --wb_g 0.96 --wb_b 0.95 --contrast 58 --brightness 30 --saturation 80 --hue 35 --target_gamma 1.8 --native_gamma 2.9
La herramienta testgamma escribe una Tabla de Búsqueda (LUT) directamente en el procesador de video VOP mediante ioctl de DRM. Pero ¿brillo, contraste, saturación y matiz? Son placeholders: el VOP Lite de RK3326 no soporta esas propiedades DRM (BCSH). Los verdaderos culpables son:
- wb_r, wb_g, wb_b — coeficientes de balance de blancos (0.0–1.0), que actúan como multiplicadores de brillo por canal de color.
- target_gamma, native_gamma — moldean la curva de gamma, afectando los tonos oscuros.
Por qué los cambios requieren reinicio
El servicio testgamma se ejecuta antes de SurfaceFlinger y HWC (hwcomposer). HWC toma el control del dispositivo DRM y sobrescribe los ajustes de VOP en cada fotograma, anulando cualquier llamada a testgamma en tiempo de ejecución. Editar el script y reiniciar es la única forma de que los cambios perduren.
Optimización de parámetros para brillo máximo
Pruebas sistemáticas tras cada reinicio revelaron el punto óptimo. Los ajustes de fábrica reducían la salida de dos maneras: coeficientes verdes/azules mermados (0.96/0.95) y target_gamma=1.8 frente a native_gamma=2.9.
Resultados de las pruebas:
- wb_r/g/b = 0.1, target_gamma=2.2 — ~10% de brillo
- wb_r/g/b = 0.5, target_gamma=1.8 — ~50% de brillo
- wb_r/g/b = 1.0, target_gamma=1.0 — brillo máximo pero colores invertidos
- wb_r/g/b = 1.0, target_gamma=1.6 — brillo ideal y balance de color perfecto
Guía paso a paso para la configuración
Para dueños de HY-300 con RK3326 (firmware TXCZ), sigue esto:
1. Preparación y conexión:
Instala Android Platform Tools en tu PC, anota la IP del proyector. Ejecuta:
adb connect <IP>:5555
adb root
2. Desactivar dm-verity (una sola vez):
adb disable-verity
adb reboot
Espera al arranque completo y reconéctate.
3. Establecer brillo máximo:
adb shell mount -o remount,rw /system
adb shell "echo '#!/system/bin/sh\ntestgamma --wb_r 1.0 --wb_g 1.0 --wb_b 1.0 --contrast 58 --brightness 50 --saturation 80 --hue 35 --target_gamma 1.6 --native_gamma 2.9' > /system/bin/testgammatx.sh"
adb reboot
4. Revertir a ajustes de fábrica:
adb shell mount -o remount,rw /system
adb shell "echo '#!/system/bin/sh\ntestgamma --wb_r 1.0 --wb_g 0.96 --wb_b 0.95 --contrast 58 --brightness 30 --saturation 80 --hue 35 --target_gamma 1.8 --native_gamma 2.9' > /system/bin/testgammatx.sh"
adb reboot
Lecciones clave
- ADB y root activados por defecto en este firmware: un gran ventaja para experimentar.
- Control principal de brillo es la LUT de gamma escrita por testgamma en VOP.
- Requiere reinicio porque HWC sobrescribe los ajustes en tiempo real.
- Parámetros óptimos: wb_r/g/b = 1.0, target_gamma = 1.6 (native_gamma = 2.9).
- Funciona en otros dispositivos Rockchip con configuraciones similares.
Lecciones para desarrolladores
Este caso resalta fallos comunes en hardware Android económico: configuraciones erróneas del árbol de dispositivos, dependencia de controles de hardware obsoletos o sin documentar. Dominar DRM, LUT de gamma y overlayfs te permite solucionar problemas y desentrañar sistemas embebidos. Para otros SoC, adapta el enfoque, pero el análisis de logs, ingeniería inversa de servicios e interfaces de depuración son universales.
— Editorial Team
Aún no hay comentarios.