Cookie Consent by FreePrivacyPolicy.com

DJI-Remote

Multicam Remote for DJI Osmo Action/360 Cameras

What is DJI-Remote?

DJI-Remote is an open-source firmware for the M5Stack Basic V2.7 together with the M5Stack Module GPS V2.0.
It connects via Bluetooth to up to three DJI Osmo Action and Osmo 360 cameras at the same time and shows all important information in a compact way on the display.
A quick glance is enough to see whether all cameras are actually doing what they should – ideal for motovlogs with multiple perspectives.

Source Code

The complete firmware for DJI-Remote is available as an open-source project on GitHub.

DJI-Remote project on GitHub

Project Video


The search for the perfect multicam remote

I’ve been riding with multiple cameras on the bike for years – front, rear and, depending on the setup, a third perspective.
The goal has always been the same: I wanted a solution that shows me the exact status of every single camera – recording, storage and battery – and lets me control the cameras easily from the handlebar.

I already had this problem back in the days when I mainly used GoPros. That’s when my Pro-Mote app was born – an iOS app that allowed me to control and monitor multiple GoPro cameras.
Since switching to DJI cameras, I’ve really been missing the Pro-Mote app.

You can find more information about the Pro-Mote app here: Pro-Mote App .

The Osmo-GPS-Controller-Demo – the missing piece

For a long time, my plan was to extend the Pro-Mote app to support DJI cameras as well. But that kept failing because there was no public documentation of the Bluetooth API of the DJI Osmo Action cameras.
Without that information, a project like this is basically guesswork.

The turning point came when DJI released the Osmo-GPS-Controller-Demo .
This project contains exactly what was missing: a reference implementation that shows how the BLE communication with the cameras works – including GPS integration.

This finally provided the technical foundation to continue the Pro-Mote idea for DJI cameras and at the same time rethink a dedicated hardware remote.

Raspberry Pi, iOS app – and why it ended up being an ESP32

Before I built the iOS app, there was a completely different approach: a standalone remote control based on a Raspberry Pi Zero with a small touch display.
Technically this was possible, but for use on a motorcycle the setup was too big, too fragile and overall too fiddly.

So I first went down the iOS app route. With the Osmo-GPS-Controller-Demo in mind, the idea came back to implement everything with an ESP32 – smaller, more robust, more power-efficient and much closer to my original vision of a dedicated remote.

This is exactly where DJI-Remote comes in: a small, specialized remote that does exactly what I need on the bike – without a smartphone in between.

From M5Stick to M5Stack

When looking for concrete examples of a DJI remote based on an ESP32, I came across the community project M5StickCPlus2_Remote_For_DJI_Osmo .
This project made me aware of the M5Stack ecosystem. From there, it was only a small step to the M5Stack Basic V2.7 with its larger display and GPS module – and that’s exactly what DJI-Remote is built on today.

Hardware & Where to buy

You don’t need a huge amount of hardware to build DJI-Remote, but there are basically two options when it comes to ordering:

If you buy directly from the manufacturer, prices are usually lower. In return, shipping is more expensive, may take longer, and there is a chance that customs will get in touch.
If you order via Amazon, prices are typically higher – but shipping is often faster, easier to handle and you get the usual Amazon support if something goes wrong.

Directly from the manufacturer (M5Stack)

Ready-to-flash firmware

If you just want to flash DJI-Remote without setting up ESP-IDF, use the precompiled firmware ZIP from the GitHub releases.

Download firmware

The ZIP contains all binaries (bootloader.bin, partition-table.bin, dji_camera_bluetooth_control.bin) plus simple flash scripts for macOS and Windows.

How to flash

  1. Download the latest firmware ZIP and extract it.
  2. Download esptool for your OS, then copy the esptool binary into the extracted flash folder (next to the scripts and .bin files).
  3. Connect the device via USB and note the serial port (e.g. /dev/cu.usbserial-XXXX on macOS, COM5 on Windows).
  4. macOS/Linux: make the script executable once (chmod +x flash_mac.sh), then run ./flash_mac.sh <port>.
  5. Windows: run flash_win.bat <COM-Port>.

Tested with esptool 5.1.0; newer versions should work as well.
Tip: use a good USB cable and, on macOS, prefer /dev/cu.* ports if flashing fails.

DJI-Remote features

  • Control up to three DJI Osmo Action/360 cameras at the same time
  • Start/stop recording (per camera or all cameras together)
  • Set highlight tags (for supported models)
  • Sleep/wake per camera or for all cameras together
  • Snapshot from sleep (wake + photo)
  • Display of battery level, remaining recording time and storage
  • Display of camera mode and video settings
  • GPS fix indicator and forwarding of position to the cameras
  • Optional: external buttons via GPIO (e.g. on the handlebar)

More technical details can be found in the GitHub repository in the files manual.md and implementation.md.

Important note

DJI-Remote is a private hobby project that I develop in my spare time.
My time is very limited, so I cannot make any firm promises about support, new features or response times.

The big advantage of open source is: you can always look at the code, adapt it for your own needs or extend it and develop the project further at your own pace.
If DJI-Remote serves as a starting point for your own remote, the project has already achieved what I was hoping for.