content="Inside the SO-ARM101 — every part, explained">
Adem Inside

Inside the SO-ARM101

A six-motor, 3D-printed robot arm that costs about $120 in parts. It is the arm Hugging Face uses to teach robots by demonstration (LeRobot), and one of the most-built open robots in the world. Below is every part of it — click one.

18 parts shown6 motors≈754 g≈$146 to build45 cm reach

What the six joints do

Every part, explained

Source files: TheRobotStudio/SO-ARM100 (Apache-2.0). Parts, prices and figures follow the project README; printed-part masses are estimates from print volume.

Actuators

Feetech STS3215 serial bus servo (7.4 V, 1:345) × 6

Aluminium/plastic case, metal gears, coreless DC motor, PCB · ≈ 60 g each · $13.89 each

What it is. A smart motor. It is a small DC motor, a 345:1 gearbox, a position sensor and a tiny computer in one box. You tell it an angle over a serial cable and it goes there and holds.

Why it is there. Six of these are the entire muscle system of the arm. There are no separate motor drivers, encoders or wiring harnesses because each servo contains its own. That is what makes a $120 robot arm possible.

  • Stall torque: 16.5 kg·cm ≈ 1.6 N·m at 6 V (30 kg·cm for the 12 V version)
  • Speed: ≈ 0.22 s per 60° at 7.4 V
  • Position sensor: 12-bit magnetic encoder, 4,096 steps per turn
  • Control: TTL serial bus, 1 Mbps, daisy-chained; each servo has an ID
  • Voltage: 6–7.4 V (12 V variant available)
  • Gear ratio: 1:345 metal gears
  • Modes: position, constant speed, PWM; reports position, load, temperature, voltage

Inside it:

  • Coreless DC motor — Spins at thousands of rpm with almost no torque. Everything else exists to slow it down and make it precise.
  • Metal gear train (1:345) — Five stages of gears trade speed for torque: 345 turns of the motor = 1 turn of the output horn.
  • Magnetic encoder (12-bit) — A magnet on the output shaft and a Hall-effect chip read the angle to 1/4096 of a turn — the servo always knows where it is, even after power loss.
  • Control MCU — A microcontroller runs the position loop hundreds of times a second and speaks the serial protocol.
  • H-bridge driver (MOSFETs) — Four transistors switch battery current into the motor in either direction.
  • Case, bearing and output horn — The horn is the splined disc the printed parts bolt to; a bearing takes side loads off the gears.

Take it out and… Remove one and that joint goes limp — the arm folds under gravity at that point. Swap in the 12 V version and every joint gets almost twice the torque, for a 12 V supply.

Where to buy →

Electronics

Waveshare Bus Servo Adapter (A) × 1

PCB with USB-C, DC jack, serial bus header · ≈ 15 g each · $10.60 each

What it is. The bridge between the computer and the servos. It takes USB from your laptop and 5–12 V from the power supply and puts both onto the three-wire servo bus.

Why it is there. All six servos daisy-chain onto one cable that ends here. One board, one USB port, one power jack — that is the entire wiring of the arm.

  • Input: USB-C data + 5–12 V DC power
  • Output: TTL and RS485 servo bus headers
  • Servos supported: up to 253 on one bus
  • Size: ≈ 50 × 40 mm

Inside it:

  • USB-to-UART chip — Turns USB into a plain serial stream the servos understand (typically a CH343-class converter).
  • Bus buffer / level shifter — Drives the single half-duplex servo data line so several servos can share it without shouting over each other.
  • Power path — A DC barrel jack, a switch and a fuse-sized trace deliver motor current straight to the bus — the USB side never carries motor power.
  • Status LEDs — Power and data-activity indicators.

Take it out and… The arm is a sculpture. No commands reach the servos and no power does either.

Where to buy →

Power supply 5 V, 5 A (barrel jack) × 1

Switch-mode wall adapter · ≈ 120 g each · $10.00 each

What it is. Wall adapter that powers the servos through the driver board.

Why it is there. USB alone gives 0.5–0.9 A; six servos can pull several amps when they stall, so motor power comes from here.

  • Output: 5 V DC, 5 A (use 12 V 5 A+ for 12 V servos)
  • Connector: 5.5 × 2.1 mm barrel

Take it out and… Servos brown out and reset the moment they push against anything.

Where to buy →

