Skip to main content

Synria Communication Protocol v1.0.6

caution

Reading Guide

  1. All numerical values in this document are uniformly represented in decimal or hexadecimal. Data starting with 0x is hexadecimal; unmarked data is decimal.
  2. Multi-byte data uses little-endian order (low byte first, high byte last). The example frames already include the check byte and can be used directly for serial debugging.

Alicia-M Button Functions:

  • Single click: Switch motor mode, mit mode ↔ pv mode (saved through power-off)
  • Double click: The button light flashes rapidly and plays back the recorded motion (press any key during this time to stop playback)
  • Long press: Within 1~2s, switch the gravity compensation mode (only valid in mit mode)
  • Extra-long press: More than 2s, the button light flashes slowly and records the motion during the button-light flashing period (press any key during this time to stop recording)

Serial Communication Parameters:

  • Frame rate with gravity compensation: 830 Hz
  • Frame rate without gravity compensation: 1000 Hz
  • Limit frame rate: 1630 Hz (applicable to C/C++)

Last modified: May 21, 2026

Note: The final right of interpretation of this communication protocol document and its related functions belongs to Synria Technology Co., Ltd.

I. Basic Structure of the Synria Communication Protocol

The Synria communication protocol consists of a frame header, command, function code, data length, data, check, and frame tail. The default serial baud rate for users is 1000000.

FieldLengthDescriptionFixed Value or Example
Frame header1 byteData frame start marker0xAA
Command1 byteThe major category of function to be executed by this frame0x01, 0x06
Function code1 byteRead/write direction, robotic arm selection, or sub-function0x02, 0x82
Data length1 byteThe number of bytes in the subsequent "data" field0x00, 0x10
DataVariableJoint, gripper, parameter, or status dataPer each command description
Check1 byteThe lower 8 bits of the CRC32 check resultGiven in the examples
Frame tail1 byteData frame end marker0xFF

The check calculation range is: command + function code + data length + data. The frame header and frame tail are not included in the calculation.

For example, querying device information:

Frame HeaderCommandFunction CodeData LengthDataCheckFrame Tail
0xAA0x010x7E0x00Empty0x5D0xFF

Complete frame:

AA 01 7E 00 5D FF

Here, 0x5D is the check byte calculated for 01 7E 00.


II. Common Conventions

1. Robotic Arm Selection

Most commands use the lower two bits of the function code to select the robotic arm:

Function Code BitMeaning
Bit 0Teaching arm
Bit 1Follower arm

Common values:

Function CodeMeaning
0x01Select the teaching arm
0x02Select the follower arm
0x03Select both the teaching arm and the follower arm
0x81Write to the teaching arm
0x82Write to the follower arm

It is recommended to interface in a "single frame operates only one robotic arm" manner, especially for joint data read/write and motor parameter setting.

2. Joint Numbering

Use CaseNumbering Method
Zeroing, mechanical lockNumbered starting from 0
Motor parameter settingNumbered starting from 1
Joint data read/writeNo start-joint field; defaults to starting from joint 0

The Alicia-M single arm normally has 7 physical joints. For public interfacing, the 7th joint is the gripper-related joint; when writing the control mode with 0x11, it is skipped, while other already-opened motor parameters such as acceleration, deceleration, velocity loop, and position loop are still processed according to the requested range.

3. Feedback Function Code

Most feedback frames set the highest bit of the request function code to 1. For example:

Request Function CodeFeedback Function Code
0x020x82
0x030x83
0x7E0xFE

If the request function code itself is already greater than or equal to 0x80, the feedback function code usually remains the same.


III. Command ID Overview

CommandFunctionPublic Description
0x01Device information readOpen
0x02User personalization settingsOpen
0x03Protocol-layer zeroingOpen
0x05Mechanical lock and stiffness switchingOpen
0x06Joint data read/writeOpen
0x09Enable and disableOpen
0x11Motor parameter settingOpen for control mode, acceleration, deceleration, velocity loop, and position loop parameters
0x15Clear motor errorsOpen
0x16Control lockOpen
0x17Gripper gripping parametersOpen
0xFBSerial frame rate statisticsOpen, used for debugging
0xEEError feedbackReturned by the lower-level controller

IV. Command Functions

1. Command ID 0x01: Query Device Information

Command 0x01 is used to read the Alicia-M's product model, serial number, hardware version, and firmware version.

FieldValue
Command0x01
Request function code0x7E
Request data length0x00
Feedback function code0xFE
Feedback data length0x18

Example: Query Device Information

Frame HeaderCommandFunction CodeData LengthDataCheckFrame Tail
0xAA0x010x7E0x00Empty0x5D0xFF

Complete frame:

AA 01 7E 00 5D FF

Example: Device Information Feedback

Frame HeaderCommandFunction CodeData LengthDataCheckFrame Tail
0xAA0x010xFE0x180x41 0x4D 0x58 0x53 0x32 0x35 0x30 0x31 0x30 0x31 0x30 0x31 0x41 0x30 0x30 0x31 0x64 0x00 0x00 0x00 0x6E 0x00 0x00 0x000x050xFF

Complete frame:

AA 01 FE 18 41 4D 58 53 32 35 30 31 30 31 30 31 41 30 30 31 64 00 00 00 6E 00 00 00 05 FF

The feedback data is 24 bytes in total:

OffsetLengthMeaningExample
04 bytesProduct model41 4D 58 53
412 bytesSerial number32 35 30 31 30 31 30 31 41 30 30 31
164 bytesHardware version64 00 00 00
204 bytesFirmware version6E 00 00 00

