案例

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 的使用。

关于此条目

说明已依据一手来源复核;这不代表已运行验证、经过安全审计或确认兼容。

报告条目过时 建议修正翻译

一手来源

  1. README.md GitHub · yigitkonur/lib-osmo-ble · 修订 021e96c
  2. PROTOCOL.md GitHub · yigitkonur/lib-osmo-ble · 修订 021e96c
  3. JOURNEY.md GitHub · yigitkonur/lib-osmo-ble · 修订 021e96c
  4. patches/README.md GitHub · yigitkonur/lib-osmo-ble · 修订 021e96c
  5. experiments/README.md GitHub · yigitkonur/lib-osmo-ble · 修订 021e96c
  6. analysis/ble-characteristic-mapping.md GitHub · yigitkonur/lib-osmo-ble · 修订 021e96c
  7. analysis/false-positive-analysis.md GitHub · yigitkonur/lib-osmo-ble · 修订 021e96c
  8. src/connection.mjs GitHub · yigitkonur/lib-osmo-ble · 修订 021e96c
  9. src/controllers/gimbal.mjs GitHub · yigitkonur/lib-osmo-ble · 修订 021e96c
  10. src/protocol/constants.mjs GitHub · yigitkonur/lib-osmo-ble · 修订 021e96c
  11. package.json GitHub · yigitkonur/lib-osmo-ble · 修订 021e96c
  12. reference GitHub · yigitkonur/lib-osmo-ble · 修订 021e96c
  13. LICENSE GitHub · yigitkonur/lib-osmo-ble · 修订 021e96c
  14. LICENSE GitHub · xaionaro/reverse-engineering-dji · 修订 5c9278f
  15. LICENSE GitHub · datagutt/node-osmo · 修订 cec92ae

同分区更多条目:协议

协议分区全部 44 项资源协议案例(18)