Volver al inicio

Desbloqueando el brillo del proyector HY-300 mediante ADB e ingeniería inversa

Guía técnica para desbloquear el brillo máximo del proyector HY-300 en Rockchip RK3326 mediante ADB e ingeniería inversa del firmware. Describe métodos para obtener acceso root, deshabilitar dm-verity, editar gamma LUT y optimizar parámetros testgamma para restaurar el brillo completo de la pantalla.

Brillo máximo HY-300: ingeniería inversa del firmware Rockchip
Advertisement 728x90

# 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:

Google AdInline article slot
  • 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:

Google AdInline article slot
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.

Google AdInline article slot

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

Advertisement 728x90

Leer después