Edit on GitHub

Introduction

DYNAMIXEL servos utilize the DYNAMIXEL protocol for serial communications and control operations. This document serves as a reference for the specifications of 2.0 DYNAMIXEL Protocol communication.

DYNAMIXEL Protocol 2.0 communications are supported on the following servos:

Note: MX(2.0) is a special firmware for the DYNAMIXEL MX series providing support for DYNAMIXEL Protocol 2.0. MX(2.0) firmware can be uploaded to your servo using Firmware Recovery in DYNAMIXEL Wizard 2.0.

DYNAMIXEL Protocol 2.0 communications are supported by the following controllers:

TIP : See the DYNAMIXEL Protocol Compatibility Table for more information.

Packet

DYNAMIXELs communicate with their controllers using structured data packets in one of two types:

  1. Instruction Packets: Sent by the main controller to the DYNAMIXEL. These packets contain the instructions for the actuators.
  2. Status Packets: Sent by the DYNAMIXEL back to the main controller. These packets return information reported by the actuator.

ID

Each DYNAMIXEL servo is assigned a communication ID for identification over the DYNAMIXEL bus.

Each connected DYNAMIXEL must have a unique ID number. If DYNAMIXELs with the same ID are connected, packet collision and network problems will occur. To change a DYNAMIXEL’s ID, reference the DYNAMIXEL Control Table section on the DYNAMIXEL Wizard 2.0 eManual page.

NOTE: The default ID number for new DYNAMIXEL actuators is 1.

DYNAMIXEL Protocol

DYNAMIXEL servos utilize half-duplex 8 bit Asynchronous Serial Communication with 1 Stop bit, and no Parity.

Half Duplex

Half duplex UART is a serial communication protocol where both TxD and RxD cannot be used at the same time. This method is generally used when many devices need to be connected to a single bus. Since multiple devices are connected to the same bus, all the other devices need to be in input mode while one device is transmitting. The Main Controller that controls DYNAMIXEL actuators also controls the switch between input and output communications modes.

Tx, Rx Direction

For Half Duplex UART, the transmission ending timing is important to change the direction between sending and receiving mode. The bit definitions within the UART_STATUS register are as follows:

The TXD_BUFFER_READY_BIT is used when one byte is to be transmitted via the serial communication channel, and an example is shown below.

  TxDByte(byte bData)
  {
    while(!TXD_BUFFER_READY_BIT); //wait until data can be loaded.
    SerialTxDBuffer = bData; //data load to TxD buffer
  }

Before changing the communication direction, the TXD_SHIFT_REGISTER_EMPTY_BIT must be checked to ensure that all data has been transferred. The following is an example program that sends an Instruction Packet and waits until communciation has been completed before switching communication directions.

1  DIRECTION_PORT = TX_DIRECTION;
2  TxDByte(0xff);
3  TxDByte(0xff);
4  TxDByte(0xfd);
5  TxDByte(0x00);
6  TxDByte(bID);
7  TxDByte(bLengthLow);
8  TxDByte(bLengthHigh);
9  TxDByte(bInstruction);
10  TxDByte(Parameter0); TxDByte(Parameter1); ...
11  TxDByte(bCrcLow);
12  DisableInterrupt(); // interrupt should be disable
13  TxDByte(bCrcHigh);  // last TxD
14  while(!TXD_SHIFT_REGISTER_EMPTY_BIT); // Wait till last data bit has been sent
15  DIRECTION_PORT = RX_DIRECTION; // Direction change to RXD
16  EnableInterrupt(); // enable interrupt again

WARNING : Please note the lines between LINE 12 and LINE 16. Line 12 is necessary since an interrupt during data transmission may cause a delay longer than the return delay time and corruption to the status packet may occur.

Byte to Byte Time

The allowed delay time between bytes when sending an instruction packet is 1.5ms. If the delay time is over 1.5ms, then DYNAMIXEL actuator recognizes this as a communication problem and waits for the next header (0xff 0xff 0xfd) before continuing to process packets.

Instruction Packet

Instruction Packet is the command packet sent to provide instructions to the Device. The structure of the packet is as follows:

