Pololu Mini Maestro 24 Servo Controller

Hi I am a absolute beginner for Mini Maestro Servo Controller. I have loads of questions to ask.
I am going to connect Pololu Mini Maestro 24 Servo Controller to my Beaglebone Black board running custom compiled Linux using USB. I want to control multiple servos connected to Pololu Mini Maestro 24 Servo Controller using a program running in my Beaglebone Black.

User’s Guide says, Pololu USB Software Development Kit allows use of more advanced native USB commands.
I would like to know what sort of advancement I can achieve over Virtual COM port by using native USB commands?
If I open my /dev/ttyACM0 and write to it and read from it, what are the features/abilities I am missing which can be achieved through native USB commands

How can i configure channels mode(servo/input/output) and if its servo mode set range and neutral settings for a channel in my program. (without using Maestro Control Center)

Which protocol should i use to control Pololu Mini Maestro 24 Servo Controller?
User guide mentions 3 protocols,
Compact Protocol
Pololu Protocol
Mini SSC Protocol


There are many more features that the Maestro’s native USB interface can access than through its serial interface, such as the ability to change configuration parameters and select a Maestro device by its serial number. You could compare the Maestro’s serial commands to the Maestro Control Center, which uses the Maestro’s native USB interface, to see what commands are accessible through native USB and not through serial. If you want more details about those commands, see the SDK’s source code and comments for the Maestro. The source code serves as our main documentation of the Maestro’s native USB interface.

To configure the Maestro channels without using the Maestro Control Center, you could use UscCmd (the command line utility that comes with the Maestro Control Center). The UscCmd takes a Maestro settings file as an input and applies the settings to the Maestro, but it is not particularly easy to write or edit a Maestro settings file. To see a description of the commands for UscCmd, type usccmd with nothing else on the command line. If you want to get a better understanding of how UscCmd works, you can see its C# source code in the Pololu USB Software Development Kit.

If you decide to use the serial interface, I recommend using the Compact Protocol, since it is the simplest way to access all features of the serial interface. The main reason to use the Pololu Protocol would be if you were using multiple devices on the same serial line, and the main reason to use the Mini SSC Protocol would be if you were using legacy software that was designed for that protocol. These three sub-protocols that the Maestro responds to are documented in great detail in the Maestro USB Servo Controller User’s Guide and can be found under the “Command Protocols” section of the guide.

- Amanda

Thank you very much for the detailed and prompt reply Amanda,

Based of your answers and I already had a look in to the SDK sourec,
Its seems there is no way to use Usc I/F in my ARM based Linux.
And I cannot configure channels sending commands from my program.

The user guide says, all the channels are configured to servo mode by default.
Does this mean that i can use serial commands to control my servos without any configuration change.

And also, If I connect my mini maestro 24 to a windows PC and configure it and then detach it from windows PC
and connect to my ARM based device, The configuration changes I did through windows PC are still available or
are they gone soon after I detached (basically remove power) ?

You should be able to use the UscCmd utility on your BeagleBone Black to configure the mode of each channel. If you do not have UscCmd installed, you need to download and install the Maestro software for Linux under the “Installing Linux Drivers and Software” section of the Maestro’s user’s guide, then follow the instructions in the README.txt. Is there a specific reason why you think you are unable to use the UscCmd utility?

If you are only communicating with the Maestro through its TTL serial interface (RX and TX lines), then yes, you can use the serial servo commands to control your servos without making any changes to the Maestro’s settings. Please note that the Maestro’s serial mode is set to “Auto Baud Rate Detect” mode by default, so you will need to send a 0xAA byte first to detect the baud rate. If you want to send serial commands through the Maestro’s USB virtual COM port, then you will need to change the Maestro’s serial mode to “USB Dual Port”. (You can see this post for details on how to configure the Maestro’s serial mode with UscCmd.)

When you click “Apply Settings” in the Maestro Control Center, any changes are made in the software is saved permanently to the Maestro (except for channel names, sequences in the “Sequence” tab", the source code of your script, and changes in the “Status” tab) even after the device is power cycled.

- Amanda

Thanks for the reply Amanda,
We decided to proceed with servos with a feedback signal line for our product.
Therefore we cannot proceed with mini maestro since its does not give an analog input to capture the feedback signal. Does Pololu have something similar to mini maestro servo controller but with analog inputs as well?
We cannot allocate any channel from mini maestro to get analog inputs as we got 24 servos to drive.


We do not have any servo controllers with built-in processing of analog feedback signals, but you could use a second daisy chained Maestro to read analog voltages and either pass them on to your main controller or trigger a script on the Maestro with your servos attached. You can see more about daisy chaining in the “Daisy Chaining” section of the Maestro’s user’s guide.