SO-100 vs SO-101: what the revision actually changes

Both arms sit on the full support level, both run the same software path from calibration to inference, and the parts lists differ by about twenty euro. The only real question is whether you are ordering now or already have an SO-100 calibrated on the desk.

Last updated 2026-08-09

SO-100 and SO-101 side by side
FactSO-1005 joints plus gripper, 6 actuatorsSO-1015 joints plus gripper, 6 actuators
MakerTheRobotStudio and LeRobotTheRobotStudio and LeRobot
Actuators5 joints plus gripper, 6 actuators5 joints plus gripper, 6 actuators
ServosFeetech STS3215 bus servosFeetech STS3215 bus servos
Supply voltage7.4 V7.4 V
Parts costroughly 110 to 150 euro per arm in partsroughly 130 to 170 euro per arm in parts
Platform supportFully supportedFully supported
Also written asSO-ARM100, SO100SO101
In one lineThe reference arm of this platform. Everything here is tested on one first.Successor to the SO-100 with a revised wrist. Identical software workflow.
Short answer

The SO-100 and the SO-101 use the same Feetech STS3215 bus servos at 7.4 V and the same five joints plus gripper, six actuators in total, and both are on the full support level here. The SO-101 is the later revision with a reworked wrist and costs roughly 130 to 170 euro in parts against roughly 110 to 150 for the SO-100. The software workflow is identical, so this is a hardware and price decision, not a platform decision.

The short answer

There is no software fork between these two arms. Same servo family, same bus, same 7.4 V rail, same six actuators, same calibration procedure, same dataset schema, same trainers, same inference path. Every guide here that says SO-100 holds on an SO-101 with the name swapped. What differs is mechanical: the SO-101 is the successor revision with a reworked wrist, at about twenty euro more in parts. Ordering now, that is an easy twenty euro. Already recording on an SO-100, the swap buys nothing a policy can see.

Side by side

FactSO-100SO-101
MakerTheRobotStudio and LeRobotTheRobotStudio and LeRobot
Degrees of freedom5 joints plus gripper, 6 actuators5 joints plus gripper, 6 actuators
ServosFeetech STS3215 bus servosFeetech STS3215 bus servos
Servo voltage7.4 V7.4 V
Parts costRoughly 110 to 150 euro per armRoughly 130 to 170 euro per arm
Support level herefullfull
Mechanical differenceThe original wrist assemblyRevised wrist, otherwise the same layout
Driver pathFeetech bus, the reference configurationThe same Feetech bus, no separate profile
Recorded action dimensions66
Dataset formatLeRobot v2.1LeRobot v2.1
Also written asSO-ARM100, SO100SO101

What the revised wrist changes in practice

The catalog entry is deliberately short: successor to the SO-100 with a revised wrist, identical software workflow. That is the whole delta, and it is worth being precise about what it touches. It touches the mechanical assembly around the last joint before the gripper. It does not touch the actuator count, so the recorded action vector is six wide on both arms and the column order does not shift.

For the person doing the work, the wrist is where an SO-100 build slows down. It is the tightest part of the frame, the horn there carries the most repeated load, and it is the joint you are most likely to re-seat after a policy has driven the gripper into the table. A revision there is not a number you can benchmark, it is fewer minutes lost during assembly and repair. Neither shows up in a training curve, which is why this comparison keeps getting framed as bigger than it is.

A revised wrist is not an extra joint

Both arms report six actuator positions per frame, in the same order, so a dataset recorded on one has the same shape as a dataset recorded on the other. No trainer here asks which revision produced it.

What stays exactly the same

Workflow stageWhat you runDifferent on the SO-101?
Find the armay-robots devicesNo, a serial port with Feetech servos behind it
Set the zero pointay-robots calibrateNo, same procedure, once per physical unit
Move to a known poseay-robots homeNo
Record demonstrationsay-robots record --task "..."No, same episodes, same --cameras flag
Upload the datasetay-robots datasets upload <dataset>No, LeRobot v2.1 either way
TrainTraining in the dashboard, or the start_training tool on the MCP serverNo, the trainer never sees the revision
Run the policyay-robots run --model <model>No

That table is why the SO-101 needed no separate guides. The trainer consumes a LeRobot v2.1 dataset with six action dimensions, camera frames and a task string. Nothing in that description mentions a frame revision.