In the example above, the raw hardware version value is 100, which can be displayed as 1.0.0; the raw firmware version value is 110, which can be displayed as 1.1.0.


2. Command ID 0x02: User Personalization Settings

Command 0x02 is used to read or write user configuration. After writing, it is saved through power-off.

Function code description:

Function Code BitMeaning
Highest bit is 0Read
Highest bit is 1Write
Bit 0Power-on action configuration
Bit 1Gripper type configuration
Bit 2Periodic upload switch

Each configuration item occupies 4 bytes, all little-endian.

Configuration ItemFunction Code BitData LengthValue Range or Valid RuleDescription
Power-on action configurationBit 04 bytesReserved field; recommended to keep the default valueReserved configuration
Gripper type configurationBit 14 bytesCurrently judged by bit1: bit1=0 is the small gripper configuration, bit1=1 is the large gripper configuration; recommended to write 0 or 2Configuration flag value, not a directly written model number
Periodic upload switchBit 24 bytes0 off, 1 on; other values reservedWhen enabled, actively uploads follower-arm position data about every 5ms

The gripper type configuration is not a directly written model number; it is currently parsed by bit1:

Configuration ValueByte OrderMeaning
000 00 00 00bit1=0, select the small gripper configuration
202 00 00 00bit1=1, select the large gripper configuration

After periodic upload is enabled, the lower-level controller will actively upload follower-arm position data about every 5ms. This active upload frame uses command 0x06 with function code 0x04.

Example 1: Read All User Configuration

Frame HeaderCommandFunction CodeData LengthDataCheckFrame Tail
0xAA0x020x070x00Empty0xBB0xFF

Complete frame:

AA 02 07 00 BB FF

Send parsing:

FieldByteMeaning
Command02User personalization settings
Function code07Read the three configuration items corresponding to bits 0, 1, and 2
Data length00A read request requires no data
CheckBBThis frame's check

Example feedback:

Frame HeaderCommandFunction CodeData LengthDataCheckFrame Tail
0xAA0x020x070x0C0x00 0x00 0x00 0x00 0x02 0x00 0x00 0x00 0x01 0x00 0x00 0x000x550xFF

Complete frame:

AA 02 07 0C 00 00 00 00 02 00 00 00 01 00 00 00 55 FF

Feedback parsing:

FieldByteMeaning
Command02User personalization settings
Function code07Returns the three configuration items corresponding to bits 0, 1, and 2
Data length0CThe data area is 12 bytes, with each configuration item being 4 bytes
Data 100 00 00 00The power-on action configuration value is 0
Data 202 00 00 00The gripper type configuration value is 2, bit1=1, indicating a large gripper
Data 301 00 00 00Periodic upload is enabled

Example 2: Modify Gripper Type Configuration

This example writes the gripper type configuration as 2, indicating selection of the large gripper configuration. In the current firmware, bit 1 of this value is used to select the gripper type.

Frame HeaderCommandFunction CodeData LengthDataCheckFrame Tail
0xAA0x020x820x040x02 0x00 0x00 0x000xCF0xFF

Complete frame:

AA 02 82 04 02 00 00 00 CF FF

Send parsing:

FieldByteMeaning
Command02User personalization settings
Function code82Write the gripper type configuration corresponding to bit 1
Data length04Write 1 configuration item, 4 bytes total
Data02 00 00 00The target configuration value is 2, bit1=1, select the large gripper configuration

Feedback:

Frame HeaderCommandFunction CodeData LengthDataCheckFrame Tail
0xAA0x020x820x010x810x8E0xFF

Complete frame:

AA 02 82 01 81 8E FF

Feedback parsing:

FieldByteMeaning
Command02User personalization settings
Function code82Corresponds to this write request
Data length01Feedback of 1 status byte
Data81The write request has been received

Example 3: Enable Periodic Upload

Frame HeaderCommandFunction CodeData LengthDataCheckFrame Tail
0xAA0x020x840x040x01 0x00 0x00 0x000x3C0xFF

Complete frame:

AA 02 84 04 01 00 00 00 3C FF

Send parsing:

FieldByteMeaning
Command02User personalization settings
Function code84Write the periodic upload switch corresponding to bit 2
Data length04Write 1 configuration item, 4 bytes total
Data01 00 00 00Enable periodic upload

Feedback:

Frame HeaderCommandFunction CodeData LengthDataCheckFrame Tail
0xAA0x020x840x010x810x3C0xFF

Complete frame:

AA 02 84 01 81 3C FF

Feedback parsing:

FieldByteMeaning
Command02User personalization settings
Function code84Corresponds to this write request
Data length01Feedback of 1 status byte
Data81The write request has been received

Example 4: Write Power-On Action Configuration

This example writes the power-on action configuration as 0. This item currently serves as a reserved configuration, and the tool side can use it to confirm whether the write link is normal.

Frame HeaderCommandFunction CodeData LengthDataCheckFrame Tail
0xAA0x020x810x040x00 0x00 0x00 0x000xEA0xFF

Complete frame:

AA 02 81 04 00 00 00 00 EA FF

Send parsing:

FieldByteMeaning
Command02User personalization settings
Function code81Write the power-on action configuration corresponding to bit 0
Data length04Write 1 configuration item, 4 bytes total
Data00 00 00 00The target configuration value is 0

Feedback:

Frame HeaderCommandFunction CodeData LengthDataCheckFrame Tail
0xAA0x020x810x010x810xD70xFF

Complete frame:

AA 02 81 01 81 D7 FF

