Sabertooth Movement Panel

by Dimension Engineering

This control supports the Sabertooth H-Bridge Motor Driver as a movement panel with variable speed in Simplified Serial mode.

How to add the Sabertooth Movement Panel robot skill

  1. Load the most recent release of ARC (Get ARC).
  2. Press the Project tab from the top menu bar in ARC.
  3. Press Add Robot Skill from the button ribbon bar in ARC.
  4. Choose the Movement Panels category tab.
  5. Press the Sabertooth Movement Panel icon to add the robot skill to your project.

Don't have a robot yet?

Follow the Getting Started Guide to build a robot and use the Sabertooth Movement Panel robot skill.

How to use the Sabertooth Movement Panel robot skill

This skill supports the Sabertooth Motor Controller as a Movement Panel with variable speed in Simplified Serial mode. The Sabertooth Motor Controllers are high power. They come in many versions that range from 5Amp to 60Amp. The ARC software supports the Simplified Serial Mode at multiple baud rates on a configured software serial or hardware UART port.

Main Window

User-inserted image

1. Movement Panel Buttons These buttons will allow you to control the motors attached to the Sabertooth Motor Controller (left, right, forward, and reverse).

2. Speed Sliders These sliders will allow you to control the speed of each motor attached to the Sabertooth. If the sliders are at the bottom the speed will be 0% (off) and the top is 100%.


User-inserted image

1. Software Serial Option Checkbox This uses any EZB digital I/O port to send a emulated serial signal to control the Sabertooth. This section includes a drop-down for the serial communication speed (baud rate) and a Button to change I/O ports. *note: Software serial should only be used if the ezb does not have hardware uart.

2. Hardware UART Option Checkbox This uses a EZB UART port to send a serial signal to control the Sabertooth. This section includes a drop-down for the serial communication speed (baud rate) and another drop-down to select the hardware UART number. *note: Use the ezb hardware uart if available over software serial.

3. PC COM Option Checkbox This uses a PC COM port (commonly a USB-to-Serial device) to send a serial signal to the Sabertooth to control it. This section includes a drop-down for the serial communication speed (baud rate) and another drop-down to select the COM port number. This option has the unique feature that allows you to connect the Sabertooth motor controller directly to a computer.


The EZ-B connects to the GND and Signal to the Sabertooth. The Signal from the EZ-B connects to S1 on the Sabertooth, which is used for Simplified Serial mode. The Sabertooth will get its power from the Power terminals that you connect to the battery. The GND must be shared between the EZ-B and Sabertooth, even if the battery supply of each is different.

How to Use Sabertooth Movement Panel

  1. Physically configure your dip switches on the Sabertooth Motor Controller.

DIP Switches Consult the Datasheet of your Sabertooth product for dip switch settings. The suggested Sabertooth setting is Simplified Serial at 38400 Baud. Lower baud rates can be used if interference or poor functioning is experienced. For the 2x25, here is recommended dip switch settings.

  1. Add the Sabertooth Movement Panel Skill to your ARC project (Project -> Add Skill -> Movement Panels -> Sabertooth Movement Panel).

  2. Configure the Sabertooth Movement Panel skill. Set the communication option and speed (baud rate) that matches the Sabertooth DIP switch setting.

Baud Rate It is important to understand how the EZ-B and Sabertooth communicate. This is done over a serial connection. Serial may seem simple enough in wiring, but the baud speed is a very important attribute that prevents the communication from working. The baud rate of the serial connection is the absolute most important property and must match between the EZ-B and Sabertooth. If the speed is not understood between the sabertooth and EZ-B controller, it won't work. Ensure both the EZ-B and Sabertooth are using the same baud rate.

Consult the manual for your Sabertooth model for the baud rate settings. The suggested baudrate is 38400, which much match the setting in the config menu of this control. Press the options menu on the Sabertooth control to view settings. Lower baud rates can be used if interference or poor functioning is experienced.

  1. Click the Sabertooth Movement Panel buttons to move your motors.



Here's a helpful community post:

Customer Support For customer support of Sabertooth devices and understanding their datasheets, please contact them here: Dimension Engineering Support.

Product Documentation Dimension engineering has PDF manuals for all of their products. The most popular product is the 2X25, which you can find the product page here.

