Getting started with the SO-101 and LeRobot

The order of work from the box to your first dataset. Each step links to the official LeRobot documentation. The commands change between LeRobot releases, so use the docs as the reference.

What you need

  • An SO-101 follower arm, kit or assembled
  • A mains power supply with the same voltage as your servos — 12 V or 7.4 V. It is not in the box.
  • A computer with Python. Linux and macOS are the usual choice.
  • To record demonstrations by hand: an SO-101 leader arm with its own board and supply
  • To train a policy: one or two USB cameras

Not sure which arm to buy? Read SO-101: kit or assembled, 7.4 V or 12 V.

The steps

  1. Install LeRobot

    Follow the installation guide. The SO-101 uses Feetech servos, so install LeRobot with the Feetech extra, as the guide shows.

  2. Find the USB port

    Connect the driver board to power and to your computer. Then run:

    lerobot-find-port

    It asks you to unplug the cable, and prints the port that went away. Write it down. On Linux you may need to give your user access to the port first.

  3. Set up the motors (kit only)

    Each servo needs its own ID on the bus. The SO-101 guide runs lerobot-setup-motors and asks you to connect one servo at a time, gripper first. Do this before you close up each joint.

    The assembled arm was built and moved joint by joint before it left us. Go to step 5.

  4. Build the arm (kit only)

    Follow the joint-by-joint assembly in the SO-101 guide. The printed parts are in the box, so skip the part about sourcing and printing. Clamp the base to the table before the first power-on.

  5. Calibrate

    Calibration makes the same physical pose give the same numbers on every SO-101. That is what lets a policy trained on one arm run on another.

    lerobot-calibrate \
      --robot.type=so101_follower \
      --robot.port=<your port> \
      --robot.id=my_follower

    Move every joint to the middle of its range, press Enter, then move each joint through its full range. Keep the same id in every later command: LeRobot stores the calibration under that name. Calibrate the leader arm the same way, with --teleop.type=so101_leader.

  6. Teleoperate

    With a leader arm connected, lerobot-teleoperate copies the leader's pose to the follower. Start slowly and keep your hand clear of the gripper. See Imitation learning on real-world robots for the command and for adding cameras.

  7. Record, train, run

    lerobot-record saves teleoperated episodes as a dataset, lerobot-train trains a policy on it, and lerobot-rollout runs the policy on the arm. The same imitation learning tutorial covers all three. It suggests about 50 episodes for a first pick-and-place task.

When something does not move

  • No servo answers: check the power supply, the USB cable and the 3-pin cable to the first servo. The board needs both USB and power.
  • A servo gets hot or stops under load: it is at its stall limit. Lower the load or work closer to the base. The 12 V servos have more margin.
  • The arm moves to strange poses: the calibration does not match the id you passed. Use the same id you calibrated with, or calibrate again.
  • Still stuck: the LeRobot community answers on Discord. For a Komatachi arm, write to hello@komatachi.com.

SO-101 is an open-source arm design by TheRobotStudio and Hugging Face. LeRobot is Hugging Face's open-source robot learning library. Komatachi is not affiliated with either. Command names are from the LeRobot documentation as of September 2026.