Retour à l'accueil

Déverrouillage de la luminosité du projecteur HY-300 via ADB et ingénierie inverse

Guide technique pour déverrouiller la luminosité maximale du projecteur HY-300 sur Rockchip RK3326 via ADB et ingénierie inverse du firmware. Décrit les méthodes pour obtenir l'accès root, désactiver dm-verity, modifier gamma LUT et optimiser les paramètres testgamma afin de restaurer la luminosité d'affichage complète.

Luminosité maximale HY-300 : ingénierie inverse du firmware Rockchip
Advertisement 728x90

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 :

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

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

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.

Google AdInline article slot

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

Advertisement 728x90

Lire ensuite