NOTE: FAQ have not been updated for OSDK 3.3, the information here is relevant for OSDK 3.2. An all-new FAQ will be out soon!

Table of Contents

Getting Started

Product Related

Platform Related

General SDK

Getting Started

How can I become a DJI Onboard SDK Developer?

Becoming a DJI Onboard SDK developer is easy. Please see this section in the Quick Start guide for details.

Where are the DJI Onboard SDK Resources?

All documentation can be found on the DJI developer website.

The Onboard SDK can be cloned from GitHub - Linux/Qt/STM32 and ROS.

How do I set up hardware for running the Onboard SDK?

The Hardware Setup Guide has detailed instructions for setting up the various parts of the system.

Where can I get the DJI Onboard SDK Protocol Documentation?

The Open Protocol is documented here.

If I have questions, where can I get help?

You can use the following methods to get help:

Why does activation fail?

The first time the application communicates with the drone/flight controller, it connects to a DJI Server to verify it's authorized to use the DJI Onboard SDK by sending the Application ID and Key. This process is called activation.

Reasons for why it might fail include:

  • DJI GO needs to be running on the mobile device, and needs internet connectivity the first time it is run after installation (successful activation is locally cached, so internet connectivity is not required after the first initialization).
  • App ID/key is incorrect. Check in the User Center to confirm the application key.
  • The serial port is not connected/opened correctly (baud rate, incorrect hardware connections etc). This might happen on ARM architectures since the Onboard SDK's serial driver does not implement sophisticated checks on this platform.
  • The voltages on the UART line are incorrect. The electrical interface is 3.3V TTL.
  • API Control is not enabled using DJI Assistant 2. Go to the SDK page on Assistant 2 and check the box marked Enable API Control.

Which DJI products are supported by the Onboard SDK?

The Matrice 100 (N1 flight controller), Matrice 600 the A3 flight controller and the N3 flight controller are supported by the Onboard SDK.

What does Onboard Embedded System (OES) mean?

In the context of DJI Onboard SDK documentation, Onboard Embedded System (OES) refers to any devices that can communicate with N1/A3/N3 flight controller and supported by Onboard SDK.

Which OES and Operating Systems are supported by Onboard SDK?

The Hardware Setup Guide talks about all supported combinations of OES and aircraft. Refer to the Architecture Guide for supported OS platforms.

Is an OES with an OS running needed in the development of Onboard SDK?

Not necessarily, but preferred. We recommend a setup with Ubuntu and ROS but even a simple STM32 MCU without an OS running on it works.

What are the communication ports between an OES and an N1, A3 or N3 flight controller?

An OES can only communicate with N1/A3/N3 flight controller via a UART port.

Does M100 support third party video capturing devices? Can I use the M100's built-in ‘Lightbridge’ functionality?

Yes, M100 supports third party video capturing device. If you want to use the M100's built-in ‘Lightbridge’ functionality, all you need is the N1 Video Encoder.

Manifold - Why does restoring system image cause issues?

If you're seeing blinking mouse cursors, changing text size or general issues with the display, please re-do the restore using Ubuntu 14.04 as the host computer.

Manifold - How do I purchase a Manifold?

The Manifold is sold for university projects or for other research. Please send email to dev@dji.com stating the purpose of use.

A3/N3 - Do I need a LightBridge 2 RC to use Onboard SDK?

Currently, you do need a LightBridge 2 RC for first use (specifically, activation). This requirement will be removed in future A3 firmware.

STM32 - Do all parts of the SDK work with low-power embedded systems?

We support low-power embedded systems for core SDK functionality - all funcitons in the osdk-core library are available with the STM32 (and potentially other low-power OESs). However, more complex functionality such as LiDAR logging and precision trajectory missions are unavailable on bare-metal systems due to insufficient compute power.

General SDK

What flight data of M100/M600/A3/N3 can I get via the Onboard SDK?

You can get the full state estimate, timestamp and a lot of other information like gimbal data, state machine value etc. Refer to the Receiving Flight Data section in the Programming Guide.

Bit-level protocol information about the state broadcast data can also be found in the Open Protocol Documentation

With the Open Protocol on UART port, what is the data output frequency of N1/A3/N3?

The data output frequency for various kinds of state broadcast data (Position, Attitude, Timestamp etc.) can be set via DJI Assistant 2 in the [0, 100Hz] range.

Can I encrypt data on the UART line?

Yes, AES encryption is available as a option. For more info, please refer to Encryption in the Open Protocol.

How do I get the camera's video feed on the OES?

You need to use the Manifold as your OES. There is no official support for using other OESs with the X3/X5 camera.

Suppose some data onboard the drone needs to be transmitted to a mobile device. Can this functionality be supported by Onboard SDK?

Yes. Refer to Data Transparent Transmission.

For the development of Onboard SDK, can I use some bandwidth from the remote controller to get my own data back to a ground station?

Unfortunately, the LightBridge 2 channel does now support transmitting arbitrary forms of data. If you have data in the form of a video stream, use N1 Video Encoder (M100) or HDMI (M600/A3/N3) to stream it back to the RC. If you have some low-bandwidth data, consider using Data Transparent Transmission.

Are there any simulators provided for the development of Onboard SDK with M100/M600/A3/N3?

Yes. The DJI Assistant 2 has a built-in simulator that can be used with Onboard SDK.

Can I set the initial height of the ‘take off’ function manually?

For now, no. The initial height is set to be about 1.2 meters.


If I choose 'Raw data' in DJI Assistant 2, Flight Data is incorrectly reported when using simulator. Is this a bug?

Because raw data is generated by actual sensors on UAV, raw data will not be available in simulator. Please choose fusion data when you use DJI simulator.

How do I send commands to the drone when it is flying? Wireless keyboards or Wireless Serial Ports are impractical and unsafe.

We agree completely - so since Onboard SDK 3.1.8, we offer a Mobile-Onboard SDK iOS app that has triggers for all functionality available in the Linux Samples. You can look at the implementation and make triggers for your own commands as well.