Zpět na domů

Odblokování jasu projektoru HY-300 přes ADB a reverzní inženýrství

Technický průvodce odblokováním maximálního jasu projektoru HY-300 na Rockchip RK3326 přes ADB a reverzní inženýrství firmwaru. Popsány metody získání root přístupu, vypnutí dm-verity, úpravy gamma LUT a optimalizace parametrů testgamma pro obnovení plného jasu displeje.

Maximální jas HY-300: reverzní inženýrství firmwaru Rockchip
Advertisement 728x90

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

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

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

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.

Google AdInline article slot

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

Advertisement 728x90

Číst dál