When the feedback data is 0x81, it indicates that the setting has been received.


3. Command ID 0x03: Protocol-Layer Zeroing

Command 0x03 is used to set the current joint position as the new protocol zero point. It has two methods:

Zeroing MethodData ValueDescription
Soft zeroing0x00Only changes the protocol display and protocol control zero point, without changing the motor's underlying zero point
Hard zeroing0x01Clears the protocol offset and performs an underlying hard zeroing

The request data is arranged in the order of the selected robotic arms. Each robotic arm occupies 2 bytes:

ByteMeaning
1st byteStart joint number, starting from 0
2nd byteNumber of consecutive joints

If 1 more byte is appended at the end, that byte is the zeroing method. When the zeroing method is not included, hard zeroing is processed by default.

Example 1: Soft Zeroing of the 7 Follower-Arm Joints

Frame HeaderCommandFunction CodeData LengthDataCheckFrame Tail
0xAA0x030x020x030x00 0x07 0x000x440xFF

Complete frame:

AA 03 02 03 00 07 00 44 FF

Field explanation:

FieldValue
Function code0x02, follower arm
Start joint0x00
Consecutive count0x07
Zeroing method0x00, soft zeroing

Feedback:

Frame HeaderCommandFunction CodeData LengthDataCheckFrame Tail
0xAA0x030x820x010x010xCB0xFF

Complete frame:

AA 03 82 01 01 CB FF

Feedback parsing: 0x82 indicates the follower-arm zeroing feedback, and data 0x01 indicates successful reception.

Example 2: Hard Zeroing of the 7 Joints of Both Arms

Frame HeaderCommandFunction CodeData LengthDataCheckFrame Tail
0xAA0x030x030x050x00 0x07 0x00 0x07 0x010x4C0xFF

Complete frame:

AA 03 03 05 00 07 00 07 01 4C FF

Field explanation:

FieldValue
Function code0x03, select both the teaching arm and the follower arm
Teaching arm start joint0x00
Teaching arm consecutive count0x07
Follower arm start joint0x00
Follower arm consecutive count0x07
Zeroing method0x01, hard zeroing

Feedback:

Frame HeaderCommandFunction CodeData LengthDataCheckFrame Tail
0xAA0x030x830x010x010xFC0xFF

Complete frame:

AA 03 83 01 01 FC FF

Feedback parsing: 0x83 indicates the dual-arm zeroing feedback, and data 0x01 indicates successful reception.


4. Command ID 0x05: Mechanical Lock and Stiffness Switching

Command 0x05 is used to make the specified joints enter high-stiffness holding while the remaining joints enter low-stiffness holding. It is not a power-off lock, but rather changes the joint holding strength.

The request data format is the same as zeroing: each selected robotic arm occupies 2 bytes.

ByteMeaning
1st byteStart joint number, starting from 0
2nd byteNumber of consecutive joints

Example: The 7 Follower-Arm Joints Enter High-Stiffness Holding

Frame HeaderCommandFunction CodeData LengthDataCheckFrame Tail
0xAA0x050x020x020x00 0x070x2B0xFF

Complete frame:

AA 05 02 02 00 07 2B FF

Send parsing:

FieldByteMeaning
Command05Mechanical lock and stiffness switching
Function code02Select the follower arm
Data length02The follower arm occupies a 2-byte interval description
Data00 07Starting from joint 0, 7 consecutive joints enter high-stiffness holding

Feedback:

Frame HeaderCommandFunction CodeData LengthDataCheckFrame Tail
0xAA0x050x820x010x010x170xFF

Complete frame:

AA 05 82 01 01 17 FF

Feedback parsing: 0x82 indicates the follower-arm feedback, and data 0x01 indicates successful reception.


5. Command ID 0x06: Joint Data Read/Write

Command 0x06 is the most commonly used control command of the Alicia-M, used to read joint status and also to write control data such as target position, velocity, and torque.

5.1 Joint Data Address Table

Each address fixedly occupies 2 bytes in the data frame.

AddressNameReadableWritableEffective Bit WidthUnitDescription
0x00posYesYes16-bitradJoint position affected by zeroing
0x01velYesYes12-bitrad/sVelocity target or feedback
0x02torYesYes12-bitN·mTorque target or feedback
0x03kpYesYes16-bitdimensionlessPosition stiffness coefficient, non-negative
0x04kdYesYes16-bitdimensionlessVelocity damping coefficient, non-negative
0x05Linear interpolation velocityYesYes12-bitrad/sUsed for smooth motion to the position target
0x06Coil temperatureYesNo16-bit°CRead-only

12-bit data is placed in a 2-byte slot. When writing the 3 types of 12-bit fields (velocity, torque, linear interpolation velocity), if the 2-byte raw value is 0xFFFF (written as FF FF in a little-endian frame), the lower-level controller treats it as the underlying precise zero value 0. This special value is only used for writing 12-bit fields and does not apply to the position, stiffness, damping, or temperature fields.

5.2 Read Joint Data

The data area of a read request is fixed at 2 bytes:

ByteMeaning
1st byteStart address
2nd byteNumber of consecutive addresses

The data area format of read feedback:

FieldLengthDescription
Reply start address1 byteThe highest bit of the request start address is set to 1
Address count1 byteConsistent with the request
Joint data2 × address count × 7 bytesExpanded in joint order
Operating status1 byteButton, error, or peripheral status

Example: Read the Protocol Position of the 7 Follower-Arm Joints

Frame HeaderCommandFunction CodeData LengthDataCheckFrame Tail
0xAA0x060x020x020x00 0x010xCE0xFF

