Get Started


New Release! Onboard SDK 3.2.2 was released on 03/14. See release notes for more!

Getting Started with the Onboard SDK

DJI's onboard SDK allows you to connect your own Onboard Embedded System (OES) to a supported DJI vehicle (Matrice 100 or Matrice 600) or flight controller (A3 or N3) using a common serial port (TTL UART). This setup opens up an exciting opportunity to integrate your own hardware with DJI's flying platforms. New applications and commercial uses for aerial robotics awaits and we can't wait to see what you build, so lets get started!


This SDK is for developers with:

  • programming experience in C and C++
  • embedded systems knowledge
  • a DJI Matrice 100 vehicle, a DJI Matrice 600 vehicle, or a DJI A3 or N3 flight controller integrated into your own vehicle
  • your own Onboard Embedded System (OES) with an available com port (TTL UART)
  • Windows PC to run the required software tools
  • an iOS or Android mobile device to run DJI Go

Key Features

The onboard SDK enables deep interaction between your OES and a DJI flight controller. Using the APIs you can, for example, use a sensor connected to your embedded system to control the trajectory of the vehicle, collect telemetry data in real-time, trigger a camera to take photos, or send data through the vehicle's downlink to a mobile device. Your OES must have a TTL UART port available for the onboard SDK to use.

Flight Control
  • A variety of control modes are available including real-time attitude control, velocity control, position control, and complete waypoint mission planning.
Vehicle Telemetry
  • A robust set of vehicle state information is available in real-time including inertial sensors, attitude, heading, velocity, position, battery info, and vehicle status.
Data Transmission
  • A bidirectional data link between your embedded device and a mobile device (in conjunction with DJI's mobile SDK) can be established by using the M100 or M600 built-in lightbridge communication system or by using a Lightbridge 2 with the A3/N3.
Camera and Gimbal Control
  • A supported DJI camera and gimbal can be controlled with commands to take pictures, videos, and adjust gimbal position.
Advanced Sensing and Flight Algorithms
  • LiDAR Mapping, LiDAR Collision Avoidance and Precision Missions expand the capabilities of DJI's platforms.

We provide C/C++ source APIs to make sending and receiving data over the serial port easy and encourage you to use them in your applications. Alternatively, developers can use our protocol specification to write their own communication drivers.

Hardware Overview

  • If you are using an M100 or M600 vehicle, you should assemble and familiarize yourself with flying the vehicle before attempting to proceed with onboard SDK development.
  • If you are using an A3/N3 flight controller with Lightbridge 2 and your own vehicle, then you should familiarize yourself with flying your vehicle before attempting to proceed with onboard SDK development.
  • Generically, you will be working with one of the setups in the following diagram: Hardware Setup

Note that to accomplish the setup steps below, you will need to use the vehicle remote controller connected to a mobile device running the DJI Go app and your mobile device must have a connection to the internet.


1. Download the SDK and Required Tools

  • Download the onboard SDK repository from Github
  • Download the DJI PC Assistant 2 software for Windows
  • Download the DJI GO APP to your mobile device

2. Update Firmware

  • Connect your computer to the Micro-USB port on the M100/600 or A3/N3
  • Update your M100, M600, A3 or N3 with the latest released firmware. If using A3/N3 FW >, please see this.

3. Enable Flight Controller API control

  • With your M100/M600/A3/N3 connected to your PC/Mac, launch DJI Assistant 2 and check the box "Enable API Control”.

Enable API Control

4. Connect Your Onboard Embedded System (OES)

  • If you are using one of our supported platforms, we provide detailed instructions in our Hardware Setup Guide.

  • The Hardware Setup Guide also lists the pin diagram for the M100 UART connector and the A3 UART connector so that you may build your own cable compatible with your OES.

  • A3 flight controller can be accessed on the M600 by pulling off the top-cover.

  • You can power your embedded system from your own battery or if you are using an M100/600, you can pull power from the vehicle bus. See your M100 or M600 manual for details.

  • Secure your embedded system to the vehicle near the center of mass. Ensure that the total vehicle weight is within the maximum takeoff weight specificed for your vehicle.

5. Onboard Application Registration

6. Set up your Software Environment

Choose one of these examples to begin using the onboard SDK in a particular software environment:

7. Flight Platform Activation

  • You should have completed activation using one of the examples above.
  • After successful activation, you are ready to start developing!

Note: Each new vehicle or flight controller to be used must be activated once to enable communication with your application.


We provide a Vagrantfile for an Ubuntu 16.04 desktop machine with all the dependencies and settings necessary to build the Onboard SDK and run the samples. To start the machine first install the following:

Next, in the same directory as the Vagrantfile in the Onboard SDK repository you previously cloned, just run vagrant up. The first time you do this it may take a while as the base image is downloaded and dependencies are installed. Please see the Vagrant documentation for more details on how to work with Vagrant.


Please comply with local regulations during the development of your application. Please refer to for more information. The operator must maintain sole responsibility for the safe operation of the vehicle, including maintaining the ability to take manual control of the vehicle at all times to maintain safety in the event of a malfunction of any aspect of the Onboard SDK modules.

Next Steps

Now that you are setup and communicating with a DJI flight control system, we would encourage you to explore our platform guides and reference documentation to help jumpstart your development. We would recommend reading our Architecture Guide next. The revamped Programming Guide is a good place to visit once you have some familiarity with the examples and want to know more about the internals.

Also, take a look at our revamped FAQ for some answers to common questions. After that, feel free to contact us with any issues.

Reference Documents