OpenCM 9.04

OpenCM 9.04 by Robotis

Connection Type
Number of servos
Audio Support
Camera Support

The OpenCM9.04-C is the same as the OpenCM9.04-B except that the two TTL connectors (used for the AX series) have been replaced by two XL-Type TTL connectors (used for the XL-320). Both versions C and B are compatible with this firmware to connect with ARC. This controller is also used in the Robotis Bioloid Mini that can be controlled by ARC with these firmware.

Controller Specs

OpenCM9.04 is an open-source controller that runs on a 32bit ARM Cortex-M3. The 3-Pin connector(XL-type) controls DYNAMIXEL XL-320 with TTL communication in ARC using the Dynamixel plugin. For AX & MX series Molex connectors, the OpenCM Expansion Board is needed

Robotis Dynamixel Robot Skill

The chances are that you're using this OpenCM 9.04 board with Robotis dynamixel servos. If that is the case, the Robotis Open CM9.04 controller can support servos connected directly to itself or through the expansion board. Using only the controller, UART #0 is used in ARC. If using the expansion board, UART #2 is used in ARC.

Related Tutorials

Related Hack Events

Related Questions


Upgrade to ARC Pro

Experience the transformation – subscribe to Synthiam ARC Pro and watch your robot evolve into a marvel of innovation and intelligence.


Hi, i followed the instructions and connected the opencm9.04 with AX12-A and every thing is fine but "Get & set all servo positions" is not responding in EZ- Builder. Kindly guide me/


Did you watch the video tutorial?


Yes Sir. After going through that only i have started building my project.



I am getting an error message when I try to upload the firmware to my OpenCM9.  I have followed the steps in the video successfully up to that point.  I am using Parallels VM Windows 10 on a MacBook Pro.  This is the message: Arduino: 1.8.12 (Windows 10), Board: "OpenCM9.04 Board, OpenCM Bootloader"

Sketch uses 50080 bytes (42%) of program storage space. Maximum is 116736 bytes. Global variables use 11160 bytes of dynamic memory. C:\Users\clank\AppData\Local\Arduino15\packages\OpenCM904\tools\opencm_tools\0.0.2/win/opencm9.04_ld.exe COM10 57600 C:\Users\clank\AppData\Local\Temp\arduino_build_186828/EZ-OpenCM9.ino.bin 1 opencm An error occurred while uploading the sketch

Any suggestions?  I appreciate any help.


Looks like the toolset isn’t installed? not quite sure because there’s no detailed error from the Robotis Arduino configuration. If they have a website for support on using their Arduino toolset, id first start there. But if it was me, I’d probably blast through the installation of their toolset one more time. Reboot a bunch and pull my hair. Maybe update the Arduino ide.


LOL. I will let you know how it goes.  I will clean everything off and start fresh.  Thanks!


Do you think it’s an issue with the usb driver in the parallel emulator?


Maybe...although I have not had this issue with my MINI. But I did not have to install a separate driver for it... but I will reinstall that as well.


Just an update:  I have not been able to get Arduino to recognize the board.  I redid all of the Arduino installs (IDE, driver, etc.).  Then I tried the Open CM IDE (that is based on Arduino) and it has an error message that the board is not responding.  I have a question out to Trossen Robotics where I purchased the board to see if they have any ideas.  I have one more resource to see if there is some different way to interpret the instructions on the Robotis site.  I haven't had issues with my VM previously.  Heavy sigh.  I am also going to order the EZ IoT and cable to see if that works with my setup.  I really wanted the read/write capability of the servos...and I have not created cables before so would need detailed instructions.  :-)  I appreciate your help.


the EZ-Robot IoTiny doesn't support reading and writing because it doesn't have a hardware uart. You'd need the EZ-Robot EZ-B v4 for that. Or, there might be another arduino that supports it but not sure what.

I'm super surprised the open cm usb won't work with the parallels. Can you run the arduino ide to program the open cm in mac os?


I knew that the IoTiny did not support both read and write but I wanted an inexpensive entry to experiment.  :-). I had tried using Mac OS previously and got a similar message.  HOWEVER, I found the information from Robotis on how to "recover" the board if it is connecting but not accepting an upload.  And it worked!  I just successfully connected to the ARC software.  Tomorrow I will try out moving a Dynamixel and hopefully move forward with my robot arm.  I am excited!  Having the IoTiny will give me a chance to compare and try audio, so it's all good.  Thank you so much for your help.  I am sure we will chat again at some point.


Hi DJ,

Unfortunately I am now having trouble with the final step using the Dynamixel plugin.  It shows a successful install and the option is available to add when I am in ARC.  I get the following error message. Screen Shot Error Message.pdf (Hopefully you can open the file.). It sounds like it is looking for ARC.DLL... I removed the plugin and reinstalled but that did not fix it.

I will continue to look for previous discussions on the topic, but I am hoping you have an idea on the solution.  Feel free to redirect me if needed.

#13   — Edited

You're using ARC - and plugins are only supported in ARC. Install ARC to use plugins :)

ARC is being deprecated and will no longer exist in a week or two. See details of ARC here:


Beautiful.  It is working now.  Thanks again!


Hi again.  I apparently spoke a bit too soon.  ARC is working, plugin is working, board is connecting...the software is not finding my Dynamixel AX12A.  I have confirmed the ID numbers and baud rates and which UART port the OpenCM Expansion Board uses (UART 1). I reviewed the Hack video and the instructions.  I am using the openCM9 with the expansion board so maybe that is what's different?  Your thoughts?  As always, I do appreciate your help.


To be more clear - I tried both UART 0 and 1 in the plugin and still no connection.


I suspect the expansion board doesn't use the digital pin in the code to control the direction of the uart. If you open the open cm arduino firmware that we created, there's some comments about the undocumented pin that controls the direction of the uart. Switches between tx and rx. If that pin isn't being connected to the expansion board, it won't work. If you can find documentation on how that expansion board works, then the code can be modified for it.

What is the reason for not using the open cm directly with the ax12 servos? (Removing the expansion board from the picture)

PS, you will notice robotis makes great servos, but they severely lack documentation and modular implementation. Getting stuff to work with their controllers is mostly luck.

#18   — Edited

Bummer on the complexity and yes...Robotis has been a challenging platform for both those reasons.  Five or six years ago you had to trouble shoot all of the demo code, etc.  But I have still enjoyed them.  Meanwhile, I am using the Expansion board because I assumed that is the only way for me to connect to the OpenCM9 board - as it has no AX12A pins.

The good news is that my IoTiny is on the way.  I may also splurge for my birthday and get JD and the smaller rover.  I am turning 60 after all.  LOL. :-)


Hi DJ,

Hope all is well.  My PincherArm with Dynamixel (from Trossen) is working now with the Open CM thanks to all of your help.  I have been working with the Auto Position control and had a couple of questions.  I have reviewed the manual and the tutorials.  First - the servo at the base of the arm that rotates the arm left and right does not move with the controls I have tried (Horizontal, Vertical and Auto.). It is connected and getting enough power - and you can ping it.   All of the other joints work.  Do you think that it could be the weight of the arm - maybe a torque strength issue?  The servo does lie flat, but I wouldn't think that was a problem.  (These are AX12As). It works with the other controllers and software so I think that the build is correct.

My other question is the speed of the servos.  I set the Action speed as slow as it can go and testing each frame it is slower - but when I save and exit and then use the execute button it is very fast - which throws the weight of the arm forward.

All in all is pretty cool so far....I am building a small robot to play with the IoTiny.

One more question - is there a way to set the movement limits on servos for the Auto Position Control?

Thanks again for your help.  Vicki