Complete frame:

AA 06 02 02 00 01 CE FF

Example feedback: All 7 joints are near the protocol zero point, and the operating status is 0.

Frame HeaderCommandFunction CodeData LengthDataCheckFrame Tail
0xAA0x060x020x110x80 0x01 0xFF 0x7F 0xFF 0x7F 0xFF 0x7F 0xFF 0x7F 0xFF 0x7F 0xFF 0x7F 0xFF 0x7F 0x000x4D0xFF

Complete frame:

AA 06 02 11 80 01 FF 7F FF 7F FF 7F FF 7F FF 7F FF 7F FF 7F 00 4D FF

In the feedback data, FF 7F is a 16-bit position value, which can be understood as "an intermediate value close to the zero point".

5.3 Write Joint Data

The data area format of a write request:

FieldLengthDescription
Start address1 byteThe first address to write
Address count1 byteHow many consecutive addresses to write
Joint dataVariableBy default, written sequentially starting from joint 0

The data area of write feedback is fixed at 3 bytes:

FieldLengthDescription
Reply start address1 byteThe highest bit of the request start address is set to 1
Address count1 byteConsistent with the request
Reception status1 byte0x01 indicates successful reception

Example 1: The 7 Follower-Arm Joints Target Position Is Zero, Velocity Is Zero

This example writes both address 0x00 and 0x01 simultaneously. Each joint is 4 bytes: position FF 7F, velocity FF FF.

Frame HeaderCommandFunction CodeData LengthDataCheckFrame Tail
0xAA0x060x820x1E0x00 0x02 0xFF 0x7F 0xFF 0xFF 0xFF 0x7F 0xFF 0xFF 0xFF 0x7F 0xFF 0xFF 0xFF 0x7F 0xFF 0xFF 0xFF 0x7F 0xFF 0xFF 0xFF 0x7F 0xFF 0xFF 0xFF 0x7F 0xFF 0xFF0x350xFF

Complete frame:

AA 06 82 1E 00 02 FF 7F FF FF FF 7F FF FF FF 7F FF FF FF 7F FF FF FF 7F FF FF FF 7F FF FF FF 7F FF FF 35 FF

Feedback:

Frame HeaderCommandFunction CodeData LengthDataCheckFrame Tail
0xAA0x060x820x030x80 0x02 0x010x360xFF

Complete frame:

AA 06 82 03 80 02 01 36 FF

Example 2: Zero the Linear Interpolation Velocity of the 7 Follower-Arm Joints

Frame HeaderCommandFunction CodeData LengthDataCheckFrame Tail
0xAA0x060x820x100x05 0x01 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF0xEF0xFF

Complete frame:

AA 06 82 10 05 01 FF FF FF FF FF FF FF FF FF FF FF FF FF FF EF FF

Feedback:

Frame HeaderCommandFunction CodeData LengthDataCheckFrame Tail
0xAA0x060x820x030x85 0x01 0x010x1E0xFF

Complete frame:

AA 06 82 03 85 01 01 1E FF

6. Command ID 0x09: Enable and Disable

Command 0x09 is used to enable or disable the specified robotic arm.

Data ValueMeaning
0x00Disable
Non-0x00Enable

Example 1: Enable the Follower Arm

Frame HeaderCommandFunction CodeData LengthDataCheckFrame Tail
0xAA0x090x820x010x010xAF0xFF

Complete frame:

AA 09 82 01 01 AF FF

Send parsing: 0x09 is the enable/disable command, function code 0x82 indicates writing to the follower arm, and data 0x01 indicates enable.

Feedback:

Frame HeaderCommandFunction CodeData LengthDataCheckFrame Tail
0xAA0x090x820x010x010xAF0xFF

Complete frame:

AA 09 82 01 01 AF FF

Feedback parsing: The function code remains 0x82, and data 0x01 indicates that the lower-level controller has received this enable request.

Example 2: Disable the Follower Arm

Frame HeaderCommandFunction CodeData LengthDataCheckFrame Tail
0xAA0x090x820x010x000x390xFF

Complete frame:

AA 09 82 01 00 39 FF

Send parsing: The function code 0x82 still indicates writing to the follower arm, and data 0x00 indicates disable.

Feedback:

Frame HeaderCommandFunction CodeData LengthDataCheckFrame Tail
0xAA0x090x820x010x010xAF0xFF

Complete frame:

AA 09 82 01 01 AF FF

Feedback parsing: Data 0x01 indicates that the lower-level controller has received this disable request; it does not mean "still enabled".


7. Command ID 0x11: Motor Parameter Setting

Command 0x11 is used to modify motor control parameters. The public edition opens the control mode, acceleration, deceleration, velocity loop, and position loop parameters. When writing the control mode, the 7th physical joint is skipped; when writing the acceleration, deceleration, velocity loop, and position loop parameters, it is not automatically skipped just because the 7th physical joint is the gripper.

ParameterParameter AddressParameter Value TypeUnit or AttributeParameter Description
Acceleration0x0532-bit floatrad/s²The larger the value, the faster the startup and acceleration
Deceleration0x0632-bit floatrad/s²The larger the value, the faster the deceleration and stop
Velocity loop Kp0x1A32-bit floatDrive parameterIf velocity following is slow, increase slightly; if velocity jitters, decrease
Velocity loop Ki0x1B32-bit floatDrive parameterIf the target velocity is not reached for a long time, increase slightly; if it easily overshoots, decrease
Position loop Kp0x1C32-bit floatDrive parameterIf position following is slow, increase slightly; if it jitters after arrival, decrease
Position loop Ki0x1D32-bit floatDrive parameterIf there is a position error for a long time, increase slightly; if there is obvious swing-back or trailing, decrease
Control mode0x0B32-bit unsigned integerEnum valueDetermines which mode the motor accepts control in