Header 1 Header 2 Header 3 Reserved Packet ID Length 1 Length 2 Instruction Param Param Param CRC 1 CRC 2
0xFF 0xFF 0xFD 0x00 ID Len_L Len_H Instruction Param 1 Param N CRC_L CRC_H

This field is used to indicate the start of a status packet.

Reserved

An additional 0x00 byte included in the header field.

Example DYNAMIXEL packet

Packet ID

The field that indicates the ID of the device that should receive the Instruction Packet and process it.

  1. Range : 0 ~ 252 (0x00 ~ 0xFC), which is a total of 253 numbers that can be used.
  2. Broadcast ID : 254 (0xFE), which makes all connected devices execute the Instruction Packet.

WARNING: The DYNAMIXEL Broadcast ID (254 (0xFE)) will only return Status Packets for Ping, Sync Read and Bulk Read commands, other Instructions aside from Ping, Sync Read and Bulk Read will not return Status Packets when sent to the Broadcast ID.

Length

The field that specifies the full length of the transmitted packet, Divided into low and high bytes in the Instruction Packet. The Length includes the Byte size of Instruction, Parameters and CRC fields in the packet.

Instruction

The field that defines the type of command included in the instruction packet.

Value Instructions Description
0x01 Ping Instruction that checks whether the Packet has arrived at a device with the same ID as the specified packet ID
0x02 Read Instruction to read data from the Device
0x03 Write Instruction to write data to the Device
0x04 Reg Write Instruction to register the Instruction Packet in standby status; Packet can later be executed using the Action command
0x05 Action Instruction to executes a Packet that was registered beforehand using Reg Write
0x06 Factory Reset Instruction that resets the Control Table to its initial factory default settings
0x08 Reboot Instruction to reboot the Device
0x10 Clear Instruction to reset certain information stored in memory
0x20 Control Table Backup Instruction to store current Control Table status data to a Backup or to restore backup EEPROM data.
0x55 Status(Return) Return packet sent following the execution of an Instruction Packet
0x82 Sync Read Instruction to read data from multiple devices with the same Address with the same length at once
0x83 Sync Write Instruction to write data to multiple devices with the same Address with the same length at once
0x8A Fast Sync Read Instruction to read data from multiple devices with the same Address with the same length at once
0x92 Bulk Read Instruction to read data from multiple devices with different Addresses with different lengths at once
0x93 Bulk Write Instruction to write data to multiple devices with different Addresses with different lengths at once
0x9A Fast Bulk Read Instruction to read data from multiple devices with different Addresses with different lengths at once

Parameters

This section contains the data sent in the packet, and may differ in length and content depending on the type of packet sent.

WARNING: The method of expressing negative numbers in this data field may differ for each product. Please refer to the eManual page for your specific product for more information.

CRC

A 16bit checksum used to determine if the Packet has been damaged during communication. This field is divided into low and high bytes in the Instruction Packet and is calculated based on the content of the packet ranging from the Header (FF FF FD 00) to to the Parameters before the CRC field in the Instruction Packet. See the following page for CRC Calculation documentation.

Status Packet

The Status Packet is the response transmitted from the device to the main controller following the receipt of an Instruction Packet. Note that it has the same construction as the Instruction Packet with the addition of the ERROR field.

Header 1 Header 2 Header 3 Reserved Packet ID Length 1 Length 2 Instruction ERR PARAM PARAM PARAM CRC 1 CRC 2
0xFF 0xFF 0xFD 0x00 ID Len_L Len_H Instruction Error Param 1 Param N CRC_L CRC_H

Instruction

The instruction for Status Packets is 0x55 (Status), this should be included as the instruction for all returned status packets.

Error

The field that indicates the result of the received Instruction Packet.

