The arm starts a motion, jerks once, and drops. Sometimes several joints give way at the same instant. It happens under load and almost never while the arm is idle, and no error appears that you can act on.
- SO-100
- SO-101
- LeKiwi
This is a power problem, not a software problem. Servos draw many times more current accelerating under load than they do holding still, and a supply that cannot hold voltage through that spike sags far enough for the servos to latch an undervoltage condition and cut torque, which is the drop you feel. Swapping in a supply you know is good, at 7.4 V for the Feetech STS3215 arms, is the test that settles it in two minutes.
The sequence you are actually watching
A servo holding a position draws a modest current. The same servo accelerating a loaded arm draws a multiple of that, and six of them starting at once draw it simultaneously. If the supply cannot deliver that peak, the voltage at the bus drops. Below a threshold the servo electronics decide they cannot operate safely, latch an undervoltage condition, and disable torque. The arm has no holding force any more, so it falls. As soon as it stops moving the current demand collapses, the voltage recovers, the servos come back, and the whole thing is available to happen again on your next command.
That is why the symptom has its distinctive shape. The twitch is the motion starting normally. The sag is the protection acting. The recovery immediately afterward is what makes people suspect software, because the arm is responsive again by the time they look at it.
The diagnostic signal is correlation with load rather than with any particular command. If the same trajectory survives when the gripper is empty and fails when it is holding something, or fails when the arm is extended and survives when it is folded, you are looking at current, not code.
What else produces something similar
| What you observe | Cause | How to confirm |
|---|---|---|
| Several joints give way at the same instant, under load | Brownout: the supply cannot hold the peak | Repeat unloaded, then swap the supply |
| The same single joint always, at any load | That servo or its cable, not the supply | The other five are fine on the same rail |
| Limp before any motion is commanded | Torque is disabled, which is not a fault | Home the arm and drive it from the client |
| Drops only as the gripper closes on something firm | Stall current at the gripper, still the supply | Close the gripper on air and compare |
| Buzzing and hunting, no drop | Something is binding mechanically | Power off and move the joint by hand |
| Random drops with no pattern, count varies in scans | Marginal connector on the bus or the DC lead | Reseat everything, feel for a warm plug |
Feetech STS3215 servos run at 7.4 V. Feeding them 12 V because a bigger brick was within reach destroys all six in seconds, silently, with no recovery. When you go looking for a replacement supply to test this, read the number printed on the replacement rather than trusting the barrel jack to fit only the right thing, because it does not.
Voltage is only half the specification
A supply is described by two numbers and people remember one of them. The right voltage with insufficient current capacity produces exactly the failure on this page: fine at idle, fine for a single joint, unable to hold when the whole arm accelerates. Supplies also age, and one that carried the arm last year can have lost enough capability to start browning out without anything else changing.
Resistance between the supply and the arm does the same thing to your arm while the supply itself measures perfectly at its own terminals. The usual sources are a thin or long DC extension lead, a splitter feeding two things from one brick, and a barrel jack that has been plugged and unplugged a few hundred times. All three drop voltage in proportion to current, which is to say exactly when you need it most.
One thing that is never the cause: the USB cable. USB powers the serial adapter, not the servos. A data problem on USB produces a missing port or a failed connection, not a mechanical collapse under load.
The test that settles it
- 1Reproduce it deliberately, unloaded
Run the same motion with nothing in the gripper, starting from a folded pose that needs little torque. If it survives that and fails when lifting or extended, load is the variable and you are done theorizing.
- 2Repeat the motion slowly
Acceleration is what costs current. The same path driven gently often completes on a supply that cannot manage it at speed, which is another confirmation rather than a fix.
- 3Reseat the DC connector and feel it afterward
Unplug and firmly reseat the barrel jack. Run a failing motion, then touch the plug and the first few centimeters of lead. Warmth there is resistance where you do not want it, and that plug or lead is the problem.
- 4Remove everything between the supply and the arm
No extension leads, no splitters, no switched power strip with a loose socket. Power the arm from the supply directly for the duration of the test.
- 5Swap in a supply you know is good
This is the decisive step. Correct voltage, generous current headroom, known working. If the symptom disappears, you have your answer. If it survives, the supply is exonerated and the remaining candidates are mechanical or a single servo.
- 6With the power off, move each joint by hand
Feel for a joint that binds, catches or grinds through part of its travel. A joint fighting a mechanical obstruction pulls stall current and can brown out an otherwise adequate supply on its own.
- 7Confirm the bus is complete before you go further
A servo dropping out of the scan under load points back at power or at a marginal connector rather than at the servo. Scan with the arm powered and loaded, not only at rest.
bashay-robots devices - 8Recalibrate only after the power question is closed
Calibration cannot influence current draw, so recalibrating a browning-out arm changes nothing. Once the arm holds position reliably, home it, verify the joints track, and only then decide whether calibration also needs attention.
bashay-robots home
# Backend up, machine paired, and a full servo count under power
ay-robots status
ay-robots devices
# SERIAL PORTS
# /dev/ttyACM0 SO-100 (6 servos responding)
# Then a low-effort motion as a baseline
ay-robots homeWhy no amount of software fixes this
The decision to cut torque is made inside the servo. The host does not participate in it and is not asked. What the host sees is that commanded positions stopped being followed, which is the same thing it would see if the arm had been physically held. There is no setting on this platform, and no parameter in any policy, that changes what a servo does when its supply voltage falls below what it needs. Retraining a policy because the arm dropped a payload is a several hour detour away from a two minute supply swap.
A brownout during recording produces demonstrations where your commanded motion and the pose the arm actually reached diverge, and the episode files look completely normal afterward. Anything recorded in a session where the arm sagged should be reviewed and thrown out rather than trusted. Recording practice, including reviewing before you keep, is on /learn/record-your-first-dataset.
Frequently asked questions
My supply says 7.4 V and the arm still sags. What now?▾
Voltage was never the whole question. Look at current capacity, at the age of the supply, and at everything between the supply and the arm: extension leads, splitters and tired barrel jacks all drop voltage under load while the supply itself measures fine.
Does a brownout damage the servos?▾
The undervoltage cutout exists to protect them, so a sag is generally the protection working rather than damage occurring. The expensive mistake on this hardware is overvoltage: 12 V into a 7.4 V servo destroys it in seconds.
Could a bad USB cable cause the arm to go limp?▾
No. USB carries the serial link and powers the adapter. It does not power the servos, so a USB fault shows up as a missing port or a dropped connection, never as a loss of holding torque under load.
Should I recalibrate after the arm has dropped?▾
Calibration lives on the host and survives a power loss, so normally no. Recalibrate if the fall was hard enough to slip a horn on its output shaft, which you can check by looking for a joint whose neutral pose has visibly changed.
Can I run the arm from a 12 V supply with a regulator in between?▾
The bus must see 7.4 V. Anything that does not deliver that at the servos is out of specification, and the failure mode of getting it wrong is all six servos at once. This is not a place to improvise.
The arm only sags when it is fully extended. Is that still power?▾
Very likely, because an extended arm has the worst leverage and asks for the most current. Confirm by repeating the same reach with a good supply. If the sag persists on known-good power, look at the shoulder joint specifically rather than at the whole rail.
A symptom in one part of the chain is regularly produced by the part before it. These pages cover the neighboring areas.