Control mode values:

Mode ValueMeaning
1Torque-hybrid control mode
2Position-velocity mode
3Velocity mode
4Position-velocity-current hybrid mode

Write data format:

FieldLengthDescription
Start motor number1 byteStarting from 1
Motor count1 byteConsecutive count
Parameter address1 byteSee the parameter address table above
Parameter value4 bytesLow byte first
Save flag1 byte0 not saved, non-0 writes and saves

Read data format:

FieldLengthDescription
Start motor number1 byteStarting from 1
Motor count1 byteConsecutive count
Parameter address1 byteThe public edition opens reading of control mode 0x0B

When debugging, you can first use save flag 0, and after confirming that the action effect is normal, then decide whether to write and save.

Example 1: Switch Follower-Arm Motors 1 to 6 to Position-Velocity Mode, Without Saving Through Power-Off

Frame HeaderCommandFunction CodeData LengthDataCheckFrame Tail
0xAA0x110x820x080x01 0x06 0x0B 0x02 0x00 0x00 0x00 0x000xC40xFF

Complete frame:

AA 11 82 08 01 06 0B 02 00 00 00 00 C4 FF

Send parsing:

FieldByteMeaning
Command11Motor parameter setting
Function code82Write to the follower arm
Data length08Start motor, count, parameter address, parameter value, save flag, 8 bytes total
Start motor01Starting from motor 1
Motor count066 consecutive motors
Parameter address0BControl mode
Parameter value02 00 00 00Position-velocity mode
Save flag00Not saved through power-off

Feedback:

Frame HeaderCommandFunction CodeData LengthDataCheckFrame Tail
0xAA0x110x820x040x01 0x06 0x8B 0x010xD60xFF

Complete frame:

AA 11 82 04 01 06 8B 01 D6 FF

Feedback parsing: 01 06 returns this motor range as-is, 8B indicates the feedback for the control mode address, and the trailing data 01 indicates successful reception.

Example 2: Change the Acceleration of Follower-Arm Motors 1 to 6 to 20, Without Saving Through Power-Off

Frame HeaderCommandFunction CodeData LengthDataCheckFrame Tail
0xAA0x110x820x080x01 0x06 0x05 0x00 0x00 0xA0 0x41 0x000xF00xFF

Complete frame:

AA 11 82 08 01 06 05 00 00 A0 41 00 F0 FF

Send parsing:

FieldByteMeaning
Command11Motor parameter setting
Function code82Write to the follower arm
Data length08Start motor, count, parameter address, parameter value, save flag, 8 bytes total
Start motor01Starting from motor 1
Motor count066 consecutive motors
Parameter address05Acceleration
Parameter value00 00 A0 4132-bit float, representing 20
Save flag00Not saved through power-off

Feedback:

Frame HeaderCommandFunction CodeData LengthDataCheckFrame Tail
0xAA0x110x820x040x01 0x06 0x85 0x010x580xFF

Complete frame:

AA 11 82 04 01 06 85 01 58 FF

Feedback parsing: 85 indicates the feedback for the acceleration address, and the trailing data 01 indicates successful reception.

Example 3: Change the Deceleration of Follower-Arm Motors 1 to 6 to 20, Without Saving Through Power-Off

Frame HeaderCommandFunction CodeData LengthDataCheckFrame Tail
0xAA0x110x820x080x01 0x06 0x06 0x00 0x00 0xA0 0x41 0x000x5E0xFF

Complete frame:

AA 11 82 08 01 06 06 00 00 A0 41 00 5E FF

Send parsing:

FieldByteMeaning
Command11Motor parameter setting
Function code82Write to the follower arm
Data length08Start motor, count, parameter address, parameter value, save flag, 8 bytes total
Start motor01Starting from motor 1
Motor count066 consecutive motors
Parameter address06Deceleration
Parameter value00 00 A0 4132-bit float, representing 20
Save flag00Not saved through power-off

Feedback:

Frame HeaderCommandFunction CodeData LengthDataCheckFrame Tail
0xAA0x110x820x040x01 0x06 0x86 0x010x9B0xFF

Complete frame:

AA 11 82 04 01 06 86 01 9B FF

Feedback parsing: 86 indicates the feedback for the deceleration address, and the trailing data 01 indicates successful reception.

Example 4: Change the Velocity Loop Kp of Follower-Arm Motors 1 to 6 to 1.0, Without Saving Through Power-Off

Frame HeaderCommandFunction CodeData LengthDataCheckFrame Tail
0xAA0x110x820x080x01 0x06 0x1A 0x00 0x00 0x80 0x3F 0x000x260xFF

Complete frame:

AA 11 82 08 01 06 1A 00 00 80 3F 00 26 FF

Send parsing: Parameter address 0x1A indicates the velocity loop Kp, and parameter value 00 00 80 3F indicates the 32-bit float 1.0.

Feedback:

Frame HeaderCommandFunction CodeData LengthDataCheckFrame Tail
0xAA0x110x820x040x01 0x06 0x9A 0x010xC60xFF

Complete frame:

AA 11 82 04 01 06 9A 01 C6 FF

Feedback parsing: 0x9A indicates the feedback for the velocity loop Kp address, and the trailing data 0x01 indicates successful reception.