Bit 7 Bit 6 ~ Bit 0
Alert Error Number
Error Number Error Description
0x01 Result Fail Failed to process the sent Instruction Packet
0x02 Instruction Error An undefined Instruction has been used
Action has been used without Reg Write
0x03 CRC Error The CRC of the sent Packet does not match the expected value
0x04 Data Range Error Data to be written to the specified Address is outside the range of the minimum/maximum value
0x05 Data Length Error Attempted to write Data that is shorter than the required data length of the specified Address
(ex: when you attempt to only use 2 bytes of a register that has been defined as 4 bytes)
0x06 Data Limit Error Data to be written to the specified Address is outside of the configured Limit value
0x07 Access Error Attempted to write a value to an Address that is Read Only or has not been defined
Attempted to read a value from an Address that is Write Only or has not been defined
Attempted to write a value to an EEPROM register while Torque was Enabled.

Parameters

This section contains the data used as an argument to the instruction included in the packet, and may differ in length and content depending on the type of packet sent.

WARNING: The method of expressing negative numbers in this data field may differ for each product. Please refer to the eManual page for your specific product for more information.

Response Policy

The method of response to received Instructions can be modified using the value of the Status Return Level Control Table item. For more details, see the Status Return Level section of the eManual page for your specific actuator.

WARNING: The DYNAMIXEL Broadcast ID (254 (0xFE)) will only return Status Packets for Ping, Sync Read and Bulk Read commands, other Instructions aside from Ping, Sync Read and Bulk Read will not return Status Packets when sent to the Broadcast ID.

Packet Process

Transmission Process

  1. Generate basic packet structure including required parameters.
  2. Apply Byte Stuffing to ensure that packets are processed successfully.
  3. Update packet length to include any stuffed bytes.
  4. Calculate final CRC with byte stuffing applied.

NOTICE: Byte stuffing is a method of adding additional data to generated instruction packets to ensure that the packets are processed successfully. When the byte pattern “0xFF 0xFF 0xFD” appears in a packet, byte stuffing adds 0xFD to the end of the pattern to convert it to “0xFF 0xFF 0xFD 0xFD” to ensure that it is not interpreted as the header at the start of another packet.

Processing Order of Reception

  1. Search for packet Header (0xFF 0xFF 0xFD), ignoring any found Byte Stuffing (0xFF 0xFF 0xFD 0xFD).
  2. If the Packet ID is valid, prepare to receive additional transmission data the size of Length.
  3. Calculate the CRC with the received Packet with Byte Stuffing included, if the CRC matches, remove byte stuffing from received packet.
  4. Execute received packet.

Instruction Details

Note that given examples use the following abbreviations for each packet section:

Ping (0x01)

Description

Packet Parameters

Note : A Status Packet will be received from each connected Device.

Status Packet Description
Parameter 1 Model Number LSB
Parameter 2 Model Number MSB
Parameter 3 Version of Firmware

Example 1

Conditions

Ping Instruction Packet

H1 H2 H3 RSRV Packet ID LEN1 LEN2 INST CRC 1 CRC 2
0xFF 0xFF 0xFD 0x00 0x01 0x03 0x00 0x01 0x19 0x4E

ID 1 Status Packet

H1 H2 H3 RSRV Packet ID LEN1 LEN2 INST ERR P1 P2 P3 CRC 1 CRC 2
0xFF 0xFF 0xFD 0x00 0x01 0x07 0x00 0x55 0x00 0x06 0x04 0x26 0x65 0x5D

Example 2

Conditions

Ping Instruction Packet

H1 H2 H3 RSRV Packet ID LEN1 LEN2 INST CRC 1 CRC 2
0xFF 0xFF 0xFD 0x00 0xFE 0x03 0x00 0x01 0x31 0x42

ID 1 Status Packet

H1 H2 H3 RSRV Packet ID LEN1 LEN2 INST ERR P1 P2 P3 CRC 1 CRC 2
0xFF 0xFF 0xFD 0x00 0x01 0x07 0x00 0x55 0x00 0x06 0x04 0x26 0x65 0x5D

ID 2 Status Packet

H1 H2 H3 RSRV Packet ID LEN1 LEN2 INST ERR P1 P2 P3 CRC 1 CRC 2
0xFF 0xFF 0xFD 0x00 0x02 0x07 0x00 0x55 0x00 0x06 0x04 0x26 0x6F 0x6D

Read (0x02)

Description

WARNING: The method of expressing negative numbers data fields may differ for each product. Please refer to the eManual page for your specific product for more information.