USB-C cable × 1

Copper, braided jacket · ≈ 30 g each · $7.00 each

What it is. Carries commands from the computer to the driver board and sensor readings back.

Why it is there. Position, load and temperature of all six servos stream back over this one cable at 1 Mbps.

Take it out and… No control from the computer; the servos hold their last position.

Where to buy →

3-pin servo bus cables × 6

3-wire JST-style leads (power, ground, data) · ≈ 4 g each · included

What it is. Short daisy-chain leads from servo to servo. They ship in the servo box.

Why it is there. Because the bus is daisy-chained there are only six short cables in the whole arm, routed through the hollow printed links.

Take it out and… Every servo past the missing cable goes dark.

3D-printed structure

Base × 1

PLA+ plastic, FDM 3D-printed, 20% infill · ≈ 68 g each · included in the ~$25 print cost for the whole arm

What it is. The foot of the arm. A wide, flat printed shell that sits on the table and holds the first servo pointing straight up.

Why it is there. Everything else hangs off this. Its width is what stops the arm tipping over when it reaches out; the table clamp bolts through it.

  • Print volume: 123 cm³ solid
  • Triangles in CAD: 9,430

Take it out and… Without it there is nothing to clamp down — the whole arm becomes a loose chain on the table.

Base motor holder × 1

PLA+ plastic, FDM 3D-printed, 20% infill · ≈ 13 g each · included in the ~$25 print cost for the whole arm

What it is. A cradle inside the base that grips the shoulder-pan servo body with four small screws.

Why it is there. Servos have no mounting flange of their own; every servo in this arm sits in a printed cradle like this one.

  • Print volume: 24 cm³ solid
  • Triangles in CAD: 37,540

Take it out and… The first servo would rattle loose in the base and the whole arm would wobble on its axis.

Shoulder motor holder × 1

PLA+ plastic, FDM 3D-printed, 20% infill · ≈ 7 g each · included in the ~$25 print cost for the whole arm

What it is. Cradle for the shoulder-lift servo. It bolts onto the output horn of the servo below, so it turns when the base servo turns.

Why it is there. This is where rotation about the vertical axis is passed upward: the holder is the first moving part.

  • Print volume: 13 cm³ solid
  • Triangles in CAD: 22,586

Take it out and… The shoulder-lift servo has nothing to sit in; the arm above the base falls off.

Shoulder pitch bracket × 1

PLA+ plastic, FDM 3D-printed, 20% infill · ≈ 38 g each · included in the ~$25 print cost for the whole arm

What it is. The bracket that turns the shoulder-lift servo output into a pivot for the upper arm.

Why it is there. It carries the highest load in the whole arm — the weight of everything from the upper arm outward — so it is one of the chunkier prints.

  • Print volume: 69 cm³ solid
  • Triangles in CAD: 17,672

Take it out and… The upper arm loses its pivot and drops.

Upper arm × 1

PLA+ plastic, FDM 3D-printed, 20% infill · ≈ 66 g each · included in the ~$25 print cost for the whole arm

What it is. The long link between shoulder and elbow. The elbow servo sits in a pocket at its far end.

Why it is there. Its length sets the arm's reach. Make it longer and the arm reaches further but every joint needs more torque to hold it up.

  • Print volume: 117 cm³ solid
  • Triangles in CAD: 26,068

Take it out and… No connection between shoulder and elbow — the arm ends at the shoulder.

Lower arm × 1

PLA+ plastic, FDM 3D-printed, 20% infill · ≈ 52 g each · included in the ~$25 print cost for the whole arm

What it is. The forearm link from elbow to wrist. Hollow to save weight, with the wrist-flex servo pocket at the end.

Why it is there. Weight out here costs the most torque at the shoulder, which is why it is the most hollowed-out part.

  • Print volume: 93 cm³ solid
  • Triangles in CAD: 39,516

Take it out and… Elbow to wrist connection gone; the wrist and gripper fall away.

Wrist motor holder × 1

PLA+ plastic, FDM 3D-printed, 20% infill · ≈ 8 g each · included in the ~$25 print cost for the whole arm

What it is. Cradle that clamps the wrist-flex servo into the end of the lower arm.

Why it is there. The wrist servo bears sideways loads when the gripper twists; this cradle holds its body so the gears do not.

  • Print volume: 14 cm³ solid
  • Triangles in CAD: 21,042

