How to communicate with Dobot using raw protocol

  1. Download the serial debug terminal:

  2. Install the software

  3. After install the software, open it.

  4. Open DobotStudio to check which COM port Dobot Magigian uses(Don’t connect).

  5. Change the settings of the RealTerm:

  6. The original Baud setting of the Port tab is 57600, we must change this to 115200. If the port number is not the same as DobotStudio, change it.

The original state of the Open button is pressed. To apply the changes, click it to make it unpressed, and click it again to make it pressed.

If a warning window pops up, just click OK if the port is correct.

  1. Navigate to the Send Tab, input “AA AA 02 0A 00 F6”(Space seperated), and click as Hex.

    And Dobot will return some data.
  2. Some other collections of commands using raw protocol(Refer to the Dobot Communication Protocol):

SetPTPCmd(MOVL mode, x:250 y:0 z:0 r:0):AA AA 13 54 03 01 00 00 7A 43 00 00 00 00 00 00 00 00 00 00 00 00 EA
x, y, z, r are floating number, and we can refer to IEEE754 for the memory format.
And it returns an echo command containing the index of the SetPTPCmd in Dobot Magician(Auto increment)

GetPose:AA AA 02 0A 00 F6

And it returns an echo command containing current pose of Dobot Magician

Refer to the Dobot communication protocol document for other commands.

DOBOT 通訊協議 SetPTPCmd
A very simple example for Dobot in C#

Hi Eric,

I’m trying this out. I get a response for “AA AA 02 0A 00 F6” but not for “AA AA 13 54 03 01 00 00 7A 43 00 00 00 00 00 00 00 00 00 00 00 00 EA” It doesn’t respond with the SetPTPCmd index.


Sorry the last one should be “B”, not A. The correct hex data is shown as below:
AA AA 02 0A 00 F6" but not for "AA AA 13 54 03 01 00 00 7A 43 00 00 00 00 00 00 00 00 00 00 00 00 EB



Can you break down the hex a bit more?

Header = AA AA
Length = 13
ID = 54
ctrl (rw,isQueued) = 03
Params = 01 00 00 7A 43 00 00 00 00 00 00 00 00 00 00 00 00
Checksum = EB

For Params:
ptpmode = 01
x = 00 00 7A 43
y = 00 00 00 00
z = 00 00 00 00
r = 00 00 00 00

Is this correct?


Eric, I was able to verify what I have above is correct. Thanks!


Yes you’re right! I’ll send you a software to calculate the check code if you need one. Please leave your mailbox here, tks!


hi Eric,
Can you give me a piece of software to test the code I found that he is still difficult for me to understand.Thanks!


Hi lang, could you please leave your mailbox to me? TKS!


why x parameters is 00 00 7A 43 instead of 255 and how can i change the pose properly?

GetDeviceVersion response mismatch

Hi Eric,
this is very halpfull, i´m starting to understand. i need that software to calculate the check code too, can i have it, please?

This is the link for downloading this tool, hope it helps you.


Hi Eric,
I am using the communication protocol to programm and everything works fine, except the conveyor belt.
The conveyor belt is plugged in in stepper1 and with the DobotStudio it works without problems. I read, that speed is a INT worth and with the help of the tool you gave us, I tryed AA AA 06 87 01 00 01 00 42 35 but no results.
How can I start thr Belt with Protocol?


I have the same problem but also with the slider rail. Did you solve the issue if so can you share what you did?


Hi Konstantin. I connected the expansion motor (extruder) to the stepper1 of the Magician, then sent “AA AA 06 87 01 00 01 00 42 35”as Hex on the RealTerm Serial Capture Program, which can make the motor run.


Hi Wouter. Are you using the extended motor SetEMotor API in the communication protocol?
Can I see the hexadecimal result calculated by you according to the corresponding command packet format?


I have the conveyor belt working. But for the slider rail not but that is not setEmotor right? in the protocol 1.15 document they talk about a version I probably defined version wrong.

I hope you can help me with that


Determine the version of the sliding rail: You can view their labels. If label shows V2, it is the V2 version. If there is no label on the physical object, it means the V1 version.


I know how to find out what version it is but I don’t get it to work on v1 or v2 we have both sliding rails. I think it is because how you need to specify it in the protocol but I don’t know how exactly because the data type is called Version and not Int or Float or something.

Is it possible you can send me both communication strings how the define and move the sliding rail.


Hi, wouter. Here is the communication strings:AA AA 04 03 02 01 01 F9


How do you make the conveyor belt work? Could you please tell us the detailed process? Try to see if the slide rail can be implemented in the same way