Onboard SDK OPEN Protocol

2016-06-24

Protocol Frame

The Protocal Frame is the smallest unit for transmission. It contains the Header, Data and the Tail as follows:

|<---------------------Header-------------------------->|<--Data-->|<--Tail-->|
|SOF|LEN|VER|SESSION|ACK|RES0|PADDING|ENC|RES1|SEQ|CRC16| DATA | CRC32 |

Frame Format

Field Index (byte) Size (bit) Description
SOF 0 8 starting byte, fixed to be 0xAA
LEN 1 10 len of frame
VER 6 version of the frame header, set to be 0
SESSION 3 5 session ID
ACK 1 frame type
  • 0: CMD
  • 1: ACK
RES0 2 reserved, fixed to be 0
PADDING 4 5 len of padding data used by the Data encryption
ENC 3 encryption type
  • 0: no encryption
  • 1: AES encryption
RES1 5 24 reserved, fixed to be 0
SEQ 8 16 frame sequence num
CRC16 10 16 CRC16 frame header checksum
DATA 12 variable size frame data
CRC32 variable size 32 CRC32 whole frame checksum

Note: After CRC16 encryption, developers should update the PADDING and LEN part in your frame header before doing CRC32 encryption.

Frame Type

There are two types of frames.

Frame Type Data Type Transmission Direction Content
CMD frame CMD frame data Onboard Embedded System (OES) <=> Autopilot flight control related CMDs
ACK frame ACK frame data Autopilot <=> Onboard Embedded System (OES) ACK related data

CMD frame data

|<------CMD frame data------>|
| CMD SET | CMD ID | CMD VAL |
Field Index (byte) Size (byte)
CMD SET 0 1
CMD ID 1 1
CMD VAL 2 vary by CMDs

ACK frame data

|<-ACK frame data->|
| ACK VAL |
Field Index (byte) Size (byte)
ACK VAL 0 vary by ACKs

SEQ field in ACK frame is the same as the one in corresponding CMD frame. Developers can use the SEQ field of the ACK frame to match the corresponding CMD frame.


Protocal Transmission Mechanism

Session

The session mechanism has been used in order to prevent the exceptions such as package loss. 3 kinds of session have been introduced:

Type SESSION Description
0 0 Sender doesn't need ACKs.
1 1 Sender needs ACKs but can be tolerated.
2 2-31 Sender needs ACKs.*

Note: Type 1 and Type 2 can ONLY be applied to the CMDs which have ACKs.

Since type 2 is designed to be reliable. Developers should implement the package loss & resending mechinism based on the current SEQ and SESSION fields. When package loss is found from the sender, the sender can send the CMD frame again with the same SEQ and SESSION lost previously to retrieve back the ACK frame.

Encryption (optional)

DJI designs encryption interface in communication between OES and autopilot, considering it is possible that developer implement the communication with unsafe channel, for example various types of wireless transparent transmission module.

AES encrypting is designed only for data part of a frame. And developers can encrypt their own data with a key which is despatched when they register the APP ID, and encryption function in DJI_LIB.

Due to encryption process, data need to be aligned into blocks and each one contains 16 bytes. 'PADDING' in frame header is the length of additional data generated in this progress. Also 'LEN' need to be caclulated again, and 'ENC' need to be set to '1'. For more details about encryption algorithm, please refer to sdk_encrypt_interface in DJI_Codec.cpp .

On the other hand, there is no need to encrypt data, when developers use a serial cable to connect OES and autopilot. In this case, just set 'ENC' to '0'.

Note: By default, encryption is turned OFF in the SDK. Enable it by going to DJI_Config.h and uncommenting the USE_ENCRYPT macro.


CMD Set & CMD ID

Each CMD Set contains some CMD IDs for different operations.

Function Index

