Jak odemknout maximální jas projektoru HY-300 prostřednictvím ADB a reverzního inženýrství firmware Rockchip
Výrobci rozpočtových projektorů často uměle omezují jas, aniž by uživatelům poskytovali nastavení. Na příkladu HY-300 na Rockchip RK3326 ukážeme, jak získat root přístup prostřednictvím ADB, vypnout dm-verity a upravit gamma LUT pro obnovení plného jasu displeje.
Analýza hardwarové platformy a problémů
Projektor HY-300 je postaven na SoC Rockchip RK3326 s Android TV OS. Klíčový problém — úplná absence nastavení jasu v rozhraní. Vizuálně jas klesá ihned po načtení, zůstává na úrovni přibližně 70 % od potenciálního maxima. Výzkum ukázal, že standardní mechanismus řízení podsvícení Android nefunguje: uzel backlight v device tree je nakonfigurován nesprávně, chybí vazba na PWM-kanál.
Co bylo ověřeno bezvýsledně:
- Změna screen_brightness přes settings
- Manipulace se systémovými vlastnostmi (persist.vendor.brightness.main)
- Přímé řízení přes /sys/class/leds/Lcd_power
- Příkazy SurfaceFlinger pro barevnou matici
Připojení ADB a získání root přístupu
Protože USB-připojení vede ke konfliktu napájení, jediná funkční metoda — ADB over Wi-Fi. V Android TV se režim vývojáře zapíná klepnutím na verzi OS, ale v tomto případě byl ADB a root dostupný ve výchozím stavu.
adb connect <IP projektoru>:5555
adb root
Po připojení se zjistilo, že oddíly /system a /vendor jsou chráněny dm-verity, což blokuje jakýkoli zápis. Řešení — jednorázové provedení adb disable-verity s následným restartem. Toto aktivuje overlayfs, čímž se systémové oddíly stávají editovatelnými.
Hledání mechanismu řízení jasu
Analýza logů spouštění odhalila službu testgamma, která se provádí při startu systému. Její skript /system/bin/testgammatx.sh obsahuje parametry přímo ovlivňující gamma korekci:
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
Nástroj testgamma zapisuje Look-Up Table (LUT) přímo do videoprocesoru VOP přes DRM ioctl. Avšak parametry brightness, contrast, saturation a hue jsou prázdné — VOP Lite v RK3326 nepodporuje odpovídající DRM-vlastnosti (BCSH). Skutečný vliv mají pouze:
- wb_r, wb_g, wb_b — koeficienty vyvážení bílé (0.0–1.0), působící jako multiplikátory jasu pro každý barevný kanál.
- target_gamma, native_gamma — určují tvar gamma křivky, ovlivňující zobrazení tmavých tónů.
Proč změny vyžadují restart
Služba testgamma se provádí před spuštěním SurfaceFlinger a HWC (hwcomposer). HWC přebírá řízení DRM-zařízení a přepisuje nastavení VOP každý snímek, činí jakékoli volání testgamma v runtime neúčinnými. Proto editace skriptu s následným restartem — jediný způsob, jak změny aplikovat.
Optimalizace parametrů pro maximální jas
Systematické testování různých kombinací parametrů po každém restartu umožnilo najít optimální konfiguraci. Tovární nastavení snižovala jas dvěma způsoby: snížením koeficientů pro zelený a modrý kanál (0.96 a 0.95) a nastavením target_gamma=1.8 při native_gamma=2.9.
Výsledky testování:
- wb_r/g/b = 0.1, target_gamma=2.2 — jas ~10%
- wb_r/g/b = 0.5, target_gamma=1.8 — jas ~50%
- wb_r/g/b = 1.0, target_gamma=1.0 — maximální jas s invertovanými barvami
- wb_r/g/b = 1.0, target_gamma=1.6 — optimální rovnováha jasu a barevného podání
Podrobný návod k nastavení
Pro majitele projektorů HY-300 na RK3326 (firmware TXCZ) doporučujeme následující algoritmus akcí.
1. Příprava a připojení:
Nainstalujte Android Platform Tools na PC, zjistěte IP-adresu projektoru v síti. Proveďte:
adb connect <IP>:5555
adb root
2. Vypnutí ochrany dm-verity (jednorázově):
adb disable-verity
adb reboot
Počkejte na úplné načtení a znovu se připojte.
3. Nastavení maximálního jasu:
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. Návrat k továrním nastavením:
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
Co je důležité
- ADB a root jsou dostupné ve výchozím stavu v této firmware, což zjednodušuje výzkum.
- Hlavní mechanismus řízení jasu — gamma LUT, zapisovaná nástrojem testgamma do VOP.
- Změny vyžadují restart, protože HWC přepisuje nastavení v runtime.
- Optimální parametry: wb_r/g/b = 1.0, target_gamma = 1.6 při native_gamma = 2.9.
- Metoda je aplikovatelná na další zařízení na Rockchip s podobnou architekturou.
Závěry pro vývojáře
Výzkum demonstruje typické problémy rozpočtových Android-zařízení: nesprávná konfigurace device tree, používání zastaralých nebo nedokumentovaných mechanismů řízení hardwaru. Porozumění fungování DRM, gamma LUT a overlayfs umožňuje nejen řešit konkrétní problémy, ale i hlouběji analyzovat architekturu vestavěných systémů. Pro projektory na jiných SoC bude potřeba adaptace metod, ale obecný přístup — analýza logů, reverzní inženýrství systémových služeb a přímé řízení přes ladící rozhraní — zůstává univerzální.
— Editorial Team
Zatím žádné komentáře.