This repository explores the Bluetooth Low Energy (BLE) protocol used by the Osmo Mobile series of gimbals.
The official mobile apps are outdated and require broad system permissions. However, the gimbals themselves communicate through a simple BLE protocol.
The goal of this project is to document that protocol in an open and reproducible way, enabling the hardware to be controlled from any Bluetooth host, such as a laptop.
This project is for educational and interoperability purposes only. No proprietary software or firmware is distributed in this repository.
The Osmo Mobile 2 (OM2) is the only gimbal in the series that can still be actuated using the official Mobile SDK.
The plan is to first build a minimal Android application (see sdk-app) that can discover and connect to the device, then send rotation commands with precise, controllable parameters. Next, develop a sniffing tool to capture and analyze the BLE traffic generated by the app.
See in action on imgur.
Tested on: OM2, OM3, OM4.
duml.py- basic parser of DUML packets; gimbal follows the same protocol used in other products, like Mavicgimbal.py- a driver handling connection, MTU discovery, writing output commands and subscribing to notification channelrotate.py- example program, issues several roration commands to the gimbal
Note
In Linux/BlueZ, make sure that device is not currently connected to your system, or Bleak will not be able to connect
Another PoC is a web UI built on the Web Bluetooth API in web-bluetooth. It provides a minimal in-browser controller for rotating the gimbal.
You can try it at om-research.flab.dev