CMD Set CMD ID Function
0x00
Initialization CMD Set
0x00 Get Protocal Version
0x01 Activation
0x10 Set 'Flight Data' frequency
0xFE Data Transparent Transmission
From Onboard SDK to Mobile SDK
0x01
Control CMD Set
0x00 Obtain/Release Control Authorization
0x01 Switch Flight Mode
0x02 Request Switch Result
0x03 Movement Control
0x05 Arm/Disarm
0x1A Gimbal Control in Rate
0x1B Gimbal Control in Position
0x20 Take Photo
0x21 Start Recording Video
0x22 Stop Recording Video
0x02
Push Data CMD Set
0x00 Flight Data
0x01 Lost of Flight Control
0x02 Data Transparent Transmission
From Mobile SDK to Onboard SDK
0x03 Ground Station State
0x04 Waypoint Event
0x03
Ground Station CMD Set
Waypoint
0x10 Upload Waypoint Mission Settings
0x11 Upload Waypoint Data
0x12 Start/Stop waypoint
0x13 Pause/Resume waypoint
0x14 Read Waypoint Init Status (Available In 3.2 Release)
0x15 Read Single Waypoint Status (Available In 3.2 Release)
0x16 Set idle speed
0x17 Get idle speed
0x03
Ground Station CMD Set
Hotpoint
0x20 Start hotpoint
0x21 Stop hotpoint
0x22 Pause/Resume hotpoint
0x23 Set idle speed
0x24 Set radius
0x25 Reset yaw
0x26 Read HotPoint info from flight controller
0x27 Set Auto Radius
0x03
Ground Station CMD Set
Follow Me
0x30 Start follow me
0x31 Stop follow me
0x32 Pause/Resume follow me
0x33 Set target pos info
0x04
Sync signal CMD Set
0x00 Set Sync signal output frequency
0x05
Virual RC CMD Set
0x00 Virual RC request
0x01 Virual RC data

CMD Val & ACK Val

Activation CMD Set: 0x00

CMD ID 0x00: Get Protocal Version

Data Type Offset (byte) Size (byte) Description
CMD Val 0 1 arbitrary num
ACK Val 0 2 Return Code
  • 0x0000: Autopilot is activated
  • 0xFF01: Autopilot is NOT activated
2 4 The CRC val of the protocal version
6 32 protocal version

CMD ID 0x01: Activation

Data Type Offset (byte) Size (byte) Description
CMD Val 0 4 app_id, app unique identifer
8 4 Fixed value:
    M100: 0x03010A00
    A3: 0x03016400
12 32 Fixed string, "12345678901234567890123456789012"
ACK Val 0 2 Return Code:
  • 0x0000: Success
  • 0x0001: Invalid parameters
  • 0x0002: Cannot recognize the encrypted package
  • 0x0003: New APP ID, please connect DJI GO APP
  • 0x0004: No response from DJI GO APP
  • 0x0005: No Internet from DJI GO APP
  • 0x0006: Server rejected
  • 0x0007: Authorization level insufficient
  • 0x0008: Wrong SDK version

CMD ID 0x10: Set 'Flight Data' frequency

M100:

Data Type Offset (byte) Size (byte) Description
CMD Val 0 1 time stamp
1 1 attitude quaternion
2 1 linear acceleration
3 1 linear velocity
4 1 angular velocity
5 1 GPS location, altitude and height
6 1 magnetometer
7 1 remote controller data
8 1 roll, pitch and yaw of gimbal
9 1 flight status
10 1 battery info
11 1 control device
12 4 reserved
ACK Val 0 2 Return Code
  • 0x0000: success
  • 0x0001: param error

A3:

Data Type Offset (byte) Size (byte) Description
CMD Val 0 1 time stamp
1 1 attitude quaternion
2 1 linear acceleration
3 1 linear velocity
4 1 angular velocity
5 1 GPS location, altitude and height
6 1 GPS detailed information
7 1 RTK detailed information
8 1 magnetometer
9 1 remote controller data
10 1 roll, pitch and yaw of gimbal
11 1 flight status
12 1 battery info
13 1 control device
14 2 reserved
ACK Val 0 2 Return Code
  • 0x0000: success
  • 0x0001: param error
Val Freq
0 0Hz
1 1Hz
2 10Hz
3 50Hz
4 100Hz
5 Last freq

CMD Set 0x01 Control CMDs

CMD ID 0x00: Obtain/Release Control Authorization

Please make sure the following conditions have been met:

  • The 'enable API control' box is checked in the assistant software.
  • The mode selection bar of the remote controller is placed at the F position.

Due to the consideration of safety, all requests of obtain control and release control need to be sent twice and the first ACK will be fail. In our official library, we have already implemented this feature.

Data Type Offset (byte) Size (byte) Description
CMD Val 0 1 0x01: request to obtain control authorization
0x00: request to release control authorization
ACK Val 0 2 Return Code
  • 0x0000: the mode selection bar of the remote controller is not placed at the F mode position (P mode for A3 FW > 1.5.0.0)
  • 0x0001: successfully released control authorization
  • 0x0002: successfully obtained control authorization
  • 0x0003: failed obtained control authorization
  • 0x0004: failed realeased control authorization
  • 0x00C9: in IOC mode

