Welcome to Synthiam!

The easiest way to program the most powerful robots. Use technologies by leading industry experts. ARC is a free-to-use robot programming software that makes servo automation, computer vision, autonomous navigation, and artificial intelligence easy.

Get Started
Resolved Resolved by ptp!

Arcpi / Ezbpi On Raspberry Pi 3 Errors


I am trying to run EZ-BuilderPi and EZBPi on a Raspberry Pi 3. I have tried installing them on two different versions of Raspbian, the latest release and the 11/13/18 (stretch) version, which was released closer to "DJ's 9th Live Hack" (I have been following that YouTube tutorial). When I execute EZ-BuilderPi, I get the following error before ARC launches:


pi@raspberrypi:~/EZ-BuilderPi $ mono EZ-Builder.exe
Unknown heap type: #GUlD

Unknown heap type: #Blop

Unknown heap type: #GUlD

Unknown heap type: #Blop

The help viewer could not load. Maybe you don't have chmsee installed or haven't set MONO_HELP_VIEWER. The specific error message was: ApplicationName='chmsee', CommandLine='"https://synthiam.com/Software"', CurrentDirectory='', Native error= Cannot find the specified file
X11 Error encountered:
Error: BadMatch (invalid parameter attributes)
Request: 12 (0)
Resource ID: 0x1C013B8
Serial: 48245
Hwnd: Hwnd, Mapped:True ClientWindow:0x1C013B9, WholeWindow:0x1C013B8, Zombie=False, Parent:[Hwnd, Mapped:True ClientWindow:0x1C013B7, WholeWindow:0x1C013B6, Zombie=False, Parent:[]]
Control: System.Windows.Forms.Panel, BorderStyle: None at System.Environment.get_StackTrace () [0x00000] in <8f2c484307284b51944a1a13a14c0266>:0
at System.Windows.Forms.XplatUIX11.HandleError (System.IntPtr display, System.Windows.Forms.XErrorEvent& error_event) [0x00000] in :0
at System.Drawing.GDIPlus.GdipCreateFromXDrawable_linux (System.IntPtr , System.IntPtr , System.IntPtr& ) [0x00000] in <1917aa1c39d94b1a91807b8cd9f03350>:0
at System.Drawing.Graphics.FromXDrawable (System.IntPtr drawable, System.IntPtr display) [0x00000] in <1917aa1c39d94b1a91807b8cd9f03350>:0
at System.Drawing.Graphics.FromHwnd (System.IntPtr hwnd) [0x00000] in <1917aa1c39d94b1a91807b8cd9f03350>:0
at System.Windows.Forms.Control.CreateGraphics () [0x00000] in :0
at System.Windows.Forms.TextBoxBase.CreateGraphicsInternal () [0x00000] in :0
at System.Windows.Forms.Document.owner_VisibleChanged (System.Object sender, System.EventArgs e) [0x00000] in :0
at System.Windows.Forms.Control.OnVisibleChanged (System.EventArgs e) [0x00000] in :0
at System.Windows.Forms.Control.OnParentVisibleChanged (System.EventArgs e) [0x00000] in :0

Once ARC launches, if I try to open a previously saved project, a window pops up with a similar message:


Version: 2019.05.08.00