Note: If the requested item is outside the range of the Control Table, the returned Status packet will include an Access Error in its error field, and return with with no parameters.

Packet Parameters

Instruction Packet Description
Parameter 1 Low-order byte from the starting address
Parameter 2 High-order byte from the starting address
Parameter 3 Low-order byte from the data length (X)
Parameter 4 High-order byte from the data length (X)
Status Packet Description
Parameter 1 First Byte
Parameter 2 Second Byte
Parameter X X-th Byte

Example

Conditions

Read Instruction Packet

H1 H2 H3 RSRV Packet ID LEN1 LEN2 INST P1 P2 P3 P4 CRC 1 CRC 2
0xFF 0xFF 0xFD 0x00 0x01 0x07 0x00 0x02 0x84 0x00 0x04 0x00 0x1D 0x15

ID 1 Status Packet

H1 H2 H3 RSRV Packet ID LEN1 LEN2 INST ERR P1 P2 P3 P4 CRC 1 CRC 2
0xFF 0xFF 0xFD 0x00 0x01 0x08 0x00 0x55 0x00 0xA6 0x00 0x00 0x00 0x8C 0xC0

Write (0x03)

Description

WARNING: The method of expressing negative numbers data fields may differ for each product. Please refer to the eManual page for your specific product for more information.

Packet Parameters

Instruction Packet Description
Parameter 1 Low-order byte from the starting address
Parameter 2 High-order byte from the starting address
Parameter 2+1 First Byte
Parameter 2+2 Second Byte
Parameter 2+X X-th Byte

Example

Conditions

Write Instruction Packet

H1 H2 H3 RSRV Packet ID LEN1 LEN2 INST P1 P2 P3 P4 P5 P6 CRC 1 CRC 2
0xFF 0xFF 0xFD 0x00 0x01 0x09 0x00 0x03 0x74 0x00 0x00 0x02 0x00 0x00 0xCA 0x89

ID 1 Status Packet

H1 H2 H3 RSRV Packet ID LEN1 LEN2 INST ERR CRC 1 CRC 2
0xFF 0xFF 0xFD 0x00 0x01 0x04 0x00 0x55 0x00 0xA1 0x0C

Reg Write (0x04)

Description

Packet Parameters

Instruction Packet Description
Parameter 1 Low-order byte from the starting address
Parameter 2 High-order byte from the starting address
Parameter 2+1 First Byte
Parameter 2+2 Second Byte
Parameter 2+X X-th Byte

Example

Condition

Reg Write Instruction Packet

H1 H2 H3 RSRV Packet ID LEN1 LEN2 INST P1 P2 P3 P4 P5 P6 CRC 1 CRC 2
0xFF 0xFF 0xFD 0x00 0x01 0x09 0x00 0x04 0x68 0x00 0xC8 0x00 0x00 0x00 0xAE 0x8E

ID 1 Status Packet

H1 H2 H3 RSRV Packet ID LEN1 LEN2 INST ERR CRC 1 CRC 2
0xFF 0xFF 0xFD 0x00 0x01 0x04 0x00 0x55 0x00 0xA1 0x0C

Action (0x05)

Description

Example

Condition

Action Instruction Packet

H1 H2 H3 RSRV Packet ID LEN1 LEN2 INST CRC 1 CRC 2
0xFF 0xFF 0xFD 0x00 0x01 0x03 0x00 0x05 0x02 0xCE

ID 1 Status Packet

H1 H2 H3 RSRV Packet ID LEN1 LEN2 INST ERR CRC 1 CRC 2
0xFF 0xFF 0xFD 0x00 0x01 0x04 0x00 0x55 0x00 0xA1 0x0C

Factory Reset (0x06)

Description

WARNING: When the Packet ID is the Broadcast ID 0xFE and the configured Option is Reset All 0xFF, the Factory Reset Instruction(0x06) will NOT be executed. This safety feature is present in MX(2.0) FW42, X-series FW42 or above.

Parameters

Instruction Packet Description
Parameter 1 0xFF : Reset all
0x01 : Reset all except ID
0x02 : Reset all except ID and Baudrate

Example

Conditions

