通过 ADB 和 Rockchip 固件逆向解锁 HY-300 投影仪最大亮度
廉价投影仪厂商常人为限制亮度,且界面上毫无调节选项。以搭载 Rockchip RK3326 的 HY-300 为例,我们将演示如何通过 ADB 获取 root 权限、禁用 dm-verity,并修改 gamma LUT 恢复全亮度显示。
硬件平台分析与问题
HY-300 投影仪基于 Rockchip RK3326 SoC,运行 Android TV 系统。主要问题?界面完全没有亮度控制。开机后亮度立即降至约 70%,远未发挥真实潜力。深入排查发现,Android 标准背光控制失效:设备树中的背光节点配置错误,未绑定 PWM 通道。
尝试失败的方法:
- 通过设置调整 screen_brightness
- 修改系统属性 (persist.vendor.brightness.main)
- 直接操作 /sys/class/leds/Lcd_power
- SurfaceFlinger 颜色矩阵命令
ADB 连接与获取 root 权限
USB 连接易引发电源冲突,因此 Wi-Fi ADB 是唯一可靠方式。在 Android TV 上,开发者模式通过点击 OS 版本启用,但本机开箱即有 ADB 和 root。
adb connect <投影仪 IP>:5555
adb root
连接后,发现 /system 和 /vendor 分区被 dm-verity 锁定,无法写入。解决:运行一次 adb disable-verity,然后重启。这启用 overlayfs,使系统分区可编辑。
追踪亮度控制机制
启动日志指向开机运行的 testgamma 服务。其脚本位于 /system/bin/testgammatx.sh,直接控制 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
testgamma 工具通过 DRM ioctl 直接向 VOP 视频处理器写入查找表 (LUT)。但亮度、对比度、饱和度和色调?纯假象——RK3326 的 VOP Lite 不支持这些 DRM 属性 (BCSH)。真正起作用的是:
- wb_r, wb_g, wb_b — 白平衡系数 (0.0–1.0),相当于各色通道亮度倍增器。
- target_gamma, native_gamma — 塑造 gamma 曲线,影响暗部表现。
为什么修改需重启
testgamma 服务在 SurfaceFlinger 和 HWC (hwcomposer) 之前运行。HWC 接管 DRM 设备,每帧覆盖 VOP 设置,运行时调用 testgamma 无效。只有编辑脚本并重启,修改才能生效。
优化参数实现峰值亮度
每次重启后系统测试,找到最佳组合。出厂设置通过两种方式压低输出:绿/蓝系数打折 (0.96/0.95) 及 target_gamma=1.8 对 native_gamma=2.9。
测试结果:
- wb_r/g/b = 0.1, target_gamma=2.2 — ~10% 亮度
- wb_r/g/b = 0.5, target_gamma=1.8 — ~50% 亮度
- wb_r/g/b = 1.0, target_gamma=1.0 — 最大亮度但颜色反转
- wb_r/g/b = 1.0, target_gamma=1.6 — 理想亮度和色彩平衡
一步步设置指南
适用于 RK3326 的 HY-300 (TXCZ 固件) 用户:
1. 准备与连接:
PC 安装 Android Platform Tools,获取投影仪 IP。运行:
adb connect <IP>:5555
adb root
2. 禁用 dm-verity (一次性):
adb disable-verity
adb reboot
等待完全启动并重连。
3. 设置最大亮度:
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. 恢复出厂设置:
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
关键要点
- ADB 和 root 默认启用 — 极利于折腾。
- 核心亮度控制 是 testgamma 写入 VOP 的 gamma LUT。
- 需重启,因 HWC 运行时覆盖设置。
- 最佳参数:wb_r/g/b = 1.0, target_gamma = 1.6 (native_gamma = 2.9)。
- 适用 其他类似 Rockchip 设备。
开发者启示
此例暴露廉价 Android 设备常见问题:设备树配置失误、依赖过时或无文档硬件控制。掌握 DRM、gamma LUT 和 overlayfs,能修复问题并剖析嵌入式系统。对其他 SoC,调整方法即可——日志分析、服务逆向和调试接口通用。
— Editorial Team
暂无评论。