Débloquer la luminosité maximale du projecteur HY-300 via ADB et reverse engineering du firmware Rockchip
Les fabricants de projecteurs bon marché limitent souvent artificiellement la luminosité, sans aucun contrôle accessible à l'utilisateur. En prenant l'exemple du HY-300 sur Rockchip RK3326, nous allons vous montrer comment obtenir un accès root via ADB, désactiver dm-verity et ajuster la table LUT gamma pour restaurer la pleine luminosité de l'affichage.
Analyse de la plateforme matérielle et le problème
Le projecteur HY-300 fonctionne sur le SoC Rockchip RK3326 avec Android TV. Le principal problème ? Aucune commande de luminosité dans l'interface. La luminosité chute dès après le démarrage, se stabilisant à environ 70 % de son vrai potentiel. Une analyse plus approfondie a révélé que le contrôle standard de rétroéclairage Android ne fonctionne pas : le nœud rétroéclairage dans l'arbre des périphériques est mal configuré, sans liaison de canal PWM.
Ce que nous avons essayé sans succès :
- Ajuster screen_brightness via les paramètres
- Modifier les propriétés système (persist.vendor.brightness.main)
- Contrôle direct via /sys/class/leds/Lcd_power
- Commandes SurfaceFlinger pour la matrice de couleurs
Connexion ADB et obtention de l'accès root
Les connexions USB provoquent des conflits d'alimentation, donc ADB en Wi-Fi est la seule méthode fiable. Sur Android TV, le mode développeur s'active en tapotant la version OS, mais ici ADB et root étaient disponibles dès le départ.
adb connect <IP projecteur>:5555
adb root
Une fois connecté, les partitions /system et /vendor étaient verrouillées par dm-verity, bloquant les écritures. La solution : exécuter adb disable-verity une fois, puis redémarrer. Cela active overlayfs, rendant les partitions système modifiables.
Recherche du mécanisme de contrôle de luminosité
Les logs de démarrage pointaient vers un service testgamma lancé au démarrage. Son script à /system/bin/testgammatx.sh contient des paramètres affectant directement la correction 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
L'outil testgamma écrit une Table de Recherche (LUT) directement dans le processeur vidéo VOP via l'ioctl DRM. Mais luminosité, contraste, saturation et teinte ? Des leurres — le VOP Lite de RK3326 ne supporte pas ces propriétés DRM (BCSH). Les vrais acteurs sont :
- wb_r, wb_g, wb_b — coefficients de balance des blancs (0.0–1.0), agissant comme multiplicateurs de luminosité par canal de couleur.
- target_gamma, native_gamma — façonnent la courbe gamma, impactant les tons sombres.
Pourquoi les changements nécessitent un redémarrage
Le service testgamma s'exécute avant SurfaceFlinger et HWC (hwcomposer). HWC prend le contrôle du périphérique DRM et écrase les réglages VOP à chaque image, annulant tout appel testgamma en temps réel. Modifier le script et redémarrer est la seule façon de rendre les changements persistants.
Optimisation des paramètres pour une luminosité maximale
Des tests systématiques après chaque redémarrage ont révélé le réglage idéal. Les paramètres d'usine atténuaient la sortie de deux façons : coefficients vert/bleu réduits (0.96/0.95) et target_gamma=1.8 contre native_gamma=2.9.
Résultats des tests :
- wb_r/g/b = 0.1, target_gamma=2.2 — ~10 % de luminosité
- wb_r/g/b = 0.5, target_gamma=1.8 — ~50 % de luminosité
- wb_r/g/b = 1.0, target_gamma=1.0 — luminosité max mais couleurs inversées
- wb_r/g/b = 1.0, target_gamma=1.6 — luminosité idéale et équilibre des couleurs
Guide d'installation étape par étape
Pour les propriétaires de HY-300 sur RK3326 (firmware TXCZ), suivez ceci :
1. Préparation et connexion :
Installez Android Platform Tools sur votre PC, notez l'IP du projecteur. Exécutez :
adb connect <IP>:5555
adb root
2. Désactiver dm-verity (une seule fois) :
adb disable-verity
adb reboot
Attendez le démarrage complet et reconnectez-vous.
3. Régler la luminosité maximale :
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. Revenir aux réglages d'usine :
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
Points clés à retenir
- ADB et root activés par défaut dans ce firmware — un gros avantage pour bricoler.
- Contrôle principal de luminosité : la LUT gamma écrite par testgamma dans VOP.
- Redémarrage obligatoire car HWC écrase les réglages en temps réel.
- Paramètres optimaux : wb_r/g/b = 1.0, target_gamma = 1.6 (native_gamma = 2.9).
- Fonctionne pour d'autres appareils Rockchip avec configurations similaires.
Leçons pour les développeurs
Ce cas met en lumière les pièges courants dans le matériel Android bon marché : configurations d'arbre des périphériques foireuses, dépendance à des contrôles matériels obsolètes ou non documentés. Maîtriser DRM, LUT gamma et overlayfs permet de corriger les problèmes et de disséquer les systèmes embarqués. Pour d'autres SoC, adaptez l'approche — mais l'analyse des logs, le reverse engineering des services et les interfaces de debug restent universels.
— Editorial Team
Aucun commentaire pour le moment.