System.IO.DirectoryNotFoundException: Directory 'EZ-Builder/Examples' not found.
at System.IO.Directory.ValidateDirectoryListing (System.String path, System.String searchPattern, System.Boolean& stop) [0x00091] in <8f2c484307284b51944a1a13a14c0266>:0
at System.IO.Directory.GetFileSystemEntries (System.String path, System.String searchPattern, System.IO.FileAttributes mask, System.IO.FileAttributes attrs) [0x00023] in <8f2c484307284b51944a1a13a14c0266>:0
at System.IO.Directory.GetDirectories (System.String path, System.String searchPattern) [0x00000] in <8f2c484307284b51944a1a13a14c0266>:0
at System.IO.Directory.GetDirectories (System.String path) [0x00000] in <8f2c484307284b51944a1a13a14c0266>:0
at EZ_Builder.FormOpenEZB.XtZsj07xQ5 () [0x0000b] in <8a9b654daa5e46dc9cae530155c2d0ff>:0
at EZ_Builder.FormOpenEZB..ctor (System.String folder) [0x0002d] in <8a9b654daa5e46dc9cae530155c2d0ff>:0
at (wrapper remoting-invoke-with-check) EZ_Builder.FormOpenEZB:.ctor (string)
at EZ_Builder.FormMain.MenuClick_Open (System.Object sender, System.EventArgs e) [0x00027] in <8a9b654daa5e46dc9cae530155c2d0ff>:0
at (wrapper delegate-invoke) :invoke_void_object_EventArgs (object,System.EventArgs)
at System.Windows.Forms.RibbonItem.OnClick (System.EventArgs e) [0x00042] in <8137470ea8f14440974ce9168ccc636e>:0
at System.Windows.Forms.RibbonButton.OnClick (System.EventArgs e) [0x0003f] in <8137470ea8f14440974ce9168ccc636e>:0
at System.Windows.Forms.RibbonMouseSensor.Control_MouseClick (System.Object sender, System.Windows.Forms.MouseEventArgs e) [0x00041] in <8137470ea8f14440974ce9168ccc636e>:0
at System.Windows.Forms.Control.OnMouseClick (System.Windows.Forms.MouseEventArgs e) [0x0001c] in :0
at System.Windows.Forms.Control.HandleClick (System.Int32 clicks, System.Windows.Forms.MouseEventArgs me) [0x0005d] in :0
at System.Windows.Forms.Control.WmLButtonUp (System.Windows.Forms.Message& m) [0x00071] in :0
at System.Windows.Forms.Control.WndProc (System.Windows.Forms.Message& m) [0x0016f] in :0
at System.Windows.Forms.Ribbon.WndProc (System.Windows.Forms.Message& m) [0x00191] in <8137470ea8f14440974ce9168ccc636e>:0
at System.Windows.Forms.Control+ControlWindowTarget.OnMessage (System.Windows.Forms.Message& m) [0x00000] in :0
at System.Windows.Forms.Control+ControlNativeWindow.WndProc (System.Windows.Forms.Message& m) [0x0000b] in :0
at System.Windows.Forms.NativeWindow.WndProc (System.IntPtr hWnd, System.Windows.Forms.Msg msg, System.IntPtr wParam, System.IntPtr lParam) [0x0008e] in :0
I searched Synthiam Community for a similar thread, so forgive me if this issue has been addressed in a previous post and I missed it. I am happy to answer any questions. Does anyone know what I could have done wrong during the installation?


Related Hardware Raspberry Pi


Upgrade to ARC Pro

Harnessing the power of ARC Pro, your robot can be more than just a simple automated machine.

you ordered 90 servo's:p wow talking about comitment.haha lol.
so solution lies with robotis then.
#89   — Edited
I've read up briefly up the thread. Why can you not set the Dynamixel plugin in ARC to 1m bits for baud rate? Is there a reason you want to change the baud rate to something other than 1M? I set all my dynamixels at 1M.

I have many different versions of the Dynamixels and some work and some don't with ARC. I have two servos worth $600 that refuse to work. I've had best results with the MX series. Dj found the night of that hack, that they have different protocols for different series of servos (MX, XM,XL, etc)...which is a really bad idea from a company standpoint. ARC supports 3 protocols.....but its obvious there are more needed to cover their entire line of servos. Many servos are now discontinued and will be gone with stock including the AX-12. New series of servos are now in preorder.

So what will the new servos have as far as protocol?! Only testing will tell.

EDIT: OK I see you are using the IOTINY. so you have to change the baud rate. 

Check to see that your port number matches the port on the iotiny when programming the servos id and baud using the plug in configuration.
I totally agree, those servos are great but they are super annoying to deal with...:D

So far I had the best luck using the Robotis OpenCM IDE, because on Arduino IDE the Examples also need tweaking to some extend, while the Robotis Software works pretty straightforward...

But one thing that is to be taken into account, you will always have to have some sort of a microcontroller for sending and receiving data from those servos.. eg an EZB, OpenCM or something similar! 
The Raspberry Pi and its GPIOs are not made for this!:)
Hello fxrtst,

Thank you for your input. I agree with your statements about the different protocols. Robotis makes excellent servos, but I find them challenging to work with... I can say that their support is responsive... I am using the IoTiny because my other EZ-B v4 boards are in other robots. I may order another board or "borrow" one from a different robot.

