Hello all! I’m having some trouble with my mini Maestro and I was hoping someone could point me to a direction I might not have tried ![]()
What I’m using
- NVIDIA Jetson AGX (Ubuntu 22.04.5 LTS)
- Polulu mini Maestro 24 channel controller
- MG90S servos
Hardware setup
The Maestro is connected via a known working cable (I used a mini USB cable and these same servos with my Arduino, and there everything works fine), and receives 5.2V via a 2A USB phone charger connected to the VIN connector. I put the blue jumper in place, so the servo power rail is powered by that. I measured voltage on the servo power rail, and I get the 5.2V there. (Question; when I remove the jumper, there still seems to be 5V on that rail, but I’m assuming that’s the 5V the Maestro feeds it (?)).
When I connect the power adapter for the servos, the orange/yellow light comes on and starts blinking slowly (1 second intervals).
When I connect USB, the green light comes on, it does a sequence of 10 short flashes, then 3 short flashes and then it remains on.
Software
I see both /dev/ttyACM0 and /dev/ttyACM1 when I connect the Maestro via serial
I’ve installed the necessary dependencies in a .venv and I get output when I use ./UscCmd:
(.venv) eric@nox:~/projects/misty/pca-test/maestro-linux$ ./UscCmd --list
1 Maestro USB servo controller device found:
#00503856
Via native USB using pyusb and libusb-1.0 I can fetch diagnostics of the board and servos (in this log, I have a single servo that’s sort of centered connected to servo port 0):
(.venv) eric@nox:~/projects/misty/pca-test$ sudo .venv/bin/python3 check_maestro_native.py
Opening Maestro via native USB...
Channel count: 24
Channel modes: 0=Servo, 1=Servo, 2=Servo, 3=Servo, 4=Servo, 5=Servo, 6=Servo, 7=Servo, 8=Servo, 9=Servo, 10=Servo, 11=Servo, 12=Servo, 13=Servo, 14=Servo, 15=Servo, 16=Servo, 17=Servo, 18=Servo, 19=Servo, 20=Servo, 21=Servo, 22=Servo, 23=Servo
Channel 0: position = 3968 (quarter-µs) = 992.0 µs [mode: Servo]
Channel 6: position = 0 (quarter-µs) = 0.0 µs [mode: Servo]
Channel 7: position = 0 (quarter-µs) = 0.0 µs [mode: Servo]
Channel 8: position = 0 (quarter-µs) = 0.0 µs [mode: Servo]
Native USB works. Use maestro_native.MaestroNative and puppet_controller_native.
When I try to use ./UscCmd to move a servo however, this happens:
(.venv) eric@nox:~/projects/misty/pca-test/maestro-linux$ ./UscCmd --servo 0,1200
Setting target of servo 0 to 1200...
(.venv) eric@nox:~/projects/misty/pca-test/maestro-linux$ ./UscCmd --status
# target speed accel pos
0 3968 0 0 3968
The servo doesn’t respond; I do see the green light blink but no movement. Am I using the CLI tool correctly; should it move? I didn’t do any configuration on the Maestro (directly started tinkering with it from the Jetson), and although every setting seems to be correct (Dual USB serial, all servo ports set to ‘Servo’), I can’t seem to be able to move them ![]()
If I need to provide more information, please let me know!

