- 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
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
| Item | SO-101 |
|---|---|
| Designer | TheRobotStudio and LeRobot |
| Also written | SO101 |
| Kinematics | 5 joints plus gripper, 6 actuators |
| Servos | Feetech STS3215 bus servos |
| Servo supply | 7.4 V |
| Parts cost | roughly 130 to 170 euro per arm |
| Platform support | Full |
| Dataset format | LeRobot v2.1 |
| Relationship to the SO-100 | Successor 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.
| Layer | SO-100 | SO-101 |
|---|---|---|
| Kinematics | 5 joints plus gripper | 5 joints plus gripper |
| Servos | Feetech STS3215 | Feetech STS3215 |
| Servo supply | 7.4 V | 7.4 V |
| Wrist | original design | revised |
| Parts cost | roughly 110 to 150 euro | roughly 130 to 170 euro |
| Platform support | Full | Full |
| Driver, recorder, dataset path | identical | identical |
| Training guides | four | four |
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.
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.
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
- 1Confirm 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.
- 2Set 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.
- 3Install 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.
bashcurl -fsSL https://www.ay-robots.com/install.sh | sh ay-robots pair 4QD2-8HRM-1XV6 ay-robots status - 4Count 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.
bashay-robots devices - 5Calibrate 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.
bashay-robots calibrate ay-robots home
# 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 stopWhat 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.
| Policy | Guide | GPU tier | Episodes to start | Inference per step |
|---|---|---|---|---|
| SmolVLA | /train/smolvla-on-so-101 | RTX 4090 or any 24 GB card | 30 | about 245 ms |
| ACT | /train/act-on-so-101 | RTX 4090 or any 24 GB card | 50 | about 20 ms |
| GR00T N1.7 | /train/groot-n1-7-on-so-101 | A100 80 GB or H100 80 GB | 50 | about 152 ms |
| Pi0.5 | /train/pi0-5-on-so-101 | A100 80 GB or H100 80 GB | 50 | about 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.
Still choosing? The arm comparisons put two of them side by side, and /policies covers the models you can train on any of them.
Drive a real arm before you build one
The arm on /live is a real SO-100, wired up and online. Anyone can drive it from the browser without a signup, which is the closest look at this class of hardware you can get without owning any.