Factory Reset Instruction Packet

H1 H2 H3 RSRV Packet ID LEN1 LEN2 INST P1 CRC 1 CRC 2
0xFF 0xFF 0xFD 0x00 0x01 0x04 0x00 0x06 0x01 0xA1 0xE6

ID 1 Status Packet

H1 H2 H3 RSRV Packet ID LEN1 LEN2 INST ERR CRC 1 CRC 2
0xFF 0xFF 0xFD 0x00 0x01 0x04 0x00 0x55 0x00 0xA1 0x0C

Reboot (0x08)

Description

Example

Conditions

Reboot Instruction Packet

H1 H2 H3 RSRV Packet ID LEN1 LEN2 INST CRC 1 CRC 2
0xFF 0xFF 0xFD 0x00 0x01 0x03 0x00 0x08 0x2F 0x4E

ID 1 Status Packet

H1 H2 H3 RSRV Packet ID LEN1 LEN2 INST ERR CRC 1 CRC 2
0xFF 0xFF 0xFD 0x00 0x01 0x04 0x00 0x55 0x00 0xA1 0x0C

Clear (0x10)

Description

Parameters

P1 P2 ~ P5 Description
0x01 Fixed Values
(0x44 0x58 0x4C 0x22)
Reset the Present Position value to an absolute value within one rotation (0-4095).
The Clear instruction can only be executed when the DYNAMIXEL is stopped.
Note that if DYNAMIXEL is in motion and the Clear Instruction packet is sent, Result Fail (0x01) will be returned in the Error field of the Status Packet.
0x02 Fixed value
(0x45 0x52 0x43 0x4C)
Clear any registered errors that have occurred.
If an error cannot be cleared or the conditions for clearance are not met, the error will not be cleared, and Result Fail (0x01) will be returned in the Error field of the Status Packet.
This feature is supported only by the DYNAMIXEL Y series.
- Reserved
0xFF - Reserved

Example

Conditions

Clear Instruction Packet

H1 H2 H3 RSRV Packet ID LEN1 LEN2 INST P1 P2 P3 P4 P5 CRC 1 CRC 2
0xFF 0xFF 0xFD 0x00 0x01 0x08 0x00 0x10 0x01 0x44 0x58 0x4C 0x22 0xB1 0xDC

ID 1 Status Packet

H1 H2 H3 RSRV Packet ID LEN1 LEN2 INST ERR CRC 1 CRC 2
0xFF 0xFF 0xFD 0x00 0x01 0x04 0x00 0x55 0x00 0xA1 0x0C

Control Table Backup (0x20)

Description

Note

Parameters

P1 P2 ~ P5 Description
0x01 Fixed Values
(0x43 0x54 0x52 0x4C)
Store current Control Table status data to a Backup area
0x02 Fixed Values
(0x43 0x54 0x52 0x4C)
Restore EEPROM data from Backup area.
After processing packets, DYNAMIXEL reboots itself
0x03 - Reserved
- Reserved
0xFF - Reserved

Example

Example 1 Conditions

Control Table Backup Packet

H1 H2 H3 RSRV Packet ID LEN1 LEN2 INST P1 P2 P3 P4 P5 CRC1 CRC2
0xFF 0xFF 0xFD 0x00 0x01 0x08 0x00 0x20 0x01 0x43 0x54 0x52 0x4C 0x16 0xF5

ID1 Status Packet

H1 H2 H3 RSRV Packet ID LEN1 LEN2 INST ERR CRC1 CRC2
0xFF 0xFF 0xFD 0x00 0x01 0x04 0x00 0x55 0x00 0xA1 0x0C

Example 2 Conditions

Control Table EEPROM Restoring Packet

H1 H2 H3 RSRV Packet ID LEN1 LEN2 INST P1 P2 P3 P4 P5 CRC1 CRC2
0xFF 0xFF 0xFD 0x00 0x01 0x08 0x00 0x20 0x02 0x43 0x54 0x52 0x4C 0x92 0xF5

ID1 Status Packet

H1 H2 H3 RSRV Packet ID LEN1 LEN2 INST ERR CRC1 CRC2
0xFF 0xFF 0xFD 0x00 0x01 0x04 0x00 0x55 0x00 0xA1 0x0C