Product Details Sabertooth allows you to control two motors. You can build many different robots of increasing complexity for years to come with a Sabertooth. Sabertooth has independent and speed+direction operating modes, making it the ideal driver for differential drive (tank style) robots and more.

The operating mode is set with the onboard DIP switches so there are no jumpers to lose or complicated programming sequences. Sabertooth features screw terminal connectors - making it possible for you to build a robot without having to solder.

Sabertooth is the first synchronous regenerative motor driver in its class. The regenerative topology means that your batteries get recharged whenever you command your robot to slow down or reverse. Sabertooth also allows you to make very fast stops and reverses - giving your robot a quick and nimble edge.

Sabertooth has a built in 5V BEC that can provide power to a microcontroller or R/C receiver. It also features a lithium cutoff mode allowing Sabertooth to operate safely with lithium ion and lithium polymer battery packs - the highest energy density batteries available.

Related Tutorials

Related Hack Events

Related Questions


Upgrade to ARC Pro

Elevate your robot's capabilities to the next level with Synthiam ARC Pro, unlocking a world of possibilities in robot programming.


How to hook up the Sabertooth and Kangaroo motion controller - EZB4? For any car or whatever robot a tutorial would benefit  many of us




User-inserted image BOT link (Tutorial):


Live hack:


Thanks @ptp I will update this skill page with those links!


@DJ, Sorry to be a pain in your side.  I'm using the Simplified Serial Mode on my sabertooth 2x25 and the sabertooth Movement Panel.  using the arduino mega on a digital port does not work.  Do you know way it's not working? I do not wnat to use the custom movement panel.  if you have time can you test it with your mega and sabertooth, if you have one.  If not what am I doing wrong.  I my have to just buy another EZB v4 1/2.

Thank you in advance. I really do appreciate all time you have spent on all these questions.


This is just a guess because I don't use the Arduino Mega. But if it was a EZB and you want to send Serial commands you would use it's UART ports. These have TX, RX, Ground and voltage pins. So looking at the Arduino Mega I'd think you need to attach to it's UART pins. TX1, RX2 or TX2, RX2 or TX2, RX3.


@Dave, This what I’m confused about.  On my sabertooth it ha S1,S2,5v and 0v for ground.  Do I connect s1 to TX and s2 to rx on the arduino mega?

I use 6vdc on the EZB’s and use the digital port and the sabertooth works fine.  I have tried just the TX on the arduino but the motors move on there own.  I am just learning about arduino so I am not sure.

thanks for the answer to maybe try a few other combinations.



I've never used a Sabertooth without a Kangaroo attached. However in the 2x25 Sabertooth manual I did find this. I think you mentioned you are using Simplified Serial Mode :


Simplified serial uses TTL level single-byte serial commands to set the motor speed and direction. This makes it easy to interface to microcontrollers and PCs, without having to implement a packet-based communications protocol. Simplified serial is a one-direction only interface. The transmit line from the host is connected to S1. The host’s receive line is not connected to the Sabertooth. Because of this, multiple drivers can be connected to the same serial transmitter. If using a true RS-232 device like a PC’s serial port, it is necessary to use a level converter to shift the 10V to 10V RS-232 levels to the 0V to 5V TTL levels the Sabertooth is expecting. This is usually done with a Max232 type chip. If using a TTL serial device like a microcontroller or a USB-to-TTL serial converter, the TX line may be connected directly to S1. Because Sabertooth controls two motors with one 8 byte character, when operating in Simplified Serial mode, each motor has 7 bits of resolution. Sending a character between 1 and 127 will control motor 1. 1 is full reverse, 64 is stop and 127 is full forward. Sending a character between 128 and 255 will control motor 2. 128 is full reverse, 192 is stop and 255 is full forward. Character 0 (hex 0x00) is a special case. Sending this character will shut down both motors.
I really don't know how your setup is built and what you are using so this is the best I can do for now.


You can also read the manual on this page by scrolling up - there's a bit about the wiring :)


Updated to allow specifying the board index for digital port "Send serial". This is to be compatible with the latest ARC:


So I learned (or re-learned) something here. One way serial commands can be sent through any of EZB's digital pins. Two way serial commands need one of EZB's 3 uart ports. Two of witch are digital ports.

  • D5 can control Dynamixel servos
  • D5 (TX) and D6 (RX) can be used as UART1 with 5kB Receive buffer
  • D18 (TX) and D19 (RX) can be used as UART2 with 5kB Receive buffer