Also, I will go back and double check the port number.
#92   — Edited
Hey Mickey666Maus, Yes, it's increasingly beginning to look that way. In post #55, ptp suggested that I use a U2D2, found here:


I ordered one and should have it by Thursday or Friday. It would even be great if I could get the EZ-B IoTiny to work. It is small enough to be mounted inside of the MAKI robot (the EZ-B v4 is a bit too large), but I still want to use the Google AIY voice kit for speech... 

Also, here is the latest response from Robotis (spoiler, they also suggest the U2D2):

Hi Tim,
Thanks for providing the additional information. Based on what you shared here's what we believe is causing this:

1)The first thing that stands out is that the OpenCM9.04 isn't fully supported on the DYNAMIXEL Wizard 2.0.
A) Normally other ROBOTIS software allows users to interact with the OpenCM9.04, However because the software is unable to see the OpenCM9.04 you are unable to make necessary changes to a firmware in the OpenCM9.04.

B) In the OpenCM9.04 firmware Address 12 sets the DXL Baud Rate which determines what baud rate the OpenCM9.04 uses to look for DYNAMIXELs. Because you are unable to change the baud rate in the OpenCM9.04 firmware the software is unable to change the baud rate DYNAMIXELs.

C) The U2D2 is ROBOTIS' recommend Interface device for the DYNAMIXEL Wizard 2.0

2)Using  R+ Manager 2.0 will allow you to make these changes using the OpenCM9.04.
Hey there, I never checked the price tag on those servos!
Did you say you ordered 90 OF THOSE???

Well, if so...or even if you are just using a few of them, I can totally understand that you need to get them to work!!:D

I would suggest we are going step by step, with the hardware at hand!!

So could you confirm, that your servos are working with the example code provided by Robotis for the OpenCM board!
Please use the Robotis software to upload, the code will not work with the Arduino IDE...

So we can confirm, that you are able to drive those servos, the way that Robotis wants us to drive them!!:)
/* Dynamixel Basic Position Control Example

Turns left the dynamixel , then turn right for one second,

CM900 O
OpenCM9.04 O

Dynamixel Compatibility
AX MX RX XL-320 Pro
CM900 O O O O X
OpenCM9.04 O O O O X
**** OpenCM 485 EXP board is needed to use 4 pin Dynamixel and Pro Series ****

created 16 Nov 2012
/* Serial device defines for dxl bus */
#define DXL_BUS_SERIAL1 1 //Dynamixel on Serial1(USART1) <-OpenCM9.04
#define DXL_BUS_SERIAL2 2 //Dynamixel on Serial2(USART2) <-LN101,BT210
#define DXL_BUS_SERIAL3 3 //Dynamixel on Serial3(USART3) <-OpenCM 485EXP
/* Dynamixel ID defines */
#define ID_NUM 1
/* Control table defines */
#define GOAL_POSITION 30

Dynamixel Dxl(DXL_BUS_SERIAL1);

void setup() {

// Dynamixel 2.0 Baudrate -> 0: 9600, 1: 57600, 2: 115200, 3: 1Mbps
Dxl.jointMode(ID_NUM); //jointMode() is to use position mode

void loop() {
//Turn dynamixel ID 1 to position 0
Dxl.writeWord(ID_NUM, GOAL_POSITION, 0); //Compatible with all dynamixel serise
// Wait for 1 second (1000 milliseconds)
//Turn dynamixel ID 1 to position 300
Dxl.writeWord(ID_NUM, GOAL_POSITION, 300);
// Wait for 1 second (1000 milliseconds)
Hey Mickey666Maus,

Yes, I am invested in getting these servos to workxD 
Also, here is an image of those robots assembled:

User-inserted image

I forget my power supply at my shop yesterday, but I grabbed it this morning. I will test the example code after lunch. I also received the U2D2 yesterday, so I will test that as well. Lastly, if I have time today I would like to install EZBPi server onto an OpenCM9.04 and test that. 

Thanks again for everyone's help.
hi that looks awesome.are there more pics of front and back from the robots you make.
Thank you Nomad 6R, here are some additional photos:
User-inserted image

User-inserted image

User-inserted image

User-inserted image
o wow that looks awesome.great colors to.i cant wait to see them in action.
Sweet, you own your private little robot army now!!:)

And yes the EZBPi server on the OpenCM would be the best option if you want a smooth ARC integration...I am sure that @DjSures will also update the plugin code, if you are having trouble to get those servos working!!

Let us know, how things are evolving!!:)
Btw, whats that power supply that you are using...and I am curious about that screen too!!:D
#101   — Edited
Oh, but that's cool too right?:)

Seems like there are already a lot of people interested in your robot!!
ARC has a nice, and easy to use GUI...so it should get a lot easier for anyone to get started with MAKI!!

I experienced that ARC is a bit slow when running on the Raspberry Pi, but I also only tried it on the 3B...
The new Pi should have more than enough juice to run the software I guess!:)
Thanks to everyone who commented on this thread, your input was very useful. Special thanks to ptp who helped me offline solve this issue. I can now run EZBPi on my Raspberry Pi 3 B+ as well as control Dynamixel servos (XL430's) using the Dynamixel plugin (ARC is running on my Windows laptop). This is thanks to ptp's version of EZBPi server, EZB Server (BlueBerry Server)

In addition to the Raspberry Pi 3 B+, I am also using an OpenCM9.04 connected to the Pi via USB. The XL430 servos have a default baud rate of 1 Mbps, so I made sure that the DXL baud rate was also set to 1 Mbps on the OpenCM9.04. I am powering the OpenCM9.04 board directly from a 12v power supply. If you are using an OpenCM 485 Expansion Board, be sure to change the channel to 1, otherwise leave it set to the default which is 0. 

To install EZB Server (BlueBerry Server), follow ptp's setup instructions; in addition, you will also have to follow these instructions (also provided by ptp) if you are using an OpenCM9.04:

1) Install opencm usb port settings :
source: http://emanual.robotis.com/docs/en/parts/controller/opencm904/

run those 4 lines:


wget https://raw.githubusercontent.com/ROBOTIS-GIT/OpenCM9.04/master/99-opencm-cdc.rules
sudo cp ./99-opencm-cdc.rules /etc/udev/rules.d/
sudo udevadm control --reload-rules
sudo udevadm trigger
after connecting the opencm you can confirm is available:


ls /dev/ttyA*

you should see the serial device: /dev/ttyACM0

3) Update your Blueberry repository


cd ~/BlueberryServer (or whatever location)
git pull

the last command updates your local repository

4) Start the BlueberryServer:

4.1 help with the options:


python3 Main.py --help

4.2 use opencm as serial ARC uart0 :


python3 Main.py --uart0=/dev/ttyACM0

4.3. use opencm and picamera


python3 Main.py --uart0=/dev/ttyACM0  --camtype=picamera

*Other notes:

When using XL430 servos, in the Dynamixel plugin settings, set the baud rate to 1000000 (unless you have changed the default setting) and use UART Port #0. When moving the servos to different positions, the movement was very "jerky" until I increased the number of Steps. 

This is a great first step and I am happy that I am able to run EZBPi server on a Raspberry Pi, but ultimately I would like to run ARC on the Pi as well. I will update this post once I am able to run ARC on the Pi with this version of EZB Server. Once I get "most" of the bugs worked out, I will also let you know when the STL files will be available for download (if you are interested in building your own MAKI):) I need to solve the interpolation issue which I am experiencing. Right now I am not able to slow the movements of the servos. I will try playing with the Delay/Step settings more, as well as changing the Global Max servo Positions from 180 to 4095...

*Please let me know if anyone has any input on this issue.

There is also just a bit of delay in the RPI camera feed. I am hoping that once I am able to run both EZB Server and ARC on the same Pi, that delay will be reduced. 

Thanks again everyone:D
Nice update...good to see you are making progress on setting up your robot!!:)
I’m watching this. Haven’t come across any trouble with ARC I’m the pi yet to reproduce... 

As for smoothness of servos, you don’t have to use 4095, it can be 1024 or even 512, which increase the resolution significantly 

the servo speed, steps and delay will help quite a bit. Once you experiment with the values and their affect, it’ll make a lot of sense
#106   — Edited
@DJSures are there any legal issues with making an image of Raspian or another Linux distro with ARC, which is ready to use, available for download?
Or is it just to early to do so because there are still a lot of changes at this time of development?
I’d have to research that answer. Let me know if you come across something. 

the only time I’ve had someone reach out directly with a raspberry pi ARC issue was because they were trying to load ARC from text mode. They forgot to load the xwindows GUI first.