Example 5: Change the Velocity Loop Ki of Follower-Arm Motors 1 to 6 to 1.0, Without Saving Through Power-Off

Frame HeaderCommandFunction CodeData LengthDataCheckFrame Tail
0xAA0x110x820x080x01 0x06 0x1B 0x00 0x00 0x80 0x3F 0x000x830xFF

Complete frame:

AA 11 82 08 01 06 1B 00 00 80 3F 00 83 FF

Send parsing: Parameter address 0x1B indicates the velocity loop Ki, and parameter value 00 00 80 3F indicates the 32-bit float 1.0.

Feedback:

Frame HeaderCommandFunction CodeData LengthDataCheckFrame Tail
0xAA0x110x820x040x01 0x06 0x9B 0x010x870xFF

Complete frame:

AA 11 82 04 01 06 9B 01 87 FF

Feedback parsing: 0x9B indicates the feedback for the velocity loop Ki address, and the trailing data 0x01 indicates successful reception.

Example 6: Change the Position Loop Kp of Follower-Arm Motors 1 to 6 to 1.0, Without Saving Through Power-Off

Frame HeaderCommandFunction CodeData LengthDataCheckFrame Tail
0xAA0x110x820x080x01 0x06 0x1C 0x00 0x00 0x80 0x3F 0x000x3B0xFF

Complete frame:

AA 11 82 08 01 06 1C 00 00 80 3F 00 3B FF

Send parsing: Parameter address 0x1C indicates the position loop Kp, and parameter value 00 00 80 3F indicates the 32-bit float 1.0.

Feedback:

Frame HeaderCommandFunction CodeData LengthDataCheckFrame Tail
0xAA0x110x820x040x01 0x06 0x9C 0x010x400xFF

Complete frame:

AA 11 82 04 01 06 9C 01 40 FF

Feedback parsing: 0x9C indicates the feedback for the position loop Kp address, and the trailing data 0x01 indicates successful reception.

Example 7: Change the Position Loop Ki of Follower-Arm Motors 1 to 6 to 1.0, Without Saving Through Power-Off

Frame HeaderCommandFunction CodeData LengthDataCheckFrame Tail
0xAA0x110x820x080x01 0x06 0x1D 0x00 0x00 0x80 0x3F 0x000x9E0xFF

Complete frame:

AA 11 82 08 01 06 1D 00 00 80 3F 00 9E FF

Send parsing: Parameter address 0x1D indicates the position loop Ki, and parameter value 00 00 80 3F indicates the 32-bit float 1.0.

Feedback:

Frame HeaderCommandFunction CodeData LengthDataCheckFrame Tail
0xAA0x110x820x040x01 0x06 0x9D 0x010x010xFF

Complete frame:

AA 11 82 04 01 06 9D 01 01 FF

Feedback parsing: 0x9D indicates the feedback for the position loop Ki address, and the trailing data 0x01 indicates successful reception.

Example 8: Read the Control Mode of Follower-Arm Motors 1 to 2

Frame HeaderCommandFunction CodeData LengthDataCheckFrame Tail
0xAA0x110x020x030x01 0x02 0x0B0x2E0xFF

Complete frame:

AA 11 02 03 01 02 0B 2E FF

Send parsing: Function code 0x02 indicates reading the follower arm; data 01 02 0B indicates reading the control mode of 2 motors starting from motor 1.

Example feedback: Both motors are in position-velocity mode.

Frame HeaderCommandFunction CodeData LengthDataCheckFrame Tail
0xAA0x110x020x0B0x00 0x00 0x00 0x02 0x00 0x00 0x00 0x02 0x00 0x00 0x000x6E0xFF

Complete frame:

AA 11 02 0B 00 00 00 02 00 00 00 02 00 00 00 6E FF

In the feedback data, the first 3 bytes can be treated as reserved bytes, and each subsequent 4 bytes represents the mode value of one motor.


8. Command ID 0x15: Clear Motor Errors

Command 0x15 is used to clear the motor errors of the specified robotic arm. The data area must be 0xFE.

Example: Clear Follower-Arm Errors

Frame HeaderCommandFunction CodeData LengthDataCheckFrame Tail
0xAA0x150x020x010xFE0x850xFF

Complete frame:

AA 15 02 01 FE 85 FF

Send parsing: Function code 0x02 indicates the follower arm, and data 0xFE is the fixed byte for this command.

Feedback:

Frame HeaderCommandFunction CodeData LengthDataCheckFrame Tail
0xAA0x150x820x010x010x880xFF

Complete frame:

AA 15 82 01 01 88 FF

Feedback parsing: 0x82 indicates the follower-arm error-clearing feedback, and data 0x01 indicates successful reception.


9. Command ID 0x16: Control Lock

Command 0x16 is used to lock all joints to their current positions, or to unlock them.

Function CodeMeaning
0x80Lock
0x00Unlock

After locking, the lower-level controller will reject control-type commands that would cause motor motion until an unlock command is received.

Example 1: Enter Control Lock

Frame HeaderCommandFunction CodeData LengthDataCheckFrame Tail
0xAA0x160x800x00Empty0x9B0xFF

Complete frame:

AA 16 80 00 9B FF

Send parsing: Function code 0x80 indicates entering control lock, and the data length is 0.

Feedback:

Frame HeaderCommandFunction CodeData LengthDataCheckFrame Tail
0xAA0x160x800x010x010x080xFF

Complete frame:

AA 16 80 01 01 08 FF

Feedback parsing: The function code remains 0x80, and data 0x01 indicates that the lock request has been received.