CMD ID 0x01 Switch Flight Mode

Data Type Offset (byte) Size (byte) Description
CMD Val 0 1 CMD Sequence Number
1 1 0x01 : return to home(RTH)
0x04 : auto take off
0x06 : auto landing
ACK Val 0 2 Return Code
  • 0x0001: execution fail
  • 0x0002: start executing

Note: auto takeoff only works when motor isn't running

CMD ID 0x02 Request Switch Result

Data Type Offset (byte) Size (byte) Description
CMD Val 0 1 CMD Sequence Number
ACK Val 0 2 Return Code
  • 0x0001: wrong CMD Sequence Number
  • 0x0003: switching in progress
  • 0x0004: switching failed
  • 0x0005: switching succeed

CMD ID 0x03 Movement Control

For more info about Movement Control, please refer to the Onboard SDK source code files.

Data Type Offset (byte) Size (byte) Data Type Description
CMD Val 0 1 --- Control mode byte
1 4 float32 Roll or X-axis control value
5 4 float32 Pitch or Y-axis control value
9 4 float32 Throttle or Z-axis control value
13 4 float32 Yaw control value
ACK Val --- --- --- N/A

CMD ID 0x05 Arm/Disarm

Data Type Offset (byte) Size (byte) Description
CMD Val 0 1 0x01 : Arm
0x00 : Disarm
ACK Val 0 2 Return Code
  • 0x0000: Arm/Disarm Successfully
  • 0x0001: Please obtain control at first
  • 0x0002: Already Armed/Disarmed
  • 0x0003: Cannot disarm when drone not in the air

CMD ID 0x1A Gimbal Control in Rate

Data Type Offset (byte) Size (byte) Data Type Description
CMD Val 0 2 int16_t Yaw in rate
unit 0.1º/s, input range[-1800,1800]
2 2 int16_t Roll in rate
unit 0.1º/s, input range[-1800,1800]
4 2 int16_t Pitch in rate
unit 0.1º/s, input range[-1800,1800]
6 1
  • 7 bit
  • 1 bit
  • Reserved
  • Enable Control
ACK Val --- --- --- N/A

Note: M600 with A3 only supports Ronin-MX/Zenmuse X5 Series/Zenmuse X3/Zenmuse XT when operating gimbal control in rate.

CMD ID 0x1B Gimbal Control in Position

Data Type Offset (byte) Size (byte) Data Type Description
CMD Val 0 2 int16_t Yaw angle
unit 0.1º, input range [-3200,3200]
2 2 int16_t Roll angle
unit 0.1º, input range [-350,350]
4 2 int16_t Pitch angle
unit 0.1º, input range [-900,300]
6 1 --- control flag byte
  • bit 0: mode flag bit
    • 0 : Incremental control, the angle reference is the current Gimbal location
      1 : Absolute control, the angle reference is related to configuration in DJI Go App
  • bit 1: Yaw invaild bit
      0 : Gimbal will follow the command in Yaw
      1 : Gimbal will maintain position in Yaw
  • bit 2: Roll invaild bit, the same as bit[1]
  • bit 3: Pitch invaild bit, the same as bit[1]
  • bit [4:7]: reserved, set to be 0
7 1 uint8_t Command completion time
unit 0.1s, for example 20 means gimbal will reach the commended postition in 2 seconds
rotate rate beyond 400º/s is not recommand
ACK Val --- --- --- N/A

The relationship bewteen the angle reference in absolute control mode and gimbal mode configuration in DJI Go App

Gimbal Mode Roll Pitch Yaw Gimbal Follow UAV's Head
Follow Ground Ground Body Y
FPV N/A Ground N/A Y
Free Ground Ground Ground N

Note: Rotating 90 degree in pitch direction will cause gimbal lock problem, in which the value of roll and yaw are not reliable.

Note: M600 with A3 only supports Ronin-MX/Zenmuse X5 Series/Zenmuse X3/Zenmuse XT when operating gimbal control in angle.

CMD ID 0x20 Take Photo

Data Type Offset (byte) Size (byte) Description
CMD Val 0 1 arbitrary number
ACK Val --- --- N/A