Sync Read (0x82)

Description

Parameters

Instruction Packet Description
Parameter 1 Low-order byte from the starting address
Parameter 2 High-order byte from the starting address
Parameter 3 Low-order byte from the data length(X)
Parameter 4 High-order byte from the data length(X)
Parameter 4+1 ID of the 1st Device
Parameter 4+2 ID of the 2nd Device
Parameter 4+X ID of the X-th Device
Status Packet Description
Parameter 1 Frist Byte
Parameter 2 Second Byte
Parameter X X-th Byte

Note : Each device individually returns a Status Packet for Sync Read instructions.

Example

Conditions

Sync Read Instruction Packet

H1 H2 H3 RSRV Packet ID LEN1 LEN2 INST P1 P2 P3 P4 P5 P6 CRC 1 CRC 2
0xFF 0xFF 0xFD 0x00 0xFE 0x09 0x00 0x82 0x84 0x00 0x04 0x00 0x01 0x02 0xCE 0xFA

ID 1 Status Packet

H1 H2 H3 RSRV Packet ID LEN1 LEN2 INST ERR P1 P2 P3 P4 CRC 1 CRC 2
0xFF 0xFF 0xFD 0x00 0x01 0x08 0x00 0x55 0x00 0xA6 0x00 0x00 0x00 0x8C 0xC0

ID 2 Status Packet

H1 H2 H3 RSRV Packet ID LEN1 LEN2 INST ERR P1 P2 P3 P4 CRC 1 CRC 2
0xFF 0xFF 0xFD 0x00 0x02 0x08 0x00 0x55 0x00 0x1F 0x08 0x00 0x00 0xBA 0xBE

Sync Write (0x83)

Description

Parameters

Instruction Packet Description
Parameter 1 Low-order byte from the starting address
Parameter 2 High-order byte from the starting address
Parameter 3 Low-order byte from the data length(X)
Parameter 4 High-order byte from the data length(X)
Parameter 5 [1st Device] ID
Parameter 5+1 [1st Device] 1st Byte
Parameter 5+2 [1st Device] 2nd Byte
[1st Device]…
Parameter 5+X [1st Device] X-th Byte
Parameter 6 [2nd Device] ID
Parameter 6+1 [2nd Device] 1st Byte
Parameter 6+2 [2nd Device] 2nd Byte
[2nd Device]…
Parameter 6+X [2nd Device] X-th Byte

Example

Conditions

Sync Write Instruction Packet

H1 H2 H3 RSRV Packet ID LEN1 LEN2 INST P1 P2 P3 P4
0xFF 0xFF 0xFD 0x00 0xFE 0x11 0x00 0x83 0x74 0x00 0x04 0x00
P5 P6 P7 P8 P9 P10 P11 P12 P13 P14 CRC 1 CRC 2
0x01 0x96 0x00 0x00 0x00 0x02 0xAA 0x00 0x00 0x00 0x82 0x87

Fast Sync Read (0x8A)

Description

Note: DYNAMIXEL Tips | Use Fast Sync and Fast Bulk Read Instruction for Speedy Communication

Parameter

Instruction Packet Description
Parameter 1 Low-order byte from the starting address
Parameter 2 High-order byte from the starting address
Parameter 3 Low-order byte from the data length(X)
Parameter 4 High-order byte from the data length(X)
Parameter 4+1 1st Device ID
Parameter 4+2 2nd Device ID
Parameter 4+n Nnd Device ID
Status Packet Description
Parameter 1 1st Device ID
Parameter 2 1st Device First Byte
Parameter 3 1st Device Second Byte
Parameter X 1st Device X-th Byte
Parameter X+1 1st Device Low-order byte from CRC
Parameter X+2 1st Device High-order byte from CRC
Parameter X+3 2nd Device Error
Parameter X+4 2nd Device ID
Parameter X+4+1 2nd Device First Byte
Parameter X+4+2 2nd Device Second Byte
Parameter 2X+4 2nd Device X-th Byte
Parameter 2X+4+1 2nd Device Low-order byte from CRC
Parameter 2X+4+2 2nd Device High-order byte from CRC
Parameter nX+4 Nnd Device X-th Byte