Take it out and… The wrist-flex servo would slide out of the forearm.

Wrist × 1

PLA+ plastic, FDM 3D-printed, 20% infill · ≈ 18 g each · included in the ~$25 print cost for the whole arm

What it is. The wrist block. It is driven by the wrist-flex servo and carries the wrist-roll servo (the one without a horn) pointing along the arm.

Why it is there. Two axes meet here: flex (up/down) and roll (twist). Packing both into 6 cm is why this is the most detailed print.

  • Print volume: 32 cm³ solid
  • Triangles in CAD: 53,994

Take it out and… No wrist — the gripper cannot tilt or twist, it just points where the forearm points.

Gripper body (fixed jaw) × 1

PLA+ plastic, FDM 3D-printed, 20% infill · ≈ 32 g each · included in the ~$25 print cost for the whole arm

What it is. The gripper housing and the fixed finger. It bolts to the wrist-roll servo horn and holds the gripper servo.

Why it is there. The fixed jaw is the anvil; the moving jaw closes against it. Rolling this whole block is what lets the gripper approach objects from any angle.

  • Print volume: 57 cm³ solid
  • Triangles in CAD: 28,796

Take it out and… No fixed finger — the moving jaw has nothing to squeeze against, so it cannot hold anything.

Moving jaw × 1

PLA+ plastic, FDM 3D-printed, 20% infill · ≈ 12 g each · included in the ~$25 print cost for the whole arm

What it is. The finger that opens and closes. It is bolted straight to the gripper servo horn.

Why it is there. Servo-driven jaw means grip force is set in software by limiting the servo's load — good for not crushing things.

  • Print volume: 21 cm³ solid
  • Triangles in CAD: 28,270

Take it out and… The gripper cannot close.

Control board mounting plate × 1

PLA+ plastic, FDM 3D-printed, 20% infill · ≈ 5 g each · included in the ~$25 print cost for the whole arm

What it is. A small printed plate that fastens the Waveshare servo driver board to the side of the base.

Why it is there. Keeps the board and its USB/power connectors fixed so cables are not yanked when the arm moves.

  • Print volume: 9 cm³ solid
  • Triangles in CAD: 1,254

Take it out and… The driver board dangles on its cables; nothing else changes.

Fasteners

Servo screws (ship with the servos) × 6

Steel · ≈ 6 g each · included

What it is. Each servo comes with a bag: small self-tapping screws for its body, screws for the horn, and a centre screw that locks the horn to the shaft.

Why it is there. Every printed part attaches with these. No glue, no nuts — screws bite straight into the plastic.

  • Body screws: small self-tapping, 4 per servo
  • Horn screws: attach printed brackets to the splined horn
  • Centre screw: one per horn, locks it to the shaft

Take it out and… Parts separate under load. Losing the centre screw is the classic failure: the horn slips and the joint reads the wrong angle.

Tools & mounting

Table clamps × 2

Steel/plastic · ≈ 150 g each · $5.00 each

What it is. Woodworking clamps that pin the base to the table edge.

Why it is there. The arm weighs about 600 g but can lever itself over when extended; the clamp is what lets it push and pull on things.

Take it out and… The arm walks itself off the table the first time it reaches out.

Where to buy →

Questions people ask

How much does it cost to build the SO-ARM101?

About $146 for one follower arm: six STS3215 servos (~$83), the driver board ($10.60), power supply, cable, clamps and roughly $25 of 3D printing. A leader arm for teleoperation roughly doubles it.

How strong is the SO-ARM101?

Each STS3215 servo stalls at about 1.6 N·m (16.5 kg·cm) at 6 V. With a 45 cm reach the arm lifts roughly 200–300 g at full extension; the 12 V servo variant nearly doubles that.

How many parts are in it?

11 3D-printed parts, 6 servos, 1 driver board, 6 bus cables and the screws that ship with the servos.

Is it really open source?

Yes — the CAD, STL and STEP files, URDF, and bill of materials are published under Apache-2.0 by The Robot Studio. This explorer uses those files unchanged apart from mesh simplification.

Can I change parts here?

Yes. Click any part to read about it, hide it to see what it was holding, pull the exploded-view slider to separate the assembly, and move every joint with the sliders.

Want to design your own arm and test whether its motors can lift the load? Open Adem Forge — free robot design software in your browser.