Intro
The Dynamixel Bus packats are tranmitted over a half-duplex serial interface at baud rates up to 3Mbs. The host initiates communication by transmitting a request and then waits for a response, if any, from the servo. There are two broad versions of the protocol:
- Version 1: Dynamixel product line (e.g. AX, MX, etc).
- Version 2: Dynamixel Pro product line.
Currently, only Version 1 of the protocol is supported.
Supported Packets Types
Ping | Pings the specified servo. |
Read | Read byte/word from the specified servo. |
Write | Write byte/word to the specified servo. |
SyncWrite | Synchonize write data to a specified set of servos. |
Packet Fields
Field | Pos | Len | Values | Notes |
FRAME | 0 | 2 | 0xffff | All tx/rx packets begin with the frame bytes. |
id | 2 | 1 | 0-253, 254 | Servo identifier: 0-253, BROADCAST: 254 |
len | 3 | 1 | 2-255 | Length of packet excluding FRAME, len, and chksum. |
inst | 4 | 1 | enum | Instruction. PING: 1, READ: 2, WRITE: 3, SYNC_WRITE: 131 |
addr | 5 | 1 | 0-255 | Address of servo control table data. |
val_len | 6 | 1 | 1, 2 | Length of servo control table data. |
val | - | 1 | byte | Byte read/written from/to servo control. |
val_lsb | - | 1 | byte | Word LSB read/written from/to servo control table. |
val_msb | - | 1 | byte | Word MSB read/written from/to servo control table. |
chksum | len+3 | 1 | byte | Checksum over packet excluding FRAME. |
Packet Formats
Ping
TX (6) | 0xff | 0xff | id | 2 | PING | chksum |
RX (6) | 0xff | 0xff | id | 2 | PING | chksum |
Read Byte
TX (8) | 0xff | 0xff | id | 4 | READ | addr | 1 | chksum |
RX (8) | 0xff | 0xff | id | 4 | READ | addr | val | chksum |
Read Word
TX (8) | 0xff | 0xff | id | 4 | READ | addr | 2 | chksum |
RX (9) | 0xff | 0xff | id | 5 | READ | addr | val_lsb | val_msb | chksum |
Write Byte
TX (8) | 0xff | 0xff | id | 4 | WRITE | addr | val | chksum |
RX (6) | 0xff | 0xff | id | 2 | WRITE | chksum |
Write Word
TX (9) | 0xff | 0xff | id | 5 | WRITE | addr | val_lsb | val_msb | chksum |
RX (6) | 0xff | 0xff | id | 2 | WRITE | chksum |
Sync Write Byte
TX (len+4) | 0xff | 0xff | BROADCAST | 4+2*n | SYNC_WRITE | addr | 1 | id_1 | val_1 | ... | id_n | val_n | chksum |
no response
Sync Write Word
TX (len+4) | 0xff | 0xff | BROADCAST | 4+3*n | SYNC_WRITE | addr | 2 | id_1 | val_lsb_1 | val_msb_1 | ... | id_n | val_lsb_n | val_msb_n | chksum |
no response