Example 2: Exit Control Lock

Frame HeaderCommandFunction CodeData LengthDataCheckFrame Tail
0xAA0x160x000x00Empty0xD00xFF

Complete frame:

AA 16 00 00 D0 FF

Send parsing: Function code 0x00 indicates exiting control lock, and the data length is 0.

Feedback:

Frame HeaderCommandFunction CodeData LengthDataCheckFrame Tail
0xAA0x160x000x010x010x880xFF

Complete frame:

AA 16 00 01 01 88 FF

Feedback parsing: The function code remains 0x00, and data 0x01 indicates that the unlock request has been received.


10. Command ID 0x17: Gripper Gripping Parameters

Command 0x17 is used to read or set the gripper torque and force-control related parameters. It can only select one robotic arm at a time. This command only modifies the internal parameters of the gripper controller. It does not write to the J7 ESC register, nor does it change the J7 control mode. After a successful write, the parameters are updated into the gripper controller's running configuration and take effect in subsequent gripper control cycles. If you need to save through power-off, you can append 1 save flag byte at the end of the write data area; when the save flag is non-zero, the device saves the current complete gripper parameter configuration.

Function code description:

Function CodeMeaning
0x01Read the teaching arm
0x02Read the follower arm
0x81Write to the teaching arm
0x82Write to the follower arm
Mask BitValueParameter MeaningUnit or DescriptionRangeAdjustment Direction
Bit 00x01Target gripping forceN, estimated force at the gripper endSmall gripper:
[1, 80] N
Large gripper:
[1, 120] N
Increasing raises the target gripping force, decreasing lowers the gripping strength
Bit 10x02Opening feedforward torqueN·m, feedforward torque on the motor sideSmall gripper:
[0.2, 3.0] N·m
Large gripper:
[0.2, 5.0] N·m
Increasing raises the opening assist torque, decreasing lowers the opening impact
Bit 20x04Closing feedforward torqueN·m, feedforward torque on the motor sideSmall gripper:
[-5.0, -0.2] N·m
Large gripper:
[-8.0, -0.2] N·m
The closing direction is negative; increasing the absolute value raises the closing assist torque, adjusting toward 0 lowers the closing impact
Bit 30x08Maximum holding torqueN·m, torque upper limit on the motor sideSmall gripper:
[0.5, 5.0] N·m
Large gripper:
[0.5, 10.0] N·m
Increasing raises the torque upper limit during the holding phase, decreasing lowers the continuous gripping torque
Bit 40x10Force-control proportiondimensionless[0, 2.0]Increasing raises the force-control response, decreasing lowers the force-control oscillation tendency
Bit 50x20Force-control integral1/s[0, 2.0] 1/sIncreasing raises the long-term compensation capability, decreasing lowers the integral trailing
Bit 60x40Integral limitingN·s[0, 100] N·sIncreasing raises the integral compensation upper limit, decreasing limits the long-term integral accumulation
Bit 70x80Torque scaling when approaching closureratio[0, 1]Increasing raises the closing assist torque when approaching the target, decreasing makes the end closure more gentle

When reading, an empty data area means reading all parameters; a single non-zero mask in the data area means reading only the parameters selected by the mask.

When writing, the 1st byte of the data area is the mask, followed by 32-bit floats placed in order of the mask bits from low to high. If you need to save through power-off, you can append 1 save flag byte after all the floats:

Data area length = 1 + number of parameters * 4              // Takes effect immediately
Data area length = 1 + number of parameters * 4 + 1 // Takes effect immediately and saves through power-off depending on the save flag

When the save flag is 0x00, it only takes effect immediately; when the save flag is non-zero, the device saves the complete gripper parameter configuration after writing.

Example 1: Read All Gripper Parameters of the Follower Arm

Frame HeaderCommandFunction CodeData LengthDataCheckFrame Tail
0xAA0x170x020x00Empty0x650xFF

Complete frame:

AA 17 02 00 65 FF

Example feedback (the following data uses the small gripper default parameters as an example):

Frame HeaderCommandFunction CodeData LengthDataCheckFrame Tail
0xAA0x170x820x220x01 0xFF 0x00 0x00 0x0C 0x42 0x00 0x00 0xA0 0x3F 0x00 0x00 0x20 0xC0 0x00 0x00 0x20 0x40 0x9A 0x99 0x19 0x3F 0xCD 0xCC 0xCC 0x3E 0x00 0x00 0xA0 0x41 0x33 0x33 0xB3 0x3E0x8C0xFF

Complete frame:

AA 17 82 22 01 FF 00 00 0C 42 00 00 A0 3F 00 00 20 C0 00 00 20 40 9A 99 19 3F CD CC CC 3E 00 00 A0 41 33 33 B3 3E 8C FF

The meaning of the first 2 bytes of the feedback data:

ByteMeaning
0x01Follower arm
0xFFReturns all 8 parameters

Each subsequent 4 bytes is a 32-bit float, in the same order as the parameter mask table.

Example 2: Set the Follower-Arm Target Gripping Force to 35 N and the Maximum Holding Torque to 2.5 N·m

The mask is 0x09, indicating writing the two parameters at bit 0 and bit 3.

Frame HeaderCommandFunction CodeData LengthDataCheckFrame Tail
0xAA0x170x820x090x09 0x00 0x00 0x0C 0x42 0x00 0x00 0x20 0x400xB30xFF

Complete frame:

AA 17 82 09 09 00 00 0C 42 00 00 20 40 B3 FF

Feedback:

