# 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-10-27
- 收录于：2026-11-02
- 原始资源：<https://github.com/yigitkonur/lib-osmo-ble>
- 一手来源：<https://github.com/yigitkonur/lib-osmo-ble/blob/021e96c2bec7e9a2a81296292545bc1ee432af49/README.md>
- 目录页面：<https://awesomerea.org/zh/resources/osmo-pocket-3-ble-protocol-case/>
- 记录 JSON：<https://awesomerea.org/resources/osmo-pocket-3-ble-protocol-case/record.json>
- 英文版：[English](https://awesomerea.org/resources/osmo-pocket-3-ble-protocol-case/index.md)

## 使用条件与局限

- 审阅对象为 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 固件、应用和商标保留各自权利。

## 一手来源

1. <https://github.com/yigitkonur/lib-osmo-ble/blob/021e96c2bec7e9a2a81296292545bc1ee432af49/README.md>
2. <https://github.com/yigitkonur/lib-osmo-ble/blob/021e96c2bec7e9a2a81296292545bc1ee432af49/PROTOCOL.md>
3. <https://github.com/yigitkonur/lib-osmo-ble/blob/021e96c2bec7e9a2a81296292545bc1ee432af49/JOURNEY.md>
4. <https://github.com/yigitkonur/lib-osmo-ble/blob/021e96c2bec7e9a2a81296292545bc1ee432af49/patches/README.md>
5. <https://github.com/yigitkonur/lib-osmo-ble/blob/021e96c2bec7e9a2a81296292545bc1ee432af49/experiments/README.md>
6. <https://github.com/yigitkonur/lib-osmo-ble/blob/021e96c2bec7e9a2a81296292545bc1ee432af49/analysis/ble-characteristic-mapping.md>
7. <https://github.com/yigitkonur/lib-osmo-ble/blob/021e96c2bec7e9a2a81296292545bc1ee432af49/analysis/false-positive-analysis.md>
8. <https://github.com/yigitkonur/lib-osmo-ble/blob/021e96c2bec7e9a2a81296292545bc1ee432af49/src/connection.mjs>
9. <https://github.com/yigitkonur/lib-osmo-ble/blob/021e96c2bec7e9a2a81296292545bc1ee432af49/src/controllers/gimbal.mjs>
10. <https://github.com/yigitkonur/lib-osmo-ble/blob/021e96c2bec7e9a2a81296292545bc1ee432af49/src/protocol/constants.mjs>
11. <https://github.com/yigitkonur/lib-osmo-ble/blob/021e96c2bec7e9a2a81296292545bc1ee432af49/package.json>
12. <https://github.com/yigitkonur/lib-osmo-ble/tree/021e96c2bec7e9a2a81296292545bc1ee432af49/reference>
13. <https://github.com/yigitkonur/lib-osmo-ble/blob/021e96c2bec7e9a2a81296292545bc1ee432af49/LICENSE>
14. <https://github.com/xaionaro/reverse-engineering-dji/blob/5c9278ff0b53bbe0d03ea6c830aab13ac775871e/LICENSE>
15. <https://github.com/datagutt/node-osmo/blob/cec92aec9304a5cc3dae7f7de541eef38ebb680e/LICENSE>

## 同分区更多条目：协议

- [DJI MIMO BLE 逆向素材：重建 DJI Osmo 控制协议](https://awesomerea.org/zh/resources/dji-mimo-ble-reveng-case/index.md) · 案例
- [Cat Printer BLE：重建 MXW01 热敏打印机协议](https://awesomerea.org/zh/resources/catprinterble-mxw01-printer-case/index.md) · 案例
- [a0rfid：A0 协议 UHF RFID 读写头的开源驱动](https://awesomerea.org/zh/resources/a0rfid-uhf-reader-protocol-case/index.md) · 案例
- [Xiaomi Kettle BLE protocol：重建智能电水壶的控制接口](https://awesomerea.org/zh/resources/xiaomi-kettle-ble-protocol-case/index.md) · 案例
- [Ford Fiesta MK5 MS-CAN：解码仪表盘与收音机总线](https://awesomerea.org/zh/resources/ford-fiesta-mk5-ms-can-case/index.md) · 案例
- [uniden-r8-ble：重建 Uniden R8 雷达探测器的蓝牙遥测](https://awesomerea.org/zh/resources/uniden-r8-ble-telemetry-case/index.md) · 案例

## 关于此条目

说明已依据一手来源复核。
原创说明采用 MIT 许可；外部项目、论文与素材保留各自的权利和许可。