Note: CRC values are used for internal calculation in DYNAMIXEL to confirm packet integrity between DYNAMIXELs. You can let the main controller check CRC only at the end of Status Packet.

Note: Each device respectively returns a particular part of Status Packet in response to Fast Sync Read Instruction. For more details, see Example below.

Note: Fast Sync Read Status Packet does not perform Byte Stuffing(0xFD) process.

Example

Example Description

Fast Sync Read Instruction Packet

H1 H2 H3 RSRV Packet ID LEN1 LEN2 INST P1 P2 P3 P4 P5 P6 P7 CRC1 CRC2
0xFF 0xFF 0xFD 0x00 0xFE 0x0A 0x00 0x8A 0x84 0x00 0x04 0x00 0x03 0x07 0x04 0x20 0xF2

ID 3 Status Packet

H1 H2 H3 RSRV Packet ID LEN1 LEN2 INST ERR ID1 D1 D2 D3 D4 CRC1 CRC2
0xFF 0xFF 0xFD 0x00 0xFE 0x19 0x00 0x55 0x00 0x03 0xA6 0x00 0x00 0x00 0x84 0x08

ID 7 Status Packet

ERR ID2 D1 D2 D3 D4 CRC1 CRC2
0x00 0x07 0x1F 0x08 0x00 0x00 0x16 0xCA

ID 4 Status Packet

ERR ID3 D1 D2 D3 D4 CRC1 CRC2
0x00 0x04 0xFF 0x03 0x00 0x00 0xD1 0x9E

Bulk Read (0x92)

Description

Parameters

Instruction Packet Description
Parameter 1 [1st Device] ID
Parameter 2 [1st Device] Low-order byte from the starting address
Parameter 3 [1st Device] High-order byte from the starting address
Parameter 4 [1st Device] Low-order byte from the data
Parameter 5 [1st Device] High-order byte from the data
Parameter 6 [2nd Device] ID
Parameter 7 [2nd Device] Low-order byte from the starting address
Parameter 8 [2nd Device] High-order byte from the starting address
Parameter 9 [2nd Device] Low-order byte from the data
Parameter 10 [2nd Device] High-order byte from the data
Status Packet Description
Parameter 1 1st Byte
Parameter 2 2nd Byte
Parameter X X-th Byte

Note : Each device individually returns Status Packet for Bulk Read instruction. See the Example below for more details.

Example

Condition

Bulk Read Instruction Packet

H1 H2 H3 RSRV Packet ID LEN1 LEN2 INST P1 P2 P3 P4 P5
0xFF 0xFF 0xFD 0x00 0xFE 0x0D 0x00 0x92 0x01 0x90 0x00 0x02 0x00
P6 P7 P8 P9 P10 CRC 1 CRC 2
0x02 0x92 0x00 0x01 0x00 0x1A 0x05

ID 1 Status Packet

H1 H2 H3 RSRV Packet ID LEN1 LEN2 INST ERR P1 P2 CRC 1 CRC 2
0xFF 0xFF 0xFD 0x00 0x01 0x06 0x00 0x55 0x00 0x77 0x00 0xC3 0x69

ID 2 Status Packet

H1 H2 H3 RSRV Packet ID LEN1 LEN2 INST ERR P1 CRC 1 CRC 2
0xFF 0xFF 0xFD 0x00 0x02 0x05 0x00 0x55 0x00 0x24 0x8B 0xA9

Bulk Write (0x93)

Description

Parameters

Instruction Packet Description
Parameter 1 [1st Device] ID
Parameter 2 [1st Device] Low-order byte from the starting address
Parameter 3 [1st Device] High-order byte from the starting address
Parameter 4 [1st Device] Low-order byte from the data length(X)
Parameter 5 [1st Device] High-order byte from the data length(X)
Parameter 5+1 [1st Device] 1st Byte
Parameter 5+2 [1st Device] 2nd Byte
Parameter 5+X [1st Device] X-th Byte
Parameter 6+X [2nd Device] ID
Parameter 7+X [2nd Device] Low-order byte from the starting address
Parameter 8+X [2nd Device] High-order byte from the starting address
Parameter 9+X [2nd Device] Low-order byte from the data length(X)
Parameter 10+X [2nd Device] High-order byte from the data length(X)
Parameter 10+X+1 [2nd Device] 1st Byte
Parameter 10+X+2 [2nd Device] 2nd Byte
Parameter 10+X+Y [2nd Device] Y-th Byte