So much in this platform. So much to remember. Love it!! LOL.

United Kingdom

Hi , anyone know what the script commands are to say use sabretooth to move forwards , stop etc? i can set the speed using SetSpeed(105,100) , however if i include in a script the command, but when i look in the script help it says so a Forward(100, 1000) for example , but wont this set both motors to 100, when i want one at 105 and one at 100 to sort out uneven motors and make bot drive straight ? is there another way of writing this , i tried Forward(105, 100, 1000) but that doesnt work ?



You’d use two commands. The first can set the speed. The second will set the direction

Not in front of my pc but the JavaScript commands are here

the set speed command:

the forward command:

if you’re using ezscript then you can find the similar commands here:

#14   — Edited

This is not a comment on the command but setting up the ST. You are able to set the sabertooth's dip switches and put it into Mixed mode. From the manual:


This mode is designed for easy steering of differential-drive vehicles. The analog signal fed into S1 controls the forward/back motion of the vehicle, and the analog signal fed into S2 controls the turning motion of the vehicle.
EDIT: nevermind. I just reread your post. You have two motors what preform differently. The ST mixed mode cant see that. You are correct that you need to set the commands speeds differently. However if you use a Kangaroo X2 it will figure all that out for you after it auto tunes.


I use the kangaroo with this robot. It has two dc geared motors that spin at different speeds. So I use the kangaroo with an encoder built in the gear box

User-inserted image

Rather than using the direction arrows on the movement panels, I use the virtual joystick:

United Kingdom

So i have got him moving about now, however i have noticed a wierd issue, sometimes even though the sabre tooth movement app says it is moving the robot actually isnt, i have tried diferent baud rates , using the UART so dont understand why, even when i manually click the Movement Panel itself i have to tap the up arrow to move twice ? Is that normal or am i missing something.

The Kangaroo looks interesting however not sure how i would integrate it into omnibots existing motors and gears etc ? any ideas on drop in replacememt motors that have encoders built in ?


Are you using the hardware uart or software bit bang?

there Might be an issue with the kangaroo missing packets

United Kingdom

Its the hardware UART , i dont have a kangaroo yet :-) , is there like a check command or error check ?


There isn’t a way to check for error other than knowing the sabertooth didn’t respond. This is because a uart is a serial with internal clock synchronization. That means if you set the baud to 38400, both the sender and receiver will use their clock to align the incoming pulses to the specified baudrate. Most protocols transmit a clock on a separate wire, so there’s clock synchronization.

generally serial uart is reliable but some things get in the way. Could be interference from another decide close by the wire. Or it could be too low of voltage on either side (ezb and sabertooth). It could also be too much noise from the motor on the sabertooth (requiring a cap on each motor). Or it could be simply that the ground isn’t reliable and there’s noise or resistance.

so the next step in your solution is to try a lower baudrate.

United Kingdom
#20   — Edited

Hi DJ thanks for the advice, i have tested the ground and its good and moved the motor signal wire away from all others and lowered the baud to 9600 , its the same... im starting to think its a problem with the app panel itself, my reasoning behind this is that once i have pressed up or right left once its totally reliable until i click another panel say to edit a script and then try and move the bot again i need to press a key once, then its reliable again, again if i script a voice command to move him i say ot once, nothing happens then i say again and its ok ? almost like the app needs waking up ? this doesnt happen on servo's i have on the bot or any other panel, also happens if i try and use serial connection and not uart.

Power for the EZ-B (Arduino Leonardo) comes from the 5v input form the USB port on the LattePanda , not running anything else on the EZ-B as of yet except 1 servo and 2 LED's . The power for the SabreTooth comes direct from a 11.7 supply from charging circuit and thats regulated.

Not sure if this makes a diference, i run the power to the sabretooth from a charging circuit so not straight form the battery, the dip switch i have set is to run of lipo , not sure that would cause this issue ..

Thanks again :-)


Would you be willing to post your project so we can take a look? Maybe another set of eyes would help to confirm there is nothing interfering or set improperly.

#22   — Edited

I updated the robot skill with additional debug info. You should be prompted to update the skill when you load ARC with an internet connection. Do so, and you will receive the latest update.

