The Maestros are Pololu’s second-generation family of USB
servo controllers. The Maestro family consists of four
controllers, each available fully assembled or as a partial kit:
• Mini Maestro 12 [http://www.pololu.com/catalog/product/
1352]
• Mini Maestro 18 [http://www.pololu.com/catalog/product/
1354]
• Mini Maestro 24 [http://www.pololu.com/catalog/product/1356]
With three control methods — USB for direct connection to a PC computer, TTL serial for use with embedded systems,
and internal scripting for self-contained, host controller-free applications — and channels that can be configured as
servo outputs for use with radio control (RC) servos [http://www.pololu.com/catalog/category/23] or electronic speed controls
(ESCs), digital outputs, or analog/digital inputs, the Maestro is a highly versatile servo controller and general I/O board
in a highly compact package. The extremely precise, high-resolution servo pulses have a jitter of less than 200 ns,
making the Maestro well suited for high-performance animatronics, and built-in speed and acceleration control make
it easy to achieve smooth, seamless movements without requiring the control source to constantly compute and stream
intermediate position updates to the Maestro. The Maestro features configurable pulse rates (up to 333 Hz for Mini
Maestros) and can generate a wide range of pulses to allow maximum responsiveness and range from modern servos.
Units can be daisy-chained with additional Pololu servo and motor controllers on a single serial line.
A free configuration and control program is available for Windows and Linux (see Section 4), making it simple to
configure and test the board over USB, create sequences of servo movements for animatronics or walking robots, and
write, step through, and run scripts stored in the servo controller. The Maestro’s internal script memory allows storage
of servo positions that can be automatically played back without any computer or external microcontroller connected
(see Section 6).
The Maestros’ channels can also be used as general-purpose digital outputs and analog or digital inputs, providing an
easy way to read sensors and control peripherals directly from a PC over USB. These inputs can be used with the
scripting system to enable creation of self-contained animatronic displays that respond to external stimuli.
A USB A to mini-B cable [http://www.pololu.com/catalog/product/130] (not included) is required to connect this device to a
computer.
• Three control methods: USB, TTL (5 V) serial, and internal scripting
• 0.25μs output pulse width resolution (corresponds to approximately 0.025° for a typical servo, which is beyond
what the servo could resolve)
• Configurable pulse rate and wide pulse range (see the Maestro comparison table below)
• Individual speed and acceleration control for each channel
• Channels can be optionally configured to go to a specified position or turn off on startup or error
• Alternate channel functions allow the channels to be used as:
◦ General-purpose digital outputs (0 or 5 V)
◦ Analog or digital inputs (channels 0 – 11 can be analog inputs; channels 12+ can be digital inputs)
◦ One channel can be a PWM output with frequency from 2.93 kHz to 12 MHz and up to 10 bits of resolution
(see Section 4.a for details)
• A simple scripting language lets you program the controller to perform complex actions even after its USB and
serial connections are removed
• Free configuration and control application for Windows and
Linux makes it easy to:
◦ Configure and test your controller
◦ Create, run, and save sequences of servo movements for
animatronics and walking robots
◦ Write, step through, and run scripts stored in the servo
controller
• Two ways to write software to control the Maestro from a PC:
◦ Virtual COM port makes it easy to send serial commands from
anydevelopmentenvironmentthatsupportsserial
The Channel Settings tab in the Maestro
Control Center.
communication
◦ PololuUSBSoftwareDevelopmentKit
[http://www.pololu.com/docs/0J41] allows use of more advanced
native USB commands and includes example code in C#, Visual
Basic .NET, and Visual C++
• TTL serial features:
◦ Supports 300 – 200,000 bps in fixed-baud mode, 300 –
115,200 bps in autodetect-baud mode
◦ Simultaneously supports the Pololu protocol, which gives
The Status tab in the Maestro Control
Center.
access to advanced functionality, and the simpler Scott Edwards
MiniSSC II protocol (there is no need to configure the device for a particular protocol mode)
◦ Can be daisy-chained with other Pololu servo and motor controllers using a single serial transmit line
◦ Chain input allows reception of data from multiple Mini Maestros using a single serial receive line without
extra components (does not apply to Micro Maestros)
◦ Can function as a general-purpose USB-to-TTL serial adapter for projects controlled from a PC
• Board can be powered off of USB or a 5 – 16 V battery, and it makes the regulated 5V available to the user
controller. It can also be used to send commands to the servo controller, get information about the servo controller’s
current state, and send and receive TTL serial bytes on the TX and RX lines.
The processor and the servos can have separate power supplies.
Processor power must come either from USB or from an external
5–16V power supply connected to the VIN and GND inputs. It is safe
to have an external power supply connected at the same time that USB
is connected; in such cases the processor will be powered from the
external supply. Note that if the external supply falls below 5 V, correct
operation is not guaranteed, even if USB is also connected.
Servo power connections are provided in the upper right corner of the
Micro Maestro board. Servo power is passed directly to the servos
without going through a regulator, so the only restrictions on your
servo power supply are that it must be within the operating range of
Micro Maestro power pins.
your servos and provide enough current for your application. Please
consult the datasheets for your servos to determine an appropriate servo power source, and note that a ballpark figure for
the current draw of an average straining servo is 1 A.
You can power the Maestro’s processor and servos from a single power supply
by connecting the positive power line to both VIN and the servo power ports. An
easy way to accomplish this on the Micro Maestro is to solder a wire on the
bottom of the board between VIN and one of the servo power connections as
shown in the picture to the right.. Only one ground connection is needed because
all ground pins on the board are connected.
The 5V (out) power output allows you to power your own 5V devices from the
on-board 50mA regulator or directly from USB. The on-board regulator is used
whenever VIN is powered; in this case, since the Maestro requires 30 mA, there
is about 20 mA available to power other devices.
Micro Maestro configured to use
a single power supply for both
board and servos.
The SIG lines (0, 1, 2, …) are used for sending pulses to servos, controlling
digital outputs, and measuring analog voltages. These lines are protected by 220Ω resistors. The total current limit (in or
out) for these pins is 60 mA, but when using the on-board regulator the current out is limited to 20 mA (see above.)
The RX line is used to receive non-inverted TTL (0–5 V) serial bytes, such as those from microcontroller UARTs.
These bytes can either be serial commands for the Maestro, arbitrary bytes to send back to the computer via the USB
connection, or both. For more information about the Maestro’s serial interface, see Section 5.a. Note that the Maestro
will probably be able to receive 3.3V TTL serial bytes, but it is not guaranteed to read 3.3V as high on the RX pin, so
you should boost 3.3V TTL serial signals to above 4V if you want to ensure reliable operation.
The TX line transmits non-inverted TTL (0–5 V) serial bytes. These bytes can either be responses to serial commands
sent to the Maestro, or arbitrary bytes sent from the computer via the USB connection.
The RST pin can be driven low to perform a hard reset of the Maestro’s microcontroller, but this should generally not
be necessary for typical applications. The line is internally pulled high, so it is safe to leave this pin unconnected.
The dimensions of the Micro Maestro PCB are 1.200" × 0.850". The vertical and horizontal distances between the two
mounting holes are 0.650" and 0.575". The Micro Maestro weighs 3.0 g (0.11 oz) without header pins.
1.b. Mini Maestro Pinout and Components
Mini Maestro 12-channel USB servo controller (fully
Note: This section applies to the Mini Maestro
12, 18, and 24 servo controllers. Please see
Section 1.a for Micro Maestro pinout and
component information.
The Pololu Mini Maestro 12-,18-, and 24-channel
servo controllers can connect to a computer’s USB
portviaaUSBAtomini-Bcable
[http://www.pololu.com/catalog/product/130](not
included). The USB connection is used to configure
the servo controller. It can also be used to send
commands to the servo controller, get information
about the servo controller’s current state, and send
and receive TTL serial bytes on the TX and RX
lines.
Mini Maestro 18-channel USB servo controller (fully
assembled) labeled top view.
Mini Maestro 12 power pins.
Mini Maestro 18 power pins.
Mini Maestro 24-channel USB servo controller (fully
The processor and the servos can have separate power supplies.
Processor power must come either from USB or from an external
5–16V power supply connected to the VIN and GND inputs on the left
side of the board. It is safe to have an external power supply connected
at the same time that USB is connected; in that case the processor will
be powered from the external supply. Note that if the external supply
falls below 5 V, correct operation is not guaranteed, even if USB is
also connected.
Servo power connections are provided in the lower right corner of the
Mini Maestro board. On the Mini Maestro 18 and 24, you can make
servo power connections via a 2-pin terminal block or a 2-pin 0.1"
header; the Mini Maestro 12 only has a 2-pin 0.1" header for
connecting servo power. Servo power is passed directly to the servos
without going through a regulator, so the only restrictions on your
Mini Maestro 24 power pins.
servo power supply are that it must be within the operating range of
your servos and provide enough current for your application. Please consult the datasheets for your servos to determine
an appropriate servo power source, and note that a ballpark figure for the current draw of an average straining servo is
1 A.
You can power the Maestro’s processor and servos from a single power supply by connecting the positive power line
to both VIN and the servo power ports (only one ground connection is needed because all ground pins on the board are
connected). The recommended way to do this is to connect your power supply to the dedicated servo power pins in the
corner of the board and use the included blue shorting block to connect the pins labeled “VSRV=VIN”.
The 5V (out) power output allows you to power your own 5V devices from the 150mA on-board regulator or directly
from USB. The on-board regulator is used whenever VIN is powered; in this case, since the Maestro requires 50 mA,
there is about 50 mA available to power other devices.
The signal lines (0, 1, 2, …) are used for sending pulses to servos, controlling digital outputs, and measuring voltages.
The total current limit (in or out) for these pins is 150 mA, but when using the on-board regulator the current out is
limited to 50 mA (see above.)
The RX line is used to receive non-inverted TTL (0–5 V) serial bytes, such as those from microcontroller UARTs.
These bytes can either be serial commands for the Maestro, arbitrary bytes to send back to the computer via the USB
connection, or both. For more information about the Maestro’s serial interface, see Section 5.a. Note that the Maestro
will probably be able to receive 3.3V TTL serial bytes, but it is not guaranteed to read 3.3V as high on the RX pin, so
you should boost 3.3V TTL serial signals to above 4V if you want to ensure reliable operation.
The TX line transmits non-inverted TTL (0–5 V) serial bytes. These bytes are either generated by the Mini Maestro
itself (as responses to serial commands or arbitrary bytes sent from the computer via the USB connection), or they come
from the TXIN line.
The RST pin can be driven low to perform a hard reset of the Maestro’s microcontroller, but this should generally not
be necessary for typical applications. The line is internally pulled high, so it is safe to leave this pin unconnected.
The ERR line is an output that is tied to the red error/user LED. It is driven high when the red LED is on, and it is a
pulled low through the red LED when the red LED is off. The red LED turns on when an error occurs, turns off when
the error flags have been cleared, and can also be controlled by the user script. Since the ERR line is never driven low, it
is safe to connect the ERR line of multiple Mini Maestros together. Please note, however, that doing this will cause the
red LEDs of all connected Mini Maestros to turn on whenever one of the Mini Maestros turns on its red LED. For more
information on the possible error conditions and response options, please see Section 4.b.
The TXIN line is a serial input line that makes it easy to chain together multiple Mini Maestros. Any serial bytes
received on this line will be buffered through an AND gate and transmitted on the TX line. See Section 5.g for more
information about daisy chaining.
Bottom view with dimensions (in inches) of Pololu Micro and Mini Maestro
servo controllers.
The dimensions of the Mini Maestro PCBs are shown in the picture above, along with the Micro Maestro for
comparison. The vertical and horizontal distances between the two mounting holes are as follows: 1.20" and 0.50" for
the Mini Maestro 12, 1.58" and 0.50" for the Mini Maestro 18, and 1.50" and 0.50" for the Mini Maestro 24.
1.c. Indicator LEDs
The Maestro has three indicator LEDs:
• The green USB LED indicates the USB status of the device. When the Maestro is not connected to a computer
via the USB cable, the green LED will be off. When you connect the Maestro to USB, the green LED will
start blinking slowly. The blinking continues until the Maestro receives a particular message from the computer
indicating that the Maestro’s USB drivers are installed correctly. After the Maestro gets this message, the green
LED will be on, but it will flicker briefly when there is USB activity. The control center application constantly
streams data from the Maestro, so when the control center is running and connected to the Maestro, the green LED
will flicker constantly.
• The red error/user LED usually indicates an error. The red LED turns on when an error occurs, and turns off
when the error flags have been cleared. See Section 4.b for more information about errors. The red LED can also
be controlled by the user script; the red LED will be on if there is an error or if the script command for turning it
on was run.
• The yellow status LED indicates the control status. When the Maestro is in auto-baud detect mode (the default)
and has not yet detected the baud rate, the yellow LED will blink slowly. During this time the Maestro does not
transmit any servo pulses. Once the Maestro is ready to drive servos, the yellow LED will periodically flash briefly.
The frequency of the flashes is proportional to the servo period (the amount of time between pulses on a single
channel); with a period of 20 ms the flashing occurs approximately once per second. On the Micro Maestro, the
number of flashes indicates the state: a single flash indicates that none of the servos are enabled (no pulses are being
sent) and all output channels are low, while a double flash indicates that at least one of the servos is enabled or one
of the output channels is being driven high. The Mini Maestros only emit single flashes. Also, when a valid serial
command is received, the yellow LED will emit a brief, dim flash which ends when the next valid serial command
is received or when the main blinking occurs (whichever happens first).
When the Maestro is reset in some other way than being initially powered up, the red and/or yellow LEDs blink four
times to indicate the reset condition:
• Yellow off, red blinking: A brownout reset. This occurs when the Maestro’s 5 V line drops below about 3.0 V,
usually due to low batteries or an inadequate power supply.
• Yellow blinking, red off: The Maestro was reset by a low voltage on its RST line.
• Yellow and red blinking together: A firmware crash resulted in a “watchdog” reset. This also occurs immediately
following a firmware upgrade, as a normal part of the upgrade process.
• Yellow blinking, red steady: A firmware error resulted in a soft reset. This should never occur during normal
usage.
1.d. Supported Operating Systems
The Maestro USB drivers and configuration software work under Microsoft Windows XP, Windows Vista, Windows 7,
and Linux.
The Maestro is not compatible with any version of Mac OS.
You can check the product page of your particular Maestro model for additional information. We would be delighted
to hear from you about any of your projects and about your experience with the Maestro. You can contact us
[http://www.pololu.com/contact] directly or post on our forum [http://forum.pololu.com/]. Tell us what we did well, what we
could improve, what you would like to see in the future, or anything else you would like to say!
2. Open the ZIP archive and run setup.exe. The installer will guide you through the steps required to install the
Maestro Control Center, the Maestro command-line utility (UscCmd), and the Maestro drivers on your computer.
If the installer fails, you may have to extract all the files to a temporary directory, right click setup.exe, and select
“Run as administrator”.
3. During the installation, Windows will warn you that the driver has not been tested by Microsoft and recommend
that you stop the installation. Click “Continue Anyway” (Windows XP) or “Install this driver software anyway”
(Windows 7 and Vista).
4. After the installation is finished, your start menu should have a shortcut to the Maestro Control Center (in
the Pololu folder). This is a Windows application that allows you to configure, control, debug, and get real-time
feedback from the Maestro. There will also be a command-line utility called UscCmd which you can run at a
Command Prompt.
Windows 7 and Windows Vista users: Your computer should now automatically install the necessary drivers when
you connect a Maestro. No further action from you is required.
Windows XP users: Follow steps 5–9 for each new Maestro you connect to your computer.
5. Connect the device to your computer’s USB port. The Maestro shows up as three devices in one so your XP
computer will detect all three of those new devices and display the “Found New Hardware Wizard” three
times. Each time the “Found New Hardware Wizard” pops up, follow steps 6-9.
6. When the “Found New Hardware Wizard” is displayed, select “No, not this time” and click “Next”.
7. On the second screen of the “Found New Hardware Wizard”, select “Install the software automatically” and
If you use Windows XP and experience problems installing or using the serial port drivers, the cause of your problems
might be a bug in older versions of Microsoft’s usb-to-serial driver usbser.sys. Versions of this driver prior to version
5.1.2600.2930 will not work with the Maestro. You can check what version of this driver you have by looking in
the “Details” tab of the “Properties” window for usbser.sys in C:\Windows\System32\drivers. To get the fixed version
of the driver, you will need to install Service Pack 3 [http://www.microsoft.com/downloads/details.aspx?FamilyId=68C48DAD-
BC34-40BE-8D85-6BB4F56F5110]. If you do not want Service Pack 3, you can try installing Hotfix KB918365 instead, but
some users have had problems with the hotfix that were resolved by upgrading to Service Pack 3. The configuration
software will work even if the serial port drivers are not installed properly.
After installing the drivers, if you go to your computer’s Device Manager and expand the “Ports (COM & LPT)” list,
you should see two COM ports: the Command Port and the TTL Port. In parentheses after these names, you will see the
name of the port (e.g. “COM5” or “COM6”). If you expand the “Pololu USB Devices” list you should see an entry for
the Maestro.
Windows 7 device manager showing the Micro Maestro 6-channel USB servo controller.
Windows XP device manager showing the Micro Maestro 6-channel USB servo
controller.
Some software will not allow connection to higher COM port numbers. If you need to change the COM port number
assigned to your USB device, you can do so using the Device Manager. Bring up the properties dialog for the COM port
and click the “Advanced…” button in the “Port Settings” tab. From this dialog you can change the COM port assigned
to your device.
Unzip the tar/gzip archive by running “tar -xzvf” followed by the name of the file. After following the instructions in
README.txt, you can run the programs by executing MaestroControlCenter and UscCmd.
You can also download the C# source code of UscCmd as part of the Pololu USB Software Development Kit
[http://www.pololu.com/docs/0J41]. Read README.txt in the SDK for more information.
The Maestro’s two virtual serial ports can be used in Linux without any special driver installation. The virtual serial ports
are managed by the cdc-acm kernel module, whose source code you can find in your kernel’s source code drivers/usb/
class/cdc-acm.c. When you connect the Maestro to the PC, the two virtual serial ports should appear as devices with
names like /dev/ttyACM0 and /dev/ttyACM1 (the number depends on how many other ACM devices you have plugged
in). The port with the lower number should be the Command Port, while the port with the higher number should be the
TTL Serial Port. You can use any terminal program (such as kermit) to send and receive bytes on those ports.
3.c. Using the Maestro without USB
It is possible to use the Maestro as a serial servo controller without installing any USB drivers or using a PC. Without
using USB, you will not be able to change the Maestro’s settings, but you can use the default settings which are suitable
for many applications. The default settings that the Maestro ships with are described below.
Default Settings
• The serial mode is “UART, detect baud rate”; after you send the 0xAA baud rate indication byte, the Maestro
will accept TTL-level serial commands on the RX line.
• The Pololu Protocol device number is 12, the Mini SSC offset is 0, and serial timeout and CRC are disabled.
• All channels are configured as servos, with a minimum pulse with of 992 μs and a maximum pulse width of
2000 μs.
• The 8-bit neutral point is 1500 μs and the 8-bit range is 476.25 μs.