Example

Condition

Bulk Write Instruction Packet

H1 H2 H3 RSRV Packet ID LEN1 LEN2 INST P1 P2 P3 P4 P5 P6 P7
0xFF 0xFF 0xFD 0x00 0xFE 0x10 0x00 0x93 0x01 0x20 0x00 0x02 0x00 0xA0 0x00
P8 P9 P10 P11 P12 P13 CRC 1 CRC 2
0x02 0x1F 0x00 0x01 0x00 0x50 0xB7 0x68

Fast Bulk Read (0x9A)

Description

Note: DYNAMIXEL Tips | Use Fast Sync and Fast Bulk Read Instruction for Speedy Communication

Parameters

Instruction Packet Description
Parameter 1 1st Device ID
Parameter 2 1st Device Low-order byte from the starting address
Parameter 3 1st Device High-order byte from the starting address
Parameter 4 1st Device Low-order byte from the data length(X1)
Parameter 5 1st Device High-order byte from the data length(X1)
Parameter 6 2nd Device ID
Parameter 7 2nd Device Low-order byte from the starting address
Parameter 8 2nd Device High-order byte from the starting address
Parameter 9 2nd Device Low-order byte from the data length(X2)
Parameter 10 2nd Device High-order byte from the data length(X2)
Status Packet Description
Parameter 1 1st Device ID
Parameter 2 1st Device First Byte
Parameter 3 1st Device Second Byte
Parameter X1 1st Device X1-th Byte
Parameter X1+1 1st Device Low-order byte from CRC
Parameter X1+2 1st Device High-order byte from CRC
Parameter X1+3 2nd Device Error
Parameter X1+4 2nd Device ID
Parameter X1+4+1 2nd Device First Byte
Parameter X1+4+2 2nd Device Second Byte
Parameter X1+4+X2 2nd Device X2-th Byte
Parameter X1+4+X2+1 2nd Device Low-order byte from CRC
Parameter X1+4+X2+2 2nd Device High-order byte from CRC
Parameter X1+4+X2+
⋯ 4+Xn
Nnd Device Xn-th Byte

Note: CRC values are used for internal calculation in DYNAMIXEL to confirm packet integrity between DYNAMIXELs. You can let the main controller check CRC only at the end of Status Packet.

Note: Each device respectively returns a particular part of Status Packet in response to Fast Bulk Read Instruction. For more details, see Example below.

Note: Status Packet responded from Fast Bulk Read does not perform Byte Stuffing(0xFD) process.

Example

Example Description

Fast Bulk Read Instruction Packet

H1 H2 H3 RSRV Packet ID LEN1 LEN2 INST P1 P2 P3 P4 P5 P6 P7 P8
0xFF 0xFF 0xFD 0x00 0xFE 0x12 0x00 0x9A 0x03 0x84 0x00 0x04 0x00 0x07 0x7C 0x00
P9 P10 P11 P12 P13 P14 P15 CRC1 CRC2
0x02 0x00 0x04 0x92 0x00 0x01 0x00 0x20 0xF2

ID 3 Status Packet

H1 H2 H3 RSRV Packet ID LEN1 LEN2 INST ERR ID1 D1 D2 D3 D4 CRC1 CRC2
0xFF 0xFF 0xFD 0x00 0xFE 0x14 0x00 0x55 0x00 0x03 0xA6 0x00 0x00 0x00 0x67 0xA4

ID 7 Status Packet

ERR ID2 D1 D2 CRC1 CRC2
0x00 0x07 0xA5 0x01 0x24 0x74

ID 4 Status Packet

ERR ID2 D1 CRC1 CRC2
0x00 0x04 0x1F 0xD9 0xC1