内容提要
作者为已解锁 root 和 ADB 的大疆 Action 5 Pro 相机开发了网页管理后台 Action Control,使用 Go 与 React 编写,以 systemd 后台运行并注入原生菜单。功能包括文件与相册管理、原生拍照录像、系统状态查看、热点开关及二维码入口。该工具默认复用相机原生服务而非接管采集,仅开放已验证功能。文中还介绍了构建安装、更新卸载方法及风险提示。
延伸解读
复用原生服务:功能边界与稳定性取舍
Action Control 默认不接管相机采集,而是复用原生服务,因此网页预览依赖 Mimo 或相机自身的视频流。一旦 Mimo 退出预览、切到相册或进入后台,网页端也会失去画面。这种设计避免了停止原生相机、屏幕和 Mimo 通信服务,但代价是网页无法作为独立网络摄像头使用,也没有可随意填入播放器的 RTSP 地址。作者明确建议日常保持默认模式,高级独立采集只留给清楚会停掉哪些服务的人。
安装与卸载:前置条件与不可逆边界
使用前必须已解锁并启用 root ADB,且 adb shell id -u 输出为 0。安装包需从源码构建,程序应放在 /blackbox/upgrade/action-control,不要挪到 /blackbox 根目录,否则相机启动脚本在分区检查失败时可能格式化后者。安装、更新前应停止拍摄并备份素材。卸载会恢复网络基线和原始显示配置,但不会重新锁定 Bootloader、关闭 root ADB 或退出 Factory Mode,这些与卸载后台是两回事。
后屏入口与固件适配:不是通用方案
后屏扩展通过逆向固件以插件形式注入原生菜单,依赖特定固件的界面结构,安装时会先核对程序指纹,不匹配则保留原生插件行为。因此它只面向 DJI Osmo Action 5 Pro(AC204),不能因为名字里都带 Action 就尝试其他型号。热点开关调用的是已校验固件中 dji_network 自己的入口,切换无线状态时当前网页可能断线,这并非后台崩溃。
文件与相册管理:索引清理的必要性
文件管理支持浏览 SD 卡和内置存储,并可上传、下载、重命名、删除;相册能按日期分组、筛选排序,并读取相机媒体索引 AC004.db 中的星标、精彩标记和部分拍摄参数。由于该数据库保存素材元数据,直接删除素材文件可能留下孤儿数据,因此设置页提供了清理索引功能。拍摄控制方面,网页可开始、停止原生录像,并在空闲时切换拍照/视频模式,但分辨率、帧率、编码、防抖等视频设置目前只能读取,不能修改。
Q&A
Action Control 是什么?它支持哪些相机型号?
Action Control 是一个为 DJI Osmo Action 5 Pro(AC204)开发的网页管理后台,使用 Go 和 React 编写,通过 adb 安装并以 systemd 后台运行。它需要相机已解锁 Bootloader 并启用 root ADB。
Action Control 目前能实现哪些功能?
功能包括:浏览和管理 SD 卡与内置存储中的文件(上传、下载、重命名、删除);相册视图(搜索、筛选、排序、按日期分组、放大图片、跳转文件位置);读取媒体索引 AC004.db 显示星标、精彩标记和部分拍摄参数;原生拍照和录像控制;系统状态查看;热点开关;以及通过相机后屏菜单中的二维码快速访问。
为什么默认不停止相机原生服务而采用复用模式?
因为独立采集会停止原生相机、屏幕和 Mimo 通信服务,停掉后想恢复原生功能可能需要重启相机,为了远程控制而停掉相机自身功能本末倒置。复用原生服务则通过相机现有客户端库和本地 Binder 服务完成控制,更安全。
如何安装 Action Control 到相机?
需先确保相机已 root ADB 并连接电脑(adb devices 可见,adb shell id -u 输出 0)。从源码构建安装包(需 Node.js 24.20.0、Go 1.27.1 等),然后在完整安装包目录执行 ./install.sh(Windows 用 .\install.ps1)。安装器会校验文件、启动 systemd 服务并建立 ADB 端口转发。
如何通过网页访问 Action Control 后台?
首次建议通过 USB + ADB 转发访问:执行 adb forward tcp:8080 tcp:8080,然后浏览器打开 http://127.0.0.1:8080。无线访问可连接相机原生热点后访问 http://192.168.2.1:8080,或使用相机在局域网中的 IP。
使用 Action Control 有哪些风险或限制?
风险包括:安装/更新前需停止拍摄并备份素材;后屏扩展依赖特定固件界面结构,不匹配则保留原生行为;热点开关可能导致网页断线;网页预览依赖 Mimo 预览状态,Mimo 停止预览则网页也无法观看;高级独立采集会停止原生服务且恢复可能需重启;卸载不会重新锁定 Bootloader 或关闭 root ADB。