*edit: I also see from your logs that your project has many errors about the ping radar robot skill. Viewing the log window, you'll see a few thousand errors (or more). The ping radar doesn't seem to be supported by the latte panda's firmware. That might be causing some crazy behavior.

You can see the Debug Log has updated log details when the icon changes bright blue with exclamation mark User-inserted image


I would recommend trying a lower baud rate because I believe there is interference on the wire. And make sure you only have hardware UART selected as the port in the sabertooth robot skill configuration screen.

I loaded the ezb emulator and created a video demonstrating the sent packets. In the video, Writing: 000 means sending a Sabertooth stop command. Everything else for "Writing:" is a movement command. I went through many scenarios, including a robot skill script that sends a movement command.

United Kingdom

So i have now isolated the wire completely, and still the same issue, i have also removed all other devices and run a blank prog with just sabretooth and same issue , there are no errors that show in the debug log at all.. At a loss to be honest, wonder if it would be better with the kangaroo unit however the motors in the omnibot dont have any way of attaching encoders so cant be sure. Unless its a faulty sabretooth however i cant see it as after the initial keypress and no response its fine till you click away for the movement panel.

#25   — Edited

Did you try lowering the baudrate? Try 9600 to be safe

what uart port do you have selected?

you should not need to isolate the wire

United Kingdom

I am using uart 0 on the ARC software and s1 on the controller, it is indeed set to 9600

#27   — Edited

The baudrate is 9600 on both the sabertooth dip switches and the robot skill configuration screen? They need to match

oh also, so you think the sabertooth is browning out? Is it getting enough power? I guess there’s no real way for us to know if the micro ever reboots. A surge of power draw from the motors might cause it to reboot which would have these issues.

There are soooooooo many ARC users that use the sabertooth and I’ve never seen this behavior.


I like how DJ is thinking. Try moving the power feed from the charging circuit to a direct feed from the battery. Make sure your Sabertooth dip switches are set properly for this.

I don't recall anyone feeding a ST from a charging circuit.

This is a head scratcher.

United Kingdom

I will give that a try, for reference this is the charging circuit i am using, for reference its agreat bit of circuitry that senses when you connect and disconnect power to the circuit and charges and discharges accordingly.


#30   — Edited

Ah, it looks like a very nice device. However, and this is just a shot in the dark, it may be screwing with your request to turn on the power to move your motor through the ST. If it's not sensing your request for power properly it may not be providing the "on switch" when you want. Or it could be the other way around. The ST isn't synching properly with this power management device.

Maybe there is a adjustment on the power management board or maybe you could try a different dip switch setting on the ST? Again just a guess but that Lipo Battery dip switch on the ST may be messing with this setup.


Another thought; I haven't seen you mention that you have tried simply writing a script (EZ Script or JavaScript) with movement commands and eliminate the movement panel. I know you want the Movement Panel but this could be a simple troubleshooting exercise to see if you have something wrong in the movement panel.  Have the script move the robot forward, pause for a few seconds, then repeat with each direction.


The custom Movement Panel could be used for additional troubleshooting on your end:

this is such a head scratcher!

#33   — Edited

Still another thought about your power management board. As I understand it, the Sabertooth creates regeneration power when it stopes, reverses or breaks. This sends recharging power back into the battery. Any circuitry between the battery and the ST will be affected. Perhaps if you don't have a voltage clamp this regen power from the ST is knocking out the power management board?

The Sabertooth 2x32 is the only model that has a built in voltage clamp that lets you run it from a AC to DC converter (or effect other devices like your power management board). To avoid this issue with the other ST models they suggest placing a dump battery in front of the converter or device. Check this out: Using a SyRen/Sabertooth with an ATX (or similar) DC power supply


Dave’s onto some good ideas.

Another suggestion for an alternative interface to the ST is using rc pwm instead of simple serial.

By using this robot skill:

then you teach the sabertooth the pwm range for each motor. I’ve used it before with success as well.

United Kingdom

Tried every dip switch imaginable, however what i do see is i have an old sabertooth , a 2x10 would that make any diference ?

United Kingdom

