Recently I got the DJI Osmo 7 to use as a gimbal for my phone shooting … which is a big upgrade from what I used previously.

But to get the perfect shot you have to do multiple takes. And starting at $40,000 motion control rigs are still a little out of reach 😅.
So I wondered if I could make the Osmo do the same?
The main issue with this is there’s no SDK by DJI to do i.
<aside> 💡
SDK: essentially an API that you can use to interact with a third party service plus all the surrounding docs, code libraries and testing logic you need to make something.
</aside>
And without an SDK there’s no easy way to understand how to communicate commands to the gimbal.
So the next easiest thing to do is create my own SDK.
I started by probing all the Bluetooth devices around my area until I found the DJI Osmo and connected it to my laptop.

I then logged all packets that were being sent back and forth.
There were a LOT, mostly on battery level and current status.
This was great progress - I was able to decode basic packets. But this brought me no closer to understanding how to make the gimbal move.
So I started by looking at what already makes the gimbal move - the camera app.
From the DJI camera app, you’re able to get the DJI to move using active tracking. So I went through multiple different scenarios from idle to specific active tracking movements.