案例
lib-osmo-ble:DJI Osmo Pocket 3 低功耗蓝牙协议库
重建 DJI Mimo 应用与 Osmo Pocket 3 相机之间基于 BLE 的 DUML 协议,提供 Node.js 库和命令行工具,无需官方应用即可扫描、配对、发送云台指令并接收约 20 Hz 的姿态遥测。作者称其依据第三方对 Mimo 通信的 Wireshark 抓包与解析器、一个 Go 客户端以及反复试验调试完成;PROTOCOL.md 记录了帧结构、CRC 参数、BLE 特征值的用途和命令 ID。一篇过程记录和随附补丁梳理了导致早期 node-osmo 库无法配合该相机工作的七个缺陷,作者报告打过补丁的库完成了配对、Wi-Fi 设置和 RTMP 推流。
- 目标
- 协议
- 类别
- 独立重建案例
- 关联
- 独立重建项目
- 来源复核于
使用条件与局限
- 审阅对象为 2026-02-21 的 main 最新提交,也是仓库最近一次推送;package.json 声明版本 1.0.0,没有发布版本或标签。README 称云台电机指令的构造和解析都正确,但仅通过 BLE 发送时相机会静默忽略,可能要等 Wi-Fi 推流启动后才生效,而遥测工作正常。该库本身只实现配对、云台控制和遥测;Wi-Fi 设置和推流是借助打过补丁的 node-osmo 实现的。
- 需要使用者自有的 DJI Osmo Pocket 3 及支持低功耗蓝牙的主机。PROTOCOL.md 报告仅在该型号上、从 macOS 验证过,补丁说明列出的环境为 Apple 芯片 macOS Sequoia、Node.js v25.5.0 和 @stoprocent/noble 1.18.2;其他 DJI 设备可能有所不同。配对时发送由客户端选定的 PIN(命令行默认 love),需用户在相机上确认。仓库未提交 DJI 固件、应用文件或作者自己的抓包。
- 使用纯 Node.js ES 模块,运行时依赖只有两个:用于 BLE 的 @stoprocent/noble ^2.3.10 和用于 CRC8/CRC16 校验的 crc-full,无需构建;npm link 可安装 dji-osmo 命令行工具。诊断脚本可扫描 DJI 设备、列出特征值属性,并解码 DUML 十六进制报文、校验 CRC。node-osmo 补丁需用 git am 应用到另行克隆的 datagutt/node-osmo,再用 pnpm 和 TypeScript 构建。
- 没有自动化测试;npm test 脚本只是一个以报错退出的占位命令。证据包括作者的过程记录,关于特征值映射、字节序、Node.js 缓冲池缺陷和一次误判运行的分析笔记,以及原始日志已被 gitignore 排除的实验索引。设备上的行为在此仍属作者报告,本次未在硬件上运行任何内容。
- LICENSE 为 MIT,但 package.json 仍写作 ISC。reference 目录复制了 xaionaro/reverse-engineering-dji 中采用 CC0-1.0 的 Wireshark 解析器和报文笔记,node-osmo 采用 MIT。DJI 固件、应用和商标保留各自权利;所审来源未确立任何 AI 或 REA 的使用。
关于此条目
说明已依据一手来源复核;这不代表已运行验证、经过安全审计或确认兼容。
一手来源
- README.md GitHub · yigitkonur/lib-osmo-ble · 修订 021e96c
- PROTOCOL.md GitHub · yigitkonur/lib-osmo-ble · 修订 021e96c
- JOURNEY.md GitHub · yigitkonur/lib-osmo-ble · 修订 021e96c
- patches/README.md GitHub · yigitkonur/lib-osmo-ble · 修订 021e96c
- experiments/README.md GitHub · yigitkonur/lib-osmo-ble · 修订 021e96c
- analysis/ble-characteristic-mapping.md GitHub · yigitkonur/lib-osmo-ble · 修订 021e96c
- analysis/false-positive-analysis.md GitHub · yigitkonur/lib-osmo-ble · 修订 021e96c
- src/connection.mjs GitHub · yigitkonur/lib-osmo-ble · 修订 021e96c
- src/controllers/gimbal.mjs GitHub · yigitkonur/lib-osmo-ble · 修订 021e96c
- src/protocol/constants.mjs GitHub · yigitkonur/lib-osmo-ble · 修订 021e96c
- package.json GitHub · yigitkonur/lib-osmo-ble · 修订 021e96c
- reference GitHub · yigitkonur/lib-osmo-ble · 修订 021e96c
- LICENSE GitHub · yigitkonur/lib-osmo-ble · 修订 021e96c
- LICENSE GitHub · xaionaro/reverse-engineering-dji · 修订 5c9278f
- LICENSE GitHub · datagutt/node-osmo · 修订 cec92ae
同分区更多条目:协议
- Wireshark 协议分析工具 · 工具
- Netzob 协议建模与推断框架 · 工具
- Scapy 报文分析与构造工具 · 工具
- Universal Radio Hacker(URH)无线协议分析工具 · 工具
- SavvyCAN CAN 总线分析工具 · 工具
- AALpy 自动机学习库 · 工具