The SO-101 robot arm: what changed, and what did not

The SO-101 is the successor to the SO-100 and the difference is mechanical, not electrical and not software. This page separates what genuinely changed from what people assume changed, and covers what happens to your existing data when you swap arms.

TheRobotStudio and LeRobot · Last updated 2026-08-09

Maker
TheRobotStudio and LeRobot
Actuators
5 joints plus gripper, 6 actuators
Each one is a dimension in the action vector
Servos
Feetech STS3215 bus servos
Supply voltage
7.4 V
A 12 V supply destroys these servos in seconds
Parts cost
roughly 130 to 170 euro per arm in parts
Platform support
Fully supported
Covered end to end by the guides on this site
Also written as
SO101
Dataset format
LeRobot v2.0 or v2.1
One recording feeds every model on the platform
Short answer

The SO-101 is the successor to the SO-100 from TheRobotStudio and the LeRobot project: five joints plus a gripper, the same six Feetech STS3215 bus servos at 7.4 V, with a revised wrist. Parts run roughly 130 to 170 euro. On this platform the software workflow is identical to the SO-100, down to having the same four training guides.

What the SO-101 is

The SO-101 is the second iteration of the same open hardware design: five joints, a gripper, six actuators, printed structure, one serial bus. The maker is the same pairing of TheRobotStudio and the LeRobot project, the servo family is the same Feetech STS3215, and the supply voltage is the same 7.4 V. The revision sits in the wrist, and parts come in at roughly 130 to 170 euro rather than the 110 to 150 of the older arm.

It is worth saying plainly what this page will not do. It will not put a number on what the revised wrist buys you, because this platform does not measure arm mechanics. It measures policies: success rate on physical attempts, training cost, inference latency. A mechanical revision that improves how a joint holds under load shows up in those numbers only indirectly, mixed with your camera placement and your demonstration quality. Anyone quoting you a percentage for a wrist change is guessing.

What can be stated exactly is the support status. The catalog marks both the SO-100 and the SO-101 as fully supported, which means neither is a second class citizen in the driver, the recorder or the trainers. The cockpit you drive at /live runs an SO-100, but it is the same cockpit you will use here.

Specifications

ItemSO-101
DesignerTheRobotStudio and LeRobot
Also writtenSO101
Kinematics5 joints plus gripper, 6 actuators
ServosFeetech STS3215 bus servos
Servo supply7.4 V
Parts costroughly 130 to 170 euro per arm
Platform supportFull
Dataset formatLeRobot v2.1
Relationship to the SO-100Successor with a revised wrist, identical software workflow

What changed, and what did not

Laying the two arms side by side is the fastest way to see how narrow the difference actually is. Everything that touches your workflow is in the unchanged column.

LayerSO-100SO-101
Kinematics5 joints plus gripper5 joints plus gripper
ServosFeetech STS3215Feetech STS3215
Servo supply7.4 V7.4 V
Wristoriginal designrevised
Parts costroughly 110 to 150 euroroughly 130 to 170 euro
Platform supportFullFull
Driver, recorder, dataset pathidenticalidentical
Training guidesfourfour

Because the servo family and the bus are unchanged, the failure modes are unchanged too. The hardware fix pages that are scoped to Feetech chains apply here word for word: /fix/arm-twitches-then-sags for the sag that looks like a software bug and is a power problem, /fix/joint-stops-early for a joint that refuses part of its travel, and /fix/gripper-does-not-close for the one that has usually been solved by looking at the calibration rather than the fingers.

The 7.4 V rule did not change with the revision

An SO-101 uses the same Feetech STS3215 servos as an SO-100, so it wants 7.4 V and nothing above it. A 12 V supply kills the chain in seconds. Two arms on one bench is exactly the situation where the wrong lead gets picked up, so if a Koch v1.1 with its 12 V rail shares your desk, label both supplies at the plug end today.

Coming from an SO-100

The question people actually arrive with is whether existing work survives the swap, and the answer splits cleanly in two. Data survives without qualification. Trained policies survive as candidates, not as finished results.

Datasets carry over because a LeRobot v2.1 recording contains joint positions, camera frames and a task string, and nothing in that layout names an arm model. Six numbers per control step is six numbers per control step. An SO-100 dataset trains for an SO-101 with no conversion step, and the two can sit in one dataset if the demonstrations really are the same task performed the same way.

Checkpoints are the delicate case. The action space has the same width, so a policy fine-tuned on SO-100 data will load and it will move the arm. Whether it succeeds is a separate question, because the calibration zero is a property of one physical machine, the wrist geometry has been revised, and your cameras have almost certainly moved during the swap. Any of those alone is enough to shift the mapping the policy learned. Treat a transferred checkpoint as something to evaluate, not something to deploy. /glossary/checkpoint and /glossary/fine-tuning cover what is and is not stored in one.

Evaluate before you conclude anything

Run the same twenty scored physical attempts on the new arm that you would run on a fresh policy. /fix/loss-falls-policy-does-nothing describes that procedure, and /fix/policy-only-works-in-one-setup is the page for the specific failure where a policy that worked yesterday stops working after a physical change. Retraining on the new arm is a real option, but restoring the setup is cheaper and works more often than people expect.

From the carton to the first movement

  1. 1
    Confirm the supply says 7.4 V

    Do this before the first screw goes in, especially if this is a second arm and you already have supplies on the bench. /learn/so-100-getting-started carries the full build, and every step in it applies here apart from the wrist assembly order.

  2. 2
    Set the ids while the connectors are reachable

    The bus addresses servos by id, so each one has to be written before it disappears inside a link. This is the step that costs a disassembly if you skip it.

  3. 3
    Install the client and pair this machine

    The installer from /download brings the CLI and the desktop client together with the driver. The pairing code comes from the Robots page in the dashboard and is exchanged once.

    bash
    curl -fsSL https://www.ay-robots.com/install.sh | sh
    ay-robots pair 4QD2-8HRM-1XV6
    ay-robots status
  4. 4
    Count the servos in the device list

    One arm, one serial port, six servos answering, plus your cameras. If a servo is missing here, the chain is open somewhere and no amount of software will find it for you.

    bash
    ay-robots devices
  5. 5
    Calibrate this arm, even if you calibrated the last one

    The zero reference belongs to one physical machine. Guide the joints to the neutral pose and press Enter, then send the arm home to see the first commanded motion.

    bash
    ay-robots calibrate
    ay-robots home
bash
# Record with the same task string every single episode
ay-robots record --task "put the lid on the jar" --episodes 40 --cameras wrist,top

# Review, then push the dataset to the cloud
ay-robots datasets list --local
ay-robots datasets upload jar-lid --name jar-lid-so101

# Training is started under Training in the dashboard or via the MCP tool start_training.
# There is no ay-robots train.

# Bring a finished checkpoint back to this arm
ay-robots run --model act --checkpoint s3://runs/jar-lid-so101/step-100000 --task "put the lid on the jar"
ay-robots stop
The same commands as on an SO-100. The arm revision changes nothing above the serial port.

What the platform trains and runs on an SO-101

Four written guides, one per policy family, exactly as for the SO-100. The episode floors and the GPU tiers below are properties of the model, not of the arm, so they read the same on every fixed arm here.

PolicyGuideGPU tierEpisodes to startInference per step
SmolVLA/train/smolvla-on-so-101RTX 4090 or any 24 GB card30about 245 ms
ACT/train/act-on-so-101RTX 4090 or any 24 GB card50about 20 ms
GR00T N1.7/train/groot-n1-7-on-so-101A100 80 GB or H100 80 GB50about 152 ms
Pi0.5/train/pi0-5-on-so-101A100 80 GB or H100 80 GB50about 485 ms

Full hyperparameter defaults sit on /policies/smolvla, /policies/act, /policies/groot-n1-7 and /policies/pi0-5. If a run refuses your dataset immediately after upload, the cause is almost always the format rather than the arm, and /fix/dataset-rejected-v3 covers the one that catches most people.

Where the SO-101 sits against the other three

Against the SO-100 the SO-101 is a revision. Against the other two supported arms it is a different kind of machine, and those differences are not subtle.

  • Against the SO-100: identical servos, identical voltage, identical software, a revised wrist, and roughly 20 euro more in parts. Both are marked fully supported.
  • Against the Koch v1.1: a different servo ecosystem. Koch runs Dynamixel XL330 and XL430 on 5 V and 12 V rails at roughly 250 to 350 euro, so the driver, the wiring and the budget all differ while the dataset and training path do not.
  • Against LeKiwi: LeKiwi is an SO-100 arm on a three wheel holonomic base at roughly 400 to 500 euro. Its wheel velocities enter the action vector, so its datasets are a different shape and its checkpoints do not interchange with a fixed arm.

Frequently asked questions

Should I buy an SO-101 if my SO-100 already works?

Nothing on this platform pushes you to. Both arms are fully supported, run the same servos at the same voltage and have the same four training guides. The case for the SO-101 is mechanical and it is yours to judge with the arm in your hands, not something the software will decide for you.

Do SO-100 datasets work for SO-101 training?

Yes, with no conversion. A LeRobot v2.1 dataset stores joint positions, camera frames and the task string, and none of that identifies the arm model. The action width is the same six values on both machines.

Will a policy trained on an SO-100 run on my SO-101?

It will load and move the arm, because the action width matches. Whether it succeeds depends on your new calibration zero, the revised wrist geometry and whether the cameras returned to the same place. Score twenty physical attempts before you trust it.

Is the voltage different from the SO-100?

No. Both use Feetech STS3215 servos at 7.4 V. A 12 V supply destroys an SO-101 exactly as quickly as it destroys an SO-100.

Does the platform treat the two arms differently anywhere?

Only in the labels. Both hold full support, both appear in every training guide family, and the CLI commands, the recorder and the dataset format are shared. The device list will show one arm on one serial port either way.