Setting up Maestro Command Center on Raspbian

I am trying to setup the Maestro Command Center on a Raspberry Pi running Raspbian.

Seems like the code is older, and the instructions not quite up to date.

Has anyone recently installed the Maestro Linux code on a RPi 3B+?


We do not support running the Maestro Control Center software on ARM processors. Please see my response in this thread regarding a similar issue.

- Amanda

Is the code available for Maestro Control Center? I think it just needs to be recompiled under the latest version since winforms works with later versions, just not the version that the original Maestro Control Center was compiled under…

Actually, I am not all that interested in Maestro Control Center itself running on RPi. I need to understand how to use USB commands for Maestro on RPi.

There is a little of that in UscCmd. But even UscCmd throws errors if you install the latest version of mono: “The runtime version supported by this application is unavailable. Using default runtime: v4.0.30319”. I believe the original was built against v2. Can you confirm any of this?

Note that the example in the guide, Raspberry Pi – Real Time Control via Android HTML5, doesn’t exist as far as I can tell. The link takes you to a page where Martin Sant says he rewrote it for Wixel…

It looks like if you use serial instead of USB, you can only use the servo control functions of the Maestro. Whereas using USB, you can configure channels for Input and Output, with Serial, connecting RX to TX, and TX to RX, you can only use Servo. Is that correct? So you have to connect and program via USB if you want the full functionality…


I just tried running the Maestro Control Center software for Linux (maestro-linux-150116.tar.gz) on Raspbian 9 and it seemed to mostly work. The only issue I noticed was that the “Advanced Pulse Control” box in the “Channel Settings” tab was not visible. I was using Mono 4.6.2, and I installed it with this command:

sudo apt-get install mono-devel

It seems like the situation has improved greatly: in previous years, bugs in the Mono’s implementation of WinForms for ARM processors prevented the Maestro Control Center from functioning at all.

The message is not an error; it is just a warning that you can ignore. We cannot recall the version of Mono we used to build the software.

We do not provide the source code for the Maestro Control Center, but we do provide most of the source code of the command-line utility, UscCmd, which can do most things the Maestro Control Center can. You can find the UscCmd source code in the Pololu USB SDK. You can either compile it yourself and use it to send USB commands to the Maestro, or you can use the code as a reference to understand the Maestro’s native USB interface. We do not provide any documentation for the Maestro’s native USB interface except for the code and comments in the SDK.

Yes, the Maestro’s native USB interface can access many more features than the TTL serial interface or the virtual USB serial ports. (By the way, the Maestro has other serial commands for controlling the execution of the user script, not just commands for controlling servo channels. You can find more details under the “Serial Script Commands” section of the Maestro user’s guide.)

It looks like the original content for the RPi Android HTML5 Realtime Servo Control project is still there. It starts after the notes about Wixels and XBees, below the horizontal line.


Thanks for all the info.

Did you have to do something special to get this to work?

When I run mono UscCmd --list, I get System.DllNotFoundException: libusb-1.0

That error message indicates that libusb 1.0 was not found. To fix it, run:

sudo apt-get install libusb-1.0-0-dev


Thanks David, but now I get System.Exception: Error connecting to device to get serial number (2 of 6, 023dd518). --> System.Exception: Access denied.

Nevermind, after I restarted the Pi it worked.



I am a C# windows programmer. I am not familiar with mono.

I have the SDK open in Visual Studio 2017. I have updated the solution to the latest versions. Do I need to do anything specific to make changes and run them under mono?

Just compile and move the dll over to the Pi as is?

Is there a compiler for mono? Or does that happen at runtime on the Pi?



The Mono project includes both a C# compiler and a .NET runtime, and you can run both on the Raspberry Pi. I am not sure how well it will work if you compile with Visual Studio and copy the binaries to a Raspberry Pi. I recommend carefully following the instructions in the SDK’s README file. In particular, see the section entitled “Compiling C# code in Linux”.


I didn’t know there was a readme in the SDK. That seems to clear up a lot.