Frame HeaderCommandFunction CodeData LengthDataCheckFrame Tail
0xAA0x170x820x030x01 0x09 0x010x740xFF

Complete frame:

AA 17 82 03 01 09 01 74 FF

Example 3: Set the Follower-Arm Target Gripping Force to 2 N and Save

The mask is 0x01, indicating writing only the bit-0 target gripping force. The last byte 0x01 of the data area is the save flag, indicating saving the current complete gripper parameter configuration.

Frame HeaderCommandFunction CodeData LengthDataCheckFrame Tail
0xAA0x170x820x060x01 0x00 0x00 0x00 0x40 0x010xBD0xFF

Complete frame:

AA 17 82 06 01 00 00 00 40 01 BD FF

Here, 00 00 00 40 is the little-endian format of the 32-bit float 2.0f, and the final 01 indicates save.

Feedback:

Frame HeaderCommandFunction CodeData LengthDataCheckFrame Tail
0xAA0x170x820x030x01 0x01 0x010x7C0xFF

Complete frame:

AA 17 82 03 01 01 01 7C FF

11. Command ID 0xFB: Serial Frame Rate Statistics

Command 0xFB is used to debug serial communication performance.

Function CodeMeaning
0x00Start statistics
0x01Query statistics results
0x02Stop statistics

The query result is 12 bytes in total, composed of 3 32-bit floats:

OrderMeaning
1stTotal effective frame rate
2nd0x06 control success frame rate
3rdVariance of the time interval between adjacent frames

Example 1: Start Statistics

Frame HeaderCommandFunction CodeData LengthDataCheckFrame Tail
0xAA0xFB0x000x00Empty0x230xFF

Complete frame:

AA FB 00 00 23 FF

Feedback:

Frame HeaderCommandFunction CodeData LengthDataCheckFrame Tail
0xAA0xFB0x800x010x010xED0xFF

Complete frame:

AA FB 80 01 01 ED FF

Example 2: Query Statistics Results

Frame HeaderCommandFunction CodeData LengthDataCheckFrame Tail
0xAA0xFB0x010x00Empty0x620xFF

Complete frame:

AA FB 01 00 62 FF

Example feedback: All three statistics values are 0.

Frame HeaderCommandFunction CodeData LengthDataCheckFrame Tail
0xAA0xFB0x810x0C0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x000x610xFF

Complete frame:

AA FB 81 0C 00 00 00 00 00 00 00 00 00 00 00 00 61 FF

Example 3: Stop Statistics

Frame HeaderCommandFunction CodeData LengthDataCheckFrame Tail
0xAA0xFB0x020x00Empty0xA10xFF

Complete frame:

AA FB 02 00 A1 FF

Feedback:

Frame HeaderCommandFunction CodeData LengthDataCheckFrame Tail
0xAA0xFB0x820x010x010x830xFF

Complete frame:

AA FB 82 01 01 83 FF

12. Command ID 0xEE: Error Feedback

Command 0xEE is returned by the lower-level controller to indicate that a frame sent by the upper computer cannot be processed normally.

An error feedback frame consists of a frame header, 0xEE, error type, length 0x01, additional information, check, and frame tail. Below are two sets of actual feedback frames that can be directly compared.

Error TypeMeaningAdditional Information
0x00Frame header or frame tail errorThe received frame length
0x01Length errorThe received frame length
0x02Check errorThe check byte computed by the lower-level controller
0x04Angle out of boundsThe out-of-bounds joint number
0x05Data length errorThe current data length or count
0x06Address errorThe illegal address or out-of-bounds value
0x07The current state does not allow this operationThe request function code
0xEEMode switch rejectedThe high 4 bits are the current mode, the low 4 bits are the target mode

When the error type is 0xEE, the additional information is the mode flag byte:

Current mode = (additional information & 0xF0) >> 4
Target mode = additional information & 0x0F

Mode code meanings:

Mode CodeMeaning
0x0Normal state
0x1Control protocol state
0x2Gravity compensation state
0x3Dual-arm synchronization state
0x4Firmware upgrade state
0x5Control lock state

Common mode flag examples:

Additional InformationCurrent ModeTarget ModeMeaning
0x310x3 Dual-arm synchronization state0x1 Control protocol stateCurrently in dual-arm synchronization, rejecting entry into the control protocol.
0x510x5 Control lock state0x1 Control protocol stateCurrently in control lock, rejecting entry into the control protocol.

Example 1: Check Error

Frame HeaderCommandFunction CodeData LengthDataCheckFrame Tail
0xAA0xEE0x020x010x120x700xFF

Complete frame:

AA EE 02 01 12 70 FF

Indicates that the correct check byte computed by the lower-level controller is 0x12.

Example 2: A Motion Control Command Received During Control Lock

Frame HeaderCommandFunction CodeData LengthDataCheckFrame Tail
0xAA0xEE0xEE0x010x510x9E0xFF

Complete frame:

AA EE EE 01 51 9E FF

Additional information 0x51 indicates: currently in the control lock state, and the target operation is the control protocol state.


V. Interfacing Workflow

  1. First complete the three basic communications: 0x01 query device information, 0x06 read follower-arm position, and 0x09 enable the follower arm.
  2. Before controlling the joint positions, first use 0x16 to confirm that the device is not in the locked state, then use 0x06 to write the target position and velocity.
  3. If you only want to stop the linear interpolation, prefer writing 0x06 address 0x05 and write each joint as FF FF.
  4. If you want to use active upload, enable periodic upload via 0x02, and parse the active frames according to the 0x06 / 0x04 format.