Im starting to think this may be the sabertooth itself ... i cant see anything else wrong, see what you think .. so i have s1 on sabertooth conencted to pin 1 on arduino , the movemant panel is set to uart at 9600 , the dipswitches on sabertooth are 1 - 6 up, down, down, down, up, up .. this should set the board to 9600 as well, i think lol . anyway movememnt panel is set to uart , 0 and the arduino is board 0 in arc, i can connect to arduino ok , and then set speed on panel, then i click in the press arrow to move box and press up , 1st keypress i get nothing, every keypress after that works fine , until i say mess with another panel or start scripting then go back and press up arrow again, nothing , next press works .. its wierd .. Sabertooth issue maybe ?


It could be the sabertooth, but one thing I suggest you try is to put the sabertooth in RC mode. That lets you use the continuous rotation servo Movement Panel (

Maybe the uart on the Arduino is corrupt? Or perhaps the output voltage of the UART isn't high enough for the sabertooth to read it?

I'm at a loss of what it could be if you believe the power isn't an issue. We made the Synthiam platform super easy and have most all bases covered. However, the Sabertooth doesn't provide any feedback on commands, so we can't quite quickly diagnose what is happening.

That got me thinking - is there an LED on the sabertooth that flickers when data is received?

United Kingdom

Ok, so how do i put it in rc mode ? never tried that and what do i setup on the cont rotation app ? its worth a try before i pay for a new unit ..

Thanks :-)


I googled and found this:

not sure if that’s the correct instructions for your device. You might have to try using google yourself to find the manual for your device.

the link for the continuous rotation servo robot skill Movement Panel is linked above.

#40   — Edited


i have an old sabertooth , a 2x10
Please confirm what type controller board you are using. You may have had a typo. Dimention Engineering doesn't make a 2X10. Here's a list of what they offer:

SyRen 10 SyRen 25 SyRen 50 Sabertooth 2X5 Sabertooth 2X5 R/C Sabertooth 2X12 Sabertooth 2X12 R/C Sabertooth 2X25 Sabertooth 2X32 Sabertooth 2X60

When you say old do you mean you or someone else has had it for a long time? You may already know this but the 2x12 compared to the higher numbered models (like a 2x32) is not a version number? The number system of a Sabertooth relates to how many motors it can control and how many amps it can handle. So a 2X12 Sabertooth can control two motors and stand up to 12 amps.

The only difference between the models of this board is how many amps they will handle and some other built in features. Features like ramping, dedicated RC control and some other things. No differences that would cause your issue I think.

This still sounds like a power supply issue to me. Have you tried bypassing that power management board and go directly to the battery yet?

United Kingdom

Hi , they do indeed or rather did make a 2x10 im looking at it :-) , basically the 2x12 is the direct replacement for it.

I have run this direct form a battery and even tried a diferent arduino still the same ? its either something to do with the ARC software (unlikely if all you guys use it ok) , the sabertooth itself (possible it is quite old) or how the lattepanda communicates. I get no errors logged at all, its just the first keypress does nothing, all other after that are fine, it would not be such an issue but it also does it if i voicecomamnd it as well, or if i try and use navigation plugins , its commanded to move and doesnt unless i have pressed the button first.

Maybe i will try connecting it to a diferent pc and eliminate the lattepanda 1st , after that i would like to try pwn and set as servo but i cant see how i tell the sabertooth the pwn range , or indeed how i connect the continuous rotation panel to that particular port on the arduino.


I demonstrated a video of every command being sent. If it was ARC or us, I assure you we’d have it fixed. Fixing a bug is usually easier than participating in this many support replies hahaha :)

I really can’t understand what could be causing it. Maybe because it’s a discontinued version that they knew there was an issue? Is there a firmware update for it?

lastly, I have been providing advice to try rc mode. Can you look at your manual, read about rc mode, and try that? I supplied a link above for the robot skill that you’d use with it. It will work with the arduino. If that solution works, then you don’t need to buy a new ST :)



they do indeed or rather did make a 2x10 im looking at it :-) , basically the 2x12 is the direct replacement for it.
No kidding? I didn't know that or had forgotten. Thanks for the education. I do remember when I started using Sabertooths that I read about some people getting a bad one here and there. I actually got a bad Kangaroo x2 at one point. I pulled my hair out trying to get it to work will I figured out is wad bad.

I hope you can figure this out.



I hope you can figure this out.
Haha me too!!