Mini Maestro 12-Channel USB Servo Controller (Partial Kit)

The 12-channel Mini Maestro 12 raises the performance bar for serial servo controllers with features such as a native USB interface and internal scripting control.

AUD$ 88.95

Special Order  

We can ship 17 more in 7-10 days

Our Code: SKU-002561

Supplier Link: [Pololu MPN:1353]


Getting started with the Maestro Servo Controller

For a full list of products shown in this video, see its YouTube description.


Maestro family of USB servo controllers: Mini 24, Mini 18, Mini 12, and Micro 6

The Mini Maestros are the newest of Pololu’s second-generation USB servo controllers, offering more channels and features than the smaller six-channel Micro Maestro. The Mini Maestros are available in three sizes, and they can be purchased fully assembled or as partial kits:

The Mini Maestros are highly versatile (and compact) servo controllers and general-purpose I/O boards. They support three control methods: USB for direct connection to a computer, TTL serial for use with embedded systems, and internal scripting for self-contained, host controller-free applications. The channels can be configured as servo outputs for use with radio control (RC) servos or electronic speed controls (ESCs), as digital outputs, or as analogue/digital inputs. The extremely precise, high-resolution servo pulses have a jitter of less than 200 ns, making these servo controllers well suited for high-performance applications such as robotics and animatronics, and built-in speed and acceleration control for each channel make it easy to achieve smooth, seamless movements without requiring the control source to constantly compute and stream intermediate position updates to the Mini Maestros. The Mini Maestros also feature configurable pulse rates from 1 to 333 Hz and can generate a wide range of pulses, allowing maximum responsiveness and range from modern servos. Units can be daisy-chained with additional Pololu servo and motor controllers on a single serial line.

The Status tab in the Maestro Control Center

A free configuration and control program is available for Windows and Linux, making it simple to configure and test the device 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 Mini Maestros’ 8 KB of internal script memory allows storage of up to approximately 3000 servo positions that can be automatically played back without any computer or external microcontroller connected.

Because the Mini Maestros’ channels can also be used as general-purpose digital outputs and analogue or digital inputs, they provide an easy way to read sensors and control peripherals directly from a PC over USB, and these channels can be used with the scripting system to enable creation of self-contained animatronic displays that respond to external stimuli and trigger additional events beyond just moving servos.

The fully assembled versions of the Mini Maestro ship with 0.1″ male header pins installed as shown in the respective product pictures. The partial kit versions ship with these header pins included but unsoldered, which allows the use of different gender connectors or wires to be soldered directly to the pads for lighter, more compact installations. A USB A to mini-B cable (not included) is required to connect this device to a computer. The Micro and Mini Maestros have 0.086″ diameter mounting holes that work with #2 and M2 screws.

Micro Maestro 6-channel USB servo controller (fully assembled) controlling three servos