Calibration does not transfer, and that catches people out

Calibration belongs to one physical arm, not to a model of arm. Two SO-100 units from the same kit still need their own zero point, because the horns were seated at slightly different angles. Going from an SO-100 to an SO-101 is that situation with a different name on it: calibrate the new arm, guide the joints to the neutral pose, press Enter, and both the recorder and the policy runner use that reference.

The same applies to a checkpoint you already trained: it learned a mapping from your images to joint targets inside your old calibration frame. Whether it holds on a second unit is an empirical question, and one run with a hand near the stop settles it.

bash
# On the new arm, before recording anything.
ay-robots devices
ay-robots calibrate
ay-robots home

# Try the checkpoint you already have, hand near the stop.
ay-robots run --model smolvla \
  --checkpoint s3://ay-robots-runs/cube-pick-smolvla/step-20000 \
  --task "pick up the red cube and put it in the bin"

# If it drifts, stop and record on the arm you will actually deploy on.
ay-robots stop
ay-robots record --task "pick up the red cube and put it in the bin" \
  --dataset cube-pick-so101 --episodes 10 --cameras wrist,top
Bringing a second arm up and testing an existing checkpoint on it.

Both arms are on the full support level

Full is not a marketing tier, it describes where a change gets tested. The SO-100 is the reference unit, so a fix lands there first and every hardware symptom documented here was reproduced on one. The SO-101 shares the servo family, the voltage and the driver path, so it inherits that testing.

The other level is compatible, which the Koch v1.1 and the LeKiwi carry: the workflow runs end to end, but the hardware differs from the reference in a way you can name, a different servo bus or extra actuators, so the reasoning in a fix page transfers while the exact output may not. Neither arm on this page is in that position. Whichever way you go here, you stay on the tested path.

7.4 V, not 12 V, on both arms

Feetech STS3215 servos run at 7.4 V. A 12 V supply destroys the bus in seconds, on an SO-101 exactly as fast as on an SO-100. Read the label before the barrel jack goes in, including on the day you are only swapping one servo.

Build the SO-101 if

  • You are ordering parts and have not built anything yet. Twenty euro against the newer mechanical revision is not a close call.
  • You expect to take the wrist apart more than once, which is what happens while you are still finding your workspace limits.
  • You want the arm on your desk to match the revision current build documentation is written against.

Stay on the SO-100 if

  • You already own one. There is no software benefit on the other side of the swap, and a new unit costs you a fresh calibration.
  • You are buying a second arm for a leader and follower pair and the first half is an SO-100. A matched pair keeps the teleoperation feel consistent.
  • Budget is the binding constraint. Twenty euro put into a second camera is a change the policy can see, and the wrist revision is not.

Where to go next

Frequently asked questions

Can I train on SO-100 episodes and run the policy on an SO-101?

The formats match: six action dimensions, LeRobot v2.1, same column order, so the job runs. Whether the policy performs on the second arm depends on how close the two calibrations and camera positions are. Try the checkpoint with a hand on the stop, and record a small top-up dataset on the new arm if it drifts.

Is the SO-101 faster or more precise than the SO-100?

Not in any sense this platform measures. Inference latency belongs to the model, not the arm: about 20 ms for ACT, about 152 ms for GR00T N1.7, about 485 ms for Pi0.5, on either arm.

Do I need a different power supply for the SO-101?

No. Both arms use Feetech STS3215 servos at 7.4 V. The 12 V supply that came with something else on the bench is the most expensive mistake available here, and it costs the same on both revisions.

Does the desktop client need a setting for which arm I have?

No. The client ships the driver, so there is no Python environment to set up and no per-revision profile to select. The device list shows what it can see, the calibration step stores the zero point, and that is the whole setup.

Are the fix pages valid for both?

Yes. Both arms are on the full support level, which means the hardware those pages were reproduced on is this servo family at this voltage. /fix/servo-not-responding and /fix/arm-twitches-then-sags apply unchanged.

I want a mobile robot eventually. Should I skip both and build a LeKiwi?

No. A LeKiwi is an SO-100 arm on a three-wheel base, so the arm skills carry over, while the base adds action dimensions your demonstrations have to teach. Learn the workflow on a fixed arm first, then read /compare/so-100-vs-lekiwi.