Note: M600 with A3 only supports Zenmuse Series when operating camera control.

CMD ID 0x21 Start Video Recording

Data Type Offset (byte) Size (byte) Description
CMD Val 0 1 arbitrary number
ACK Val --- --- N/A
>Note: M600 with A3 only supports Zenmuse Series when operating camera control.

CMD ID 0x22 Stop Video Recording

Data Type Offset (byte) Size (byte) Description
CMD Val 0 1 arbitrary number
ACK Val --- --- N/A

Note: M600 with A3 only supports Zenmuse Series when operating camera control.

CMD Set 0x02 Push Data CMD Set

CMD ID 0x00 Flight Data

The flight data from the Autopilot can be configured by the DJI assistant software. More info about Flight Data, please refer to the Onboard SDK source code files.

Data Type Size (byte) Description
CMD Val 2 item presence byte, Bit with value 1 means this flight data contains corresponding data item
M100:
  • bit 0: flag of time stamp
  • bit 1: flag of attitude quaternion
  • bit 2: flag of linear acceleration
  • bit 3: flag of linear velocity
  • bit 4: flag of angular velocity
  • bit 5: flag of GPS location, altitude and healthiness
  • bit 6: flag of magnetometer
  • bit 7: flag of remote controller data
  • bit 8: flag of roll, pitch and yaw of gimbal
  • bit 9: flag of flight status
  • bit 10: flag of battery info
  • bit 11: flag of control device
  • bit [12:15]: reserved
A3:
  • bit 0: flag of time stamp
  • bit 1: flag of attitude quaternion
  • bit 2: flag of linear acceleration
  • bit 3: flag of linear velocity
  • bit 4: flag of angular velocity
  • bit 5: flag of GPS location, altitude and healthiness
  • bit 6: flag of GPS detailed information
  • bit 7: flag of RTK detailed information
  • bit 8: flag of magnetometer
  • bit 9: flag of remote controller data
  • bit 10: flag of roll, pitch and yaw of gimbal
  • bit 11: flag of flight status
  • bit 12: flag of battery info
  • bit 13: flag of control device
  • bit [14:15]: reserved
9 Time stamp
16 Attitude quaternion
12 Linear acceleration
13 Linear velocity
12 Angular velocity
25 GPS position, altitude, height and healthiness
68 GPS detailed information (A3 only)
74 RTK detailed information (A3 only)
6 Magnetometer data
12 Remote controller channels
13 Roll, pitch and yaw of Gimbal
1 Flight status
1 Battery percentage
2 Control device

Note: The actual offset of data item in the flight data should be calculated by the flags of 'item presence byte'.

CMD ID 0x01 Lost of Flight Control

OES has the lowerest control priority. Its control authorization can be taken over by remote controller and Mobile Device. Once the flight control is lost from the OES, a push data will be sent by the Autopilot.

Data Type Offset (byte) Size (byte) Description
CMD Val 0 1 Fixed value, set to be 0x04
ACK Val --- --- N/A

CMD ID 0x03 Ground Station State

For more info about Ground Station, please refer to the Onboard SDK source code files.

Data Type Offset (byte) Size (byte) Description
CMD Val 0 6 Ground Station State package
ACK Val --- --- N/A

CMD ID 0x04 Waypoint Event

For more info about Ground Station, please refer to the Onboard SDK source code files.

Data Type Offset (byte) Size (byte) Description
CMD Val 0 6 Waypoint Event package
ACK Val --- --- N/A

CMD Set 0x03 Ground Station CMD Set

For more info about Ground Station, please refer to the Onboard SDK source code files.

CMD ID 0x10 Upload Waypoint Mission Settings

Data Type Offset (byte) Size (byte) Data Type Description
CMD Val 0 51 WayPointInitData waypoint mission information
ACK Val 0 1 uint8_t Return Code:
  • 0x00: No error
  • 0xD1: need to obtain control authorization
  • 0xD4: uav has been in waypoint
  • 0xC8: not support waypoint
  • 0xE0: waypoint parameter is wrong, out of range

CMD ID 0x11 Upload waypoint data

Data Type Offset (byte) Size (byte) Data Type Description
CMD Val 0 1 uint8_t waypoint index
1 90 WayPointData waypoint information
ACK Val 0 1 uint8_t Return Code:
  • 0x00: No error
  • 0xD4: uav has been in waypoint
  • 0xDD: pass limit area
  • 0xE1: data invaild
  • 0xE2: trace too lang(15km)
  • 0xE4: index over range
  • 0xE5: waypoint too close
  • 0xE6: waypoint too far
  • 0xE7: 'damping_dis' check faild
  • 0xE8: waypoint action data invaild
  • 0xE9: missing remaining waypoint
  • 0xEA: waypoint info not upload
0 1 uint8_t waypoint index
3 90 WayPointData waypoint index information

CMD ID 0x12 Start/Stop waypoint

Data Type Offset (byte) Size (byte) Description
CMD Val 0 1 0x01 : Stop waypoint
0x00 : Start waypoint
ACK Val 0 1 Return Code:
  • 0x00: no error
  • 0xC0: waypoint altitude too high
  • 0xC7: waypoint out of radius limited
  • 0xD7: followme is running
  • 0xD8: bad GPS
  • 0xD9: low battery capacity
  • 0xDA: UAV is not in air
  • 0xDE: bad GPS, home position is not recorded
  • 0xE3: total waypoints too long(15km)
  • 0xEA: waypoint info not upload
  • 0xEB: waypoint data not upload
  • 0xEC: request is running
  • 0xF4: wrong CMD Val
#### CMD ID 0x13 Pause/Resume waypoint
Data Type Offset (byte) Size (byte) Description
CMD Val 0 1 0x01 : Resume waypoint
0x00 : Pause waypoint
ACK Val 0 1 Return Code:
  • 0x00: no error
  • 0xED: waypoint is not running
  • 0xF4: wrong CMD Val

CMD ID 0x14 Read Waypoint Init Status (Available in 3.2 Release)

Data Type Offset (byte) Size (byte) Data Type Description
CMD Val 0 1 uint8_t arbitrary num
ACK Val 0 1 uint8_t Return Code:
  • 0x00: no error
  • 0xEA: waypoint info not upload
1 51 WayPointInitData waypoint initialized mission information

CMD ID 0x15 Read Single Waypoint Status (Available in 3.2 Release)

Data Type Offset (byte) Size (byte) Data Type Description
CMD Val 0 1 uint8_t waypoint index
ACK Val 0 1 uint8_t Return Code:
  • 0x00: no error
  • 0xEB: waypoint data not upload
2 1 uint8_t waypoint index
3 90 WayPointData waypoint index information

CMD ID 0x16 Set idle speed

Data Type Offset (byte) Size (byte) Data Type Description
CMD Val 0 * float32 idle speed
ACK Val 0 1 uint8_t Return Code:
  • 0x00: no error
  • 0xD1: need to obtain control authorization
  • 0xEA: waypoint info not upload
  • 0xEE: idle speed invalid

CMD ID 0x17 Get idle speed

Data Type Offset (byte) Size (byte) Data Type Description
CMD Val 0 1 uint8_t arbitrary num
ACK Val 0 1 uint8_t Return Code:
  • 0x00: no error
  • 0xD1: need to obtain control authorization
  • 0xEA: waypoint info not upload
1 2 float32 idle speed

CMD ID 0x20 Start hotpoint

Data Type Offset (byte) Size (byte) Data Type Description
CMD Val 0 51 HotPointData hotpoint mission settings
ACK Val 0 1 uint8_t Return Code:
  • 0x00: no error
  • 0xA2: invaild float value
  • 0xA3: invaild lati and lonti
  • 0xA6: unknown direction
  • 0xC0: altitude too high
  • 0xC1: altitude too low
  • 0xC2: radius out of range(5m~500m)
  • 0xC3: speed too large
  • 0xC4: invaild start position
  • 0xC5: invaild yaw mode
  • 0xC7: radius limited
  • 0xC8: not support
  • 0xC9: uav is too far from hotpoint
  • 0xD3: hotpoint is not inited
  • 0xD5: hotpoint is running
  • 0xD6: uav cannot get to hotpoint
  • 0xD7: waypoint or followme is running
  • 0xD8: bad GPS
  • 0xD9: low battery capacity
  • 0xDA: UAV is not in air
  • 0xDC: uav is taking off, landing or going home
  • 0xDD: pass limit area
  • 0xDE: bad GPS, home position is not recorded

CMD ID 0x21 Stop hotpoint

Data Type Offset (byte) Size (byte) Data Type Description
CMD Val 0 1 uint8_t arbitrary num
ACK Val 0 1 uint8_t Return Code:
  • 0x00: no error
  • 0xD1: need to obtain control authorization
  • 0xD5: hotpoint is not running

CMD ID 0x22 Pause/Resume hotpoint

Data Type Offset (byte) Size (byte) Description
CMD Val 0 1 0x01 : Resume hotpoint
0x00 : Pause hotpoint
ACK Val 0 1 Return Code:
  • 0x00: no error
  • 0xD5: hotpoint is not running
  • 0xA9: hotpoint has pasued
  • 0xAA: hotpoint does not pasue

CMD ID 0x23 Set idle speed

Data Type Offset (byte) Size (byte) Data Type Description
CMD Val 0 1 uint8_t is clockwise
1 4 float32 idle speed
ACK Val --- --- --- N/A

CMD ID 0x24 Set radius

Data Type Offset (byte) Size (byte) Data Type Description
CMD Val 0 4 float32 radius
ACK Val --- --- --- N/A

CMD ID 0x25 Reset yaw

Data Type Offset (byte) Size (byte) Data Type Description
CMD Val 0 1 uint8_t arbitrary num
ACK Val --- --- --- N/A

CMD ID 0x26 Read Hotpoint Task Info From Flight Controller

Data Type Offset (byte) Size (byte) Data Type Description
CMD Val 0 1 uint8_t arbitrary num
ACK Val 0 1 uint8_t Return Code:
  • 0x00: no error
  • 0xD5: hotpoint is not running
1 51 HotPointData hotpoint mission settings

CMD ID 0x27 Enable auto radius mode

Data Type Offset(byte) Length(byte) Data Type Description
CMD Val 0 1 uint8_t enable(1:start, 0:stop)
1 1 int8_t rate(rate of radiu change)
ACK Val 0 1 uint8_t Return Code:
  • 0x00: Success
  • other error code

CMD ID 0x30 Start follow me

Data Type Offset (byte) Size (byte) Data Type Description
CMD Val 0 23 FollowData follow me settings
ACK Val 0 1 uint8_t Return Code:
  • 0x00: no error
  • 0xB0: target is too far from uav (over 20000m)
  • 0xC1: uav is too low
  • 0xC7: distance between target and uav out of radius
  • 0xC8: not support follow me
  • 0xD1: need to obtain control authorization
  • 0xD3: follow me is not inited
  • 0xD5: follow me is running
  • 0xD8: bad GPS
  • 0xD9: low battery capacity
  • 0xDA: UAV is not inair
  • 0xDE: bad GPS, home position is not recorded

CMD ID 0x31 Stop follow me

Data Type Offset (byte) Size (byte) Data Type Description
CMD Val 0 1 uint8_t arbitrary num
ACK Val 0 1 uint8_t Return Code:
  • 0x00: no error
  • 0xD1: need to obtain control authorization
  • 0xD4: follow me is not running

CMD ID 0x32 Pause/Resume follow me

Data Type Offset (byte) Size (byte) Description
CMD Val 0 1 0x01 : Resume follow me
0x00 : Pause follow me
ACK Val 0 1 Return Code:
  • 0x00: no error
  • 0xD4: follow me is not running

CMD ID 0x33 Set target pos info

Data Type Offset (byte) Size (byte) Data Type Description
CMD Val 0 1 uint8_t arbitrary num
ACK Val 0 20 FollowTarget target information

CMD Set 0x04 Sync signal CMD Set

CMD ID 0x00 Set synchronization signal frequency

Data Type Offset (byte) Size (byte) Data Type Description
CMD Val 0 4 uint32_t 0 means that a single sync signal output, other value indicates the frequency of sync signal output, unit hz
ACK Val --- --- --- N/A

Set 0x05 Virtual RC CMD set

For more info about virual RC, please refer to the Onboard SDK source code files.

CMD ID 0x00 Virual RC request

Data Type Offset (byte) Size (byte) Description
CMD Val 0 1 bit 0:
    1 Request open
    0 Request close
bit 1:
    1 When disconnected automatically switches to real remote control
    0 No switches,execute disconnect program
bit 2:7
    reversed
ACK Val --- --- N/A

CMD ID 0x01 Virtual RC data

Data Type Offset (byte) Size (byte) Data Type Description
CMD Val 0 4 * 16 uint32_t[16] data of sixteen channels,range[1024-660, 1024+660]
ACK Val --- --- --- N/A