Main Features

  • Three control methods: USB, TTL (5V) 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)
  • Pulse rate configurable from 1 to 333 Hz (2)
  • Wide pulse range of 64 to 4080 μs (2)
  • 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)
    • Analogue or digital inputs (channels 0 – 11 can be analogue 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
  • A simple scripting language lets you program the controller to perform complex actions even after its USB and serial connections are removed
  • Comprehensive user’s guide

The Channel Settings tab in the Maestro Control Center

  • 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 any development environment that supports serial communication
    • Pololu USB Software Development Kit 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 (2)
    • Simultaneously supports the Pololu protocol, which gives 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 adaptor for projects controlled from a PC
  • Our Maestro Arduino library makes it easier to get started controlling a Maestro from an Arduino or compatible boards like our A-Stars
  • Board can be powered off of USB or a 5 – 16 V battery, and it makes the regulated 5V available to the user
  • Upgradable firmware

Maestro Comparison Table

Micro Maestro Mini Maestro 12 Mini Maestro 18 Mini Maestro 24
Channels: 6 12 18 24
Analogue input channels: 6 12 12 12
Digital input channels: 0 0 6 12
Width: 0.85" (2.16 cm) 1.10" (2.79 cm) 1.10" (2.79 cm) 1.10" (2.79 cm)
Length: 1.20" (3.05 cm) 1.42" (3.61 cm) 1.80" (4.57 cm) 2.30" (5.84 cm)
Weight(1): 3.0 g 4.2 g 4.9 g 6.0 g
Configurable pulse rate(2): 33–100 Hz 1–333 Hz 1–333 Hz 1–333 Hz
Pulse range(2): 64–3280 μs 64–4080 μs 64–4080 μs 64–4080 μs
Script size(3): 1 KB 8 KB 8 KB 8 KB

1 This is the weight of the board without header pins or terminal blocks.
2 The available pulse rate and range depend on each other and factors such as baud rate and number of channels used. See the Maestro User’s Guide for details.
3 The user script system is more powerful on the Mini Maestro than on the Micro Maestro. See See the Maestro User’s Guide for details.

The Micro and Mini Maestros are available with through-hole connectors preinstalled or as partial kits, with the through-hole connectors included but not soldered in. The preassembled versions are appropriate for those who want to be able to use the product without having to solder anything or who are happy with the default connector configuration, while the partial kit versions enable the installation of custom connectors, such as right-angle headers that allow servos to be plugged in from the side rather than the top, or coloured header pins that make it easier to tell which way to plug in the servo cables. The following picture shows an example of a partial-kit version of the 24-channel Mini Maestro assembled with coloured male header pins:

24-channel Mini Maestro (partial kit version) assembled with colored male header pins

Application Examples and Videos

Micro Maestro as the brains of a tiny hexapod robot

  • Serial servo controller for multi-servo projects (e.g. robot arms, animatronics, fun-house displays) based on microcontroller boards such as the BASIC Stamp, Orangutan robot controllers, or Arduino platforms
  • Computer-based servo control over USB port
  • Computer interface for sensors and other electronics:
    • Read a gyro or accelerometer from a computer for novel user interfaces
  • General I/O expansion for microcontroller projects
  • Programmable, self-contained Halloween or Christmas display controller that responds to sensors
  • Self-contained servo tester

An example setup using a Micro Maestro to control a ShiftBar and Satellite LED Module is shown in the picture below and one of the videos above. Maestro source code to control a ShiftBar or ShiftBrite is available in the Example scripts section of the Maestro User’s guide.

Connecting the Micro Maestro to a chain of ShiftBars. A single 12V supply powers all of the devices



Size: 1.10" x 1.42"
Weight: 4.2 g1

General specifications

Channels: 12
Baud: 300 - 200000 bps2
Minimum operating voltage: 5 V
Maximum operating voltage: 16 V
Supply current: 40 mA3
Partial kit?: Y


Without header pins installed.
Autodetect works from 300 - 115200 bps.
With USB disconnected and all LEDs on. Connecting USB draws around 10 mA more.


Documentation and other information

Pololu Maestro Servo Controller User’s Guide (Printable PDF)

User’s guide for the Pololu Micro Maestro 6-channel USB Servo Controller and the Pololu Mini Maestro 12-, 18-, and 24-Channel USB Servo Controllers.

Pololu USB Software Development Kit

The Pololu USB SDK contains example code for making your own applications that use native USB to control the Jrk Motor Controller, Maestro Servo Controller, Simple Motor Controller, or USB AVR Programmer.

Sample Project: Simple Hexapod Walker (Printable PDF)

This is a step-by-step tutorial showing you how to use the Pololu Micro Maestro to build a simple six-legged walking robot. The total parts cost is about $72.

Application Note: Using AutoHotkey with Pololu USB Products (Printable PDF)

An application note about using AutoHotkey for Windows to control Pololu USB products.

File downloads

Maestro Servo Controller Windows Drivers and Software (release 130422) (5MB zip)
This ZIP archive contains the installation files for the Maestro Control Centre, the Maestro command-line utility (UscCmd), and the Maestro drivers for Microsoft Windows.
Maestro Servo Controller Linux Software (release 150116) (124k gz)
This tar/gzip archive contains the binary executable files for the Maestro Control Centre and the Maestro command-line utility (UscCmd) for Linux.
Pololu Maestro guia de usuario (1MB pdf)
A Spanish version of the user’s guide for the Pololu Micro Maestro 6-channel USB Servo Controller and the Pololu Mini Maestro 12-, 18-, and 24-Channel USB Servo Controllers, provided by customer Jaume B.
Dimension diagram of the Mini Maestro 12-Channel USB Servo Controller (540k pdf)
Mini Maestro 12-Channel USB Servo Controller drill guide (52k dxf)
This DXF drawing shows the locations of all of the board’s holes.
Dimension diagram of the Mini Maestro 18-Channel USB Servo Controller (456k pdf)
Mini Maestro 18-Channel USB Servo Controller drill guide (64k dxf)
This DXF drawing shows the locations of all of the board’s holes.
Dimension diagram of the Mini Maestro 24-Channel USB Servo Controller (656k pdf)
Mini Maestro 24-Channel USB Servo Controller drill guide (81k dxf)
This DXF drawing shows the locations of all of the board’s holes.

Recommended links

Getting Started with the Maestro Servo Controller

In this short video, Pololu engineer Emily shows how easy it is to get started with Maestro servo controllers.

Getting started with the maestro servo controller

Pololu Maestro Servo Controller library for Arduino
This library allows you to control Maestro Servo Controllers from an Arduino.
Polstro: C++ serial interface library for the Maestro
Polstro is a cross-platform C++ library for controlling a Maestro over its serial interface. Jacques Bitoniau created this library for his quadcopter control system, which is described in this blog post.
Maestro Support for RoboRealm
The Pololu Maestro RoboRealm module provides a way to interface the visual processing of RoboRealm into servo movements using the Pololu Maestro USB Servo Controller. Released February, 2010.
Paparazzi Autopilot for Linux
Patrick Hickey and Bradley Lord use a Pololu Micro Maestro for servo output and a Pololu 4 servo multiplexer to support manual control override in their model aircraft autopilot project. Published February, 2010.
Obstacle Avoider
A simple obstacle-avoiding robot based on the Maestro, using continuous-rotation servos and distance sensors. The robot is programmed using the Maestro’s internal scripting language, without the need for an additional microcontroller. By TomatoWire, June 2010.
RGB shoji lamp
This Japanese-style lamp was made from laser-cut parts and uses an RGB LED Satellite Module 001, a ShiftBar, and a Pololu Mini Maestro 12-channel servo controller. By Kevin Chang, April 2013.
Micro Maestro and 12-channel Mini Maestro Cases
3D models of cases that cover the bottom of the 6-channel Micro Maestro and 12-channel Mini Maestro servo controllers.
Raspberry Pi – Real Time Control via Android HTML5
Demo code to do web-based real time control of the Pololu Micro Maestro 6 channel servo controller using the Raspberry Pi and the Tornado web server. By MartinSant, November 2012.
Microsoft .NET Framework 3.5
The Microsoft .NET Framework version 3.5 is required for many Pololu configuration, control, and utility programs under Windows. Most computers will have this installed already or can automatically install it over the internet, but you can also get .NET 3.5 directly from Microsoft at this link. If you are installing on a computer without internet access, make sure to get the Full Redistributable Package.


How should I attach a button or switch to my Micro Maestro?

Diagram for connecting a button or switch to the Micro Maestro Servo Controller

First, decide which channel you would like to connect your button or switch to. In the Maestro Control Centre, under the Channel Settings tab, change that channel to Input mode and click “Apply Settings”. Next, wire a pull-up resistor (1–100 kilo-ohms) between the signal line of that channel and 5 V so that the input is high (5 V) when the switch is open. Wire the button or switch between the signal line and GND (0 V) so that when the button/switch is active the input will fall to 0 V. The picture to the right shows how to connect a button or switch to channel 0.

You can test your input by toggling the button/switch and verifying that the “Position” variable as shown in the Status tab of the Maestro Control Centre reflects the state of your button/switch: it should be close to 255.75 when the button/switch is active and close to 0 when it is inactive. Now you can read the state of the button/switch in your script using the GET_POSITION command or over serial using the “Get Position” command. These commands will return values that are close to 1023 when the button/switch is active and close to 0 when it is inactive. Warning: The Maestro’s I/O lines can only tolerate voltages from 0 to 5 V, so if your power supply is more than 5 V be careful not to connect it to the signal line.

What are the three wires coming out of my servo?

Pololu - Common RC servo connectors. From left to right: Futaba, JR, Airtronics Z

Most standard radio control servos (and all RC servos we sell) have three wires, each a different colour. Usually, they are either black, red, and white, or they are brown, red, and orange/yellow:

  • brown or black = ground (GND, battery negative terminal)
  • red = servo power (Vservo, battery positive terminal)
  • orange, yellow, white, or blue = servo control signal line

Please check the specs for your servo to determine the proper power supply voltage, and please take care to plug the servo into your device in the proper orientation (plugging it in backwards could break the servo or your device).

Is it possible to use digital servos with the Maestro servo controllers?
Yes, any servo designed for standard RC receivers should work with the Maestro (and any of our other servo controllers), whether it is a digital or analogue servo.
Can I power my servos with the USB port?
No. A USB port might only be capable of supplying 100 mA, which is less than what you need for a single servo. Many USB ports can deliver 500 mA, but this is still not enough for typical servos requiring 1 A or more.
How do I use my Maestro servo controller to get the maximum possible range of motion from my servo?

Be careful when going past the normal 90-degree range to avoid damaging your servo.

To find the settings in the Maestro Control Centre that make your servo rotate as much as it can, first set the Min and Max values on the Channel Settings tab to a wider range. Then use the lowest possible supply voltage at which your servo moves and gradually move the slider on the status tab until the servo does not move any further or you hear the servo straining. Once you reach the limit, immediately move back from it to avoid damaging the servo. Finally, return to the channel settings tab and configure Min and Max so that the servo will never go past the limit.

Why do servo speed and acceleration limits not work for the first movement after startup or after setting the target to zero?

When the Maestro first starts up, the servos could be in any position, and the Maestro has no way of determining what position they are in. The standard RC servo protocol provides no way to get feedback from a servo. Therefore, when the Maestro receives its first Set Target command for a servo, whether it comes from serial, USB or an internal script, it will not be able to produce a smooth transition from the current position to the target position and will instead command the servo to immediately go to the target position. The speed and acceleration limits will work for subsequent commands since the Maestro will know where the servo should be and can produce servo pulses that smoothly change from the current position to the target position.

If you need your servo’s first movement to be controlled by the speed and acceleration limits, then the first Set Target command you send to the Maestro should correspond to the servo’s current position. For example, if you know that your servo will always be at a position of 1500 μs when your system starts up, then your first Set Target command for that servo should have a value of 1500 μs.

Similarly, if you set the target of a servo to zero to make the Maestro stop sending pulses, the Maestro will lose its knowledge of where the servo is. During this time, the servo might slip and go to a different position. If you know your servo is not going to slip, then your program or internal script could remember where the servo is and send a Set Target command with that position in it before trying to move the servo to another position.

Related Products