LeRobot SO-101 Robot Arm

This lab covers the electromechanical assembly, bus communication, and software integration of the LeRobot SO-101, an open-source six-degree-of-freedom robotic manipulator. Students assemble a multi-axis articulated robotic arm using 3D-printed structural components and daisy-chained serial bus servos with integrated magnetic encoders. After wiring DC power and configuring half-duplex serial communication to a host workstation, students calibrate servo positions, set up leader-follower master-slave teleoperation, and utilize the LeRobot Python ecosystem to capture demonstration trajectories for imitation learning. Through this process, students develop practical competencies in robotic kinematics, smart actuator networking, tolerance-critical additive manufacturing, and demonstration-driven robot learning workflows.

robotics robotic manipulator robot arm 6-DOF six degrees of freedom teleoperation master-slave control imitation learning robot learning LeRobot serial bus servo smart actuator Feetech STS3215 3D printing fused deposition modeling FDM PyTorch trajectory recording

Uploaded by demo on 2026-09-03 · ready · Electronics · Original source ↗

Files: README.md · SECURITY.md · SO-ARM100_README.md · pyproject.toml

Readiness checks

  • complete 2026-09-03 18:38 🛡 Cybersecurity: Review before networking · 10 findings 18 searches · 17 pages
    view · PDF

Latest report — 2026-09-03 18:38

Readiness: LeRobot SO-101 Robot Arm

Verdict: Ready with caveats · 2026-09-03 · est. parts cost $135–$280 (single follower arm) · $255–$520 (two-arm teleoperation setup), optional cameras and tactile sensor excluded Cybersecurity — software & network: Review before networking

This is the cold check for this lab — there is no previous report, so everything below is the baseline the next check will measure drift against. Every part can be bought today and both optional depth cameras are Active with deep stock at an authorized distributor. What keeps this off a clean "Ready" is verification, not scarcity: none of the core parts — servos, adapter board, power supply — is carried by an authorized distributor, so there is no lifecycle signal to watch and no trustworthy stock figure; US street price for the STS3215 servos runs roughly double the $13.89 the upstream bill of materials quotes; the adapter board's Japanese distributor raised its price 31% (¥980 to ¥1,280) in July 2026; and two supply-voltage specs are in open conflict with the lab snapshot, both on the power rail. Settle those two before an order goes out.

Action required

Part Problem Recommended action
Feetech STS3215 C044 (1/191) and C046 (1/147) Akizuki Denshi's listing gives a minimum supply of 6 V; the snapshot says the lab runs these at 5.0 V on a 5 V bus. Two sources disagree on the servo's own supply rail. Confirm the minimum supply against the Feetech STS3215 datasheet before buying the 5 V adapter. If 6 V is correct, the leader arm needs a supply inside 6–7.4 V, not 5 V. Level shifting does not fix a supply rail.
Waveshare Bus Servo Adapter Board Akizuki's spec block gives the DC input as 9–12.6 V; the snapshot says 5–12 V and the upstream BOM ships a 5 V supply with it. A fetch of the Waveshare wiki page was blocked this run, so the conflict is unresolved. Check the DC-jack input range on Waveshare's own product page before choosing the power supply.
Feetech STS3215 C001 / C044 / C046 No authorized distributor carries any of them (DigiKey returned no products; ECIA reports no authorized distributor). US retail is about 2× the upstream BOM's $13.89 reference. Budget from live retail ($27.64 per servo), not the BOM figure. Order through the upstream project's own vendor links, and buy spares — there is no lifecycle or stock signal to warn you.
Waveshare Bus Servo Adapter Board Marketplace relistings ($26–$29 at eBay, AliExpress, Newegg) are 5× the manufacturer's own price. Buy direct from Waveshare at $4.99.
AnySkin / WOWSKIN tactile sensor (optional) Price and stock could not be read from the vendor page, and the store's data endpoint returned nothing usable. Contact WowRobo directly before planning a cohort around it, or build the open-source AnySkin original.
32 × 32 mm UVC camera module (optional) No listing in evidence states a 32 × 32 mm board size, and the printed bracket's screw holes are the binding constraint. Measure the printed bracket and check the seller's dimension drawing before ordering.

Cybersecurity — software & network

Review before networking — Seven advisory findings stand against the versions the project's lockfile installs — four of them high severity and three with no upgrade the project's own constraints allow — alongside an unversioned vendor binary and an unpinned optional web interface.

Component Version How known Support status
Python (CPython) runtime 3.12 inferred (lower bound of requires-python = ">=3.12" in fetched/01-pyproject.toml; the range does not pin a version) supported until 2028-10-31
lerobot 0.6.2 read from project (version = "0.6.2" in fetched/01-pyproject.toml) —
torch 2.11.0 read from project (pinned in fetched/02-uv.lock (pyproject only bounds it >=2.7,<2.12.0)) —
torchvision 0.26.0 read from project (pinned in fetched/02-uv.lock) —
numpy 2.2.6 read from project (pinned in fetched/02-uv.lock) —
opencv-python-headless 4.13.0.92 read from project (pinned in fetched/02-uv.lock) —
Pillow 12.3.0 read from project (pinned in fetched/02-uv.lock) —
einops 0.8.2 read from project (pinned in fetched/02-uv.lock) —
draccus 0.11.6 read from project (pinned in fetched/02-uv.lock) —
huggingface-hub 1.26.0 read from project (pinned in fetched/02-uv.lock) —
requests 2.34.2 read from project (pinned in fetched/02-uv.lock) —
gymnasium 1.3.0 read from project (pinned in fetched/02-uv.lock) —
safetensors 0.8.0 read from project (pinned in fetched/02-uv.lock) —
packaging 25.0 read from project (pinned in fetched/02-uv.lock) —
termcolor 3.3.0 read from project (pinned in fetched/02-uv.lock) —
tqdm 4.70.0 read from project (pinned in fetched/02-uv.lock) —
cmake 4.1.3 read from project (pinned in fetched/02-uv.lock) —
setuptools 81.0.0 read from project (pinned in fetched/02-uv.lock) —
feetech-servo-sdk 1.0.0 read from project (pinned in fetched/02-uv.lock) —
pyserial 3.5 read from project (pinned in fetched/02-uv.lock) —
deepdiff 8.6.2 read from project (pinned in fetched/02-uv.lock) —
pynput 1.8.2 read from project (pinned in fetched/02-uv.lock) —
pyrealsense2 2.56.5.9235 read from project (pinned in fetched/02-uv.lock) —
pygame 2.6.1 read from project (pinned in fetched/02-uv.lock) —
hidapi 0.14.0.post4 read from project (pinned in fetched/02-uv.lock) —
gitpython (transitive, via the wandb experiment-tracking extra) 3.1.57 read from project (pinned in fetched/02-uv.lock; not named in pyproject.toml) —
protobuf 6.32.0 read from project (pinned in fetched/02-uv.lock; pyproject bounds it >=6.31.1,<8.0.0 and the reachy2 extra caps it <=6.32.0) —
tornado (transitive, via jupyter / ipykernel) 6.5.7 read from project (pinned in fetched/02-uv.lock; not named in pyproject.toml) —
transformers (policy extras: SmolVLA, Pi0 and similar) 5.5.4 read from project (pinned in fetched/02-uv.lock; pyproject bounds it >=5.4.0,<5.6.0) —
datasets 4.8.5 read from project (pinned in fetched/02-uv.lock; pyproject bounds it >=4.8.0,<5.0.0) —
LeLab optional browser interface not determined unpinned (snapshot names https://github.com/huggingface/leLab with no tag or commit; the repository page was reachable this run but no manifest was fetched) —
FT_SCServo_Debug_Qt motor debugging tool not determined unpinned (unpinned GitHub master at https://github.com/Kotakku/FT_SCServo_Debug_Qt; reachable this run, no release tag) —
Feetech PC debugging software (Windows vendor tool) not determined not determined (vendor-hosted binary; https://feetechrc.com/software.html fetched this run returned 109 characters of readable text and no version string) —
Component Finding Severity Fix available?
gitpython The GitPython 3.1.57 that the lockfile installs (pulled in by the experiment-tracking extra, not by the robot code) has several high-severity flaws that let a specially crafted Git repository or .gitmodules file run commands or overwrite files on the workstation, so cloning an untrusted dataset or policy repository is risky. — GHSA-jm78-9fvv-mhgr, GHSA-wvpp-8hx9-p66j, GHSA-hmq2-w58f-27jc, GHSA-4gmw-gg2m-w46p (+2 more) high Yes — update to 3.1.59
protobuf Protobuf 6.32.0 can be pushed past its JSON recursion limit, which a malicious message stream could use to crash the process; it is only in the picture when the gRPC or Reachy2 extras are installed. — GHSA-7gcm-g887-7qv7 high Yes — update to 6.33.5 (allowed by the main constraint protobuf>=6.31.1,<8.0.0; the optional reachy2 extra caps protobuf<=6.32.0 and would have to be dropped)
tornado Tornado 6.5.7, installed underneath the Jupyter notebook tooling, can be stalled or driven out of memory by a single crafted HTTP request, which matters only if a student runs a notebook server reachable from the network. — GHSA-mpf4-983q-p7j4, GHSA-8423-8fgw-73vq, GHSA-wwv5-g3v4-889x high Yes — update to 6.5.8
transformers Transformers 5.5.4, used by the SmolVLA and Pi0 policy extras, can be made to write files outside the intended directory through a crafted chat-template name, so loading a policy checkpoint from an untrusted Hugging Face repository could overwrite files on the workstation. — GHSA-xrqw-3rrv-vx5w high No — project pins transformers >=5.4.0,<5.6.0
datasets The datasets 4.8.5 folder-based builders do not validate the file_name field in dataset metadata, so a downloaded dataset can write files outside its own directory; the advisory carries no severity score in the database, and this library is on the path every recorded demonstration takes. — PYSEC-2026-3716 moderate No — project pins datasets >=4.8.0,<5.0.0
setuptools Setuptools 81.0.0 can include files a project meant to exclude when building a source distribution on macOS, which affects packaging rather than running the arm. — GHSA-h35f-9h28-mq5c moderate No — project pins setuptools >=71.0.0,<82.0.0
torch PyTorch 2.11.0 has a memory-corruption bug reachable through torch.jit.script; it needs attacker-controlled model code to matter, which is only the case if the class loads policy checkpoints from untrusted sources. — GHSA-rrmf-rvhw-rf47 low No — project pins torch >=2.7,<2.12.0
Feetech PC debugging software The Windows motor-configuration tool the lab uses is a vendor-hosted binary installed with no version tag and no vulnerability database behind it, so there is no way to tell one build from another or to check the file students download. posture Mitigation only — prefer the open-source FT_SCServo_Debug_Qt, or run the vendor binary on a non-production machine after scanning it
LeLab optional browser interface The optional LeLab web interface starts a local HTTP server and is installed from an unpinned GitHub repository, and the snapshot records no authentication for that interface, so its security state is unchecked. posture Mitigation only — leave LeLab bound to localhost, and do not expose the workstation's web port on a classroom or campus network
lerobot dependency set dependencies unpinned: 86 of 87 in pyproject.toml — the manifest declares version ranges, so a plain pip install resolves to whatever is current that day, and the versions checked in this report are the ones the repository's uv.lock resolves to. posture Mitigation only — install with uv sync so the exact versions in uv.lock are the ones that land on the workstation

What this means for your lab

The arm itself has no network hardware — it talks to the workstation over a USB cable — so nobody can reach the robot over the network. The risk sits on the workstation, and it comes from what that workstation downloads: the software fetches datasets and trained policies from Hugging Face over the internet, and several of the installed libraries have known flaws that only bite when the material being downloaded is malicious. In practice that means a student pulling a random dataset or model from the internet could, in the worst case, get files written or commands run on that computer. Two things keep this small: install the software with uv sync so the versions are the ones this check looked at, and only download datasets and policy checkpoints from accounts you recognise. If students will run the optional LeLab browser interface or a Jupyter notebook server, keep those on the machine itself rather than opening them to the classroom network, and mention it to campus IT before putting the workstation on a shared network. The vendor's Windows servo-configuration tool is an unversioned download with nothing to check it against — prefer the open-source debugging tool, or run the vendor one on a machine you do not mind rebuilding.

Not checked

  • lerobot 0.6.2: The version declared in the repository's pyproject.toml does not exist on PyPI, so OSV has no matching release to check — the checkout is ahead of the published releases.
  • Feetech PC debugging software: Vendor-hosted Windows binary with no version tag and no vulnerability database covering it, so there is nothing to look up.
  • FT_SCServo_Debug_Qt: Unpinned GitHub master with no release tag, and no advisory database covers source-only C++/Qt projects.
  • LeLab optional browser interface: Unpinned repository; no version to look up and no manifest was fetched for it this run.
  • Dependencies as resolved from the pyproject ranges: Only the 337 versions pinned in uv.lock were checked; a pip install that follows the ranges can land on different versions, including older ones the ranges still allow.
  • lerobot 0.6.2: this version does not exist in the package registry (a kit or hardware release number is not a software version)

Parts

Actuators and Electromechanical

Part Spec/Package Status Stock Price Source
Feetech STS3215 C001 7.4 V, 1/345 gear, 45.23 × 24.73 × 35 mm readily available (no authorized distributor) not verified $27.64 ea; upstream BOM ref $13.89 / ¥2,980 Kuriosity (retail); Akizuki 116312; upstream BOM
Feetech STS3215 C044 7.4 V, 1/191 gear, 45.23 × 24.73 × 35 mm readily available; supply rail disputed not verified sold in the same $27.64 "C001 & C044 Variants" listing; upstream BOM ref $13.89 / ¥2,980 Akizuki 131131; upstream BOM
Feetech STS3215 C046 7.4 V, 1/147 gear, 45.23 × 24.73 × 35 mm readily available; supply rail disputed not verified upstream BOM ref $13.89 / ¥2,980; no US listing named the C046 suffix Akizuki 131132; upstream BOM
Feetech STS3215 12 V high-torque (optional) 12 V, 30 kg·cm; sold as suffix C018 readily available not verified $15.99–$29.37 WowRobo, Robotopian, OpenELAB, Walmart (retail)

Control Electronics and Interface Boards

Part Spec/Package Status Stock Price Source
Waveshare Bus Servo Adapter Board 42 × 33 mm per distributor (snapshot says 42 × 30 mm); USB-C + 5.5 × 2.1 mm DC jack; UART/USB readily available; DC-input range disputed not verified $4.99 direct; ¥1,280 JP (was ¥980 until 2026-07-09); $26–$28.82 via marketplaces Waveshare (retail); Akizuki 131227

Power Supplies and Cabling

Part Spec/Package Status Stock Price Source
AC-to-DC 5 V supply, 5.5 × 2.1 mm barrel 100–240 V AC in, 5 V DC out, ≥2 A (3–4 A recommended), centre-positive readily available not verified $8.79–$15.99 (5 V 4 A) Conversions Tech, Tinkersphere, Micro Center, Walmart (retail)
USB Type-C data cable, ≥1 m USB 2.0 data pairs required; charge-only cables will not work readily available not verified $1.90–$14.99 odroid, Walmart, Best Buy (retail)

Mechanical Tools and Workstation Mounting

Part Spec/Package Status Stock Price Source
Trigger ratchet bar clamps, 6 in 2 per arm; any C-clamp or F-clamp accepted readily available (commodity) not verified $5 (2 pcs) / $9 (4 pcs) — upstream BOM reference, not a live listing upstream BOM
Precision screwdriver set Phillips PH0 and PH1 readily available (commodity) not verified $6 — upstream BOM reference, not a live listing upstream BOM
M3 machine screws 10–16 mm, socket or pan head; 2 needed for the compliant gripper readily available not verified $13.99–$21.38 per assortment kit Walmart, Home Depot (retail)

Raw Fabrication Materials

Part Spec/Package Status Stock Price Source
PLA+ filament, 1.75 mm 0.6–1.0 kg per arm readily available not verified $14.99/kg (range $9.94–$19.99) eSUN, Micro Center, Bambu Lab (retail)
TPU 95A filament, 1.75 mm approx. 50 g for the compliant fingers readily available not verified $9.19–$34.99 per spool Creality, Antinsky, Polymaker, Bambu Lab (retail)
High-friction gripper tape (optional) approx. 50 mm strip; any non-slip friction tape not checked — — —

Optional Sensors and Add-on Vision Hardware

Part Spec/Package Status Stock Price Source
Intel RealSense D405 RealSense 99ACXD, camera only, 5 V USB 3.1 Type-C readily available, Active 749 $278.75 (with cable: $288.75, 329 in stock) DigiKey
Intel RealSense D435 / D435i RealSense 962305 (D435) and 999AFR (D435i), chassis mount, 0 °C ~ 85 °C readily available, Active 148 (D435), 328 (D435i) $322.50 (D435) · $355.00 (D435i) DigiKey
32 × 32 mm UVC camera module USB 2.0 UVC, fixed-focus wide angle; must fit the printed bracket available as a class; 32 × 32 mm footprint not verified not verified $6.95–$41.08 DigiKey, inno-maker, Arducam (retail)
AnySkin / WOWSKIN tactile sensor module Magnetic tactile skin with SO-101 structural parts not checked (listing live, price and stock unreadable) — — shop.wowrobo.com

Substitutes

For part Substitute Differences Verified Judgment
Feetech STS3215 12 V high-torque (optional) DFRobot ST3215 30 kg serial bus servo — $19.90 (DFRobot) / $24.88 (DigiKey listing) Matches only on what the listings state: 30 kg·cm class, serial bus servo. The lab's binding constraints — the Feetech STS register map hardcoded in feetech-servo-sdk, the 45.23 × 24.73 × 35 mm envelope, the proprietary Feetech output spline, the gear ratio — are absent from the evidence. verified: torque class and "serial bus servo" wording only (seller listing titles). not verified: protocol and register map, mechanical envelope, output spline geometry, gear ratio, supply-voltage range plausible, unverified — not a drop-in. The snapshot rates substitution latitude "Low" and the printed chassis is form-fitted to the Feetech body; treat this as a lead, not a swap.
AnySkin / WOWSKIN tactile sensor module Self-built AnySkin (the open-source original the commercial module is built from) Same sensing pipeline by construction — the vendor's own page names AnySkin and ReSkin as its foundations and publishes its software adaptation. What you give up is the plug-and-play hardware and the ready-made SO-101 structural parts. verified: that the open-source original exists and is the stated basis of the product (vendor page fetched this run). not verified: build cost, magnet and elastomer sourcing, fit to the SO-101 gripper bracket, price plausible, unverified — a real way forward if the commercial module is unavailable, but it is a build project, not a purchase.

Verify any substitute against its datasheet and the seller's dimension drawing before ordering.

Other dependencies

  • 3D printing (all 14 structural parts plus 4 fit gauges) — no external service or vendor needed; the STL files ship in the repository. Print settings confirmed on the upstream page fetched this run: PLA+, 0.4 mm nozzle at 0.2 mm layer height or 0.6 mm at 0.4 mm, 15% infill, supports everywhere ignoring slopes over 45°, no supports inside horizontal screw holes. Single-plate files need a 220 × 220 mm bed (Ender class) or 205 × 250 mm (Prusa class); sample printers listed are Prusa MINI+, UP Plus 2, Creality Ender 3 and Bambu Lab A/P/X.
  • SO-ARM100 / SO-101 repository — reachable. Carries the live bill of materials with per-region purchase links, and quotes totals of $121.94 (follower only) and $229.88 (two-arm) excluding filament, screws and cameras.
  • LeRobot SO-101 assembly guide — reachable; assembly steps, the leader-arm gear-ratio table and calibration instructions all intact.
  • XLeRobot extended documentation — reachable.
  • The Robot Studio — reachable.
  • Akizuki Denshi parts catalog — reachable; all three servo variants and the adapter board are listed there today.
  • WOWROBO AnySkin product listing — reachable, but price and stock could not be extracted.
  • Feetech RC software download portal — resolves, but the fetch returned only 109 characters of readable text and no download detail. Treat it as a link that answers, not a working download page.
  • Waveshare Bus Servo Adapter wiki — not reachable this run ("Page could not be downloaded (blocked, timeout, or gone)"), which is why the board's DC-input range is unresolved.

Watch list

  • The three 7.4 V STS3215 servo variants — the whole lab rests on them, no authorized distributor carries them, and there is therefore no lifecycle status, no stock figure and no obsolescence warning. A single Alibaba listing going quiet would strand the build. This is the line most likely to fail a future check.
  • Waveshare Bus Servo Adapter Board price — up 31% at Akizuki Denshi (¥980 to ¥1,280) on 2026-07-09. Watch whether the manufacturer's own $4.99 price follows.
  • US servo street price — $27.64 against the upstream BOM's $13.89. If the gap widens, per-cohort cost roughly doubles again.
  • RealSense D435 stock (148 units) — the thinnest stock in the RealSense line, and the product family has moved out of Intel to a standalone "RealSense" manufacturer. Worth re-checking before a bulk order.
  • Akizuki's mould-change notice on the C001 servo — a light guide is being added from the next intake lot, shipped at random with the old body. If the printed fit gauges start failing, this is the first thing to check.
  • The two unresolved supply-voltage conflicts — until the Feetech and Waveshare datasheets settle them, every power-supply purchase for this lab is a guess.
Snapshot What the lab depended on when it was uploaded — the baseline the readiness checks research against.

This lab builds the LeRobot SO-101 Robot Arm, an open-source 6-degree-of-freedom robotic manipulator designed for teleoperation, demonstration recording, and imitation learning policy execution. The platform is implemented either as a standalone 6-axis follower arm or as a complete two-arm teleoperation master-slave setup (one 6-axis follower arm and one 6-axis leader arm). The host platform is an external workstation running the LeRobot Python software stack, communicating over USB-C to serial bus servo adapter boards. The electrical design runs on two main power domains: a 5 V DC logic and motor power bus (supplied via an external AC/DC wall adapter with a 5.5 × 2.1 mm barrel connector providing 5 V to daisy-chained Feetech STS3215 serial bus servos, or optionally 12 V DC at ≥ 5 A if 12 V high-torque servos are fitted), and a 5 V USB VBUS logic rail supplied by the host computer over USB-C to power the USB-to-UART bridge circuitry on the motor adapter boards.

Bill of Materials

Actuators and Electromechanical

Feetech STS3215 Serial Bus Servo, 7.4 V Nominal, 1/345 Reduction Gear (Part Number: STS3215 C001)

  • Quantity needed: 6 for single follower arm; 7 for two-arm teleoperation setup (6 units for the follower arm joints, 1 unit for the leader arm base/jaw).
  • Footprint/package: Feetech standard STS3215 servo enclosure (approximately 45.2 mm × 24.7 mm × 35 mm) with dual-ended mounting tabs and proprietary Feetech output spline.
  • Electrical constraints: Nominal voltage 7.4 V DC, operating voltage range 5.0 V to 7.4 V DC. Stall torque is 16.5 kg·cm at 6.0 V (operable at slightly reduced torque on 5.0 V bus). Gear reduction ratio 1/345. Communicates via half-duplex asynchronous TTL serial bus over 3-pin daisy-chain wiring at up to 1 Mbps. Integrated 12-bit magnetic encoder for position feedback.
  • Substitution latitude: Low. The 3D-printed chassis parts (Base, Motor Holders, Upper Arm, Under Arm, Wrist) are form-fitted to the exact mechanical dimensions, hole pitch, and horn geometry of the Feetech STS3215. The communication protocol and register map are hardcoded in the LeRobot driver stack (feetech-servo-sdk). A substitution must match both physical dimensions and the Feetech STS serial protocol.
  • Operated control: In the follower arm, these act as closed-loop actuators. In the leader arm, one unit is operated by the student as a backdriven manual joint.
  • Sourcing plan: distributor lookup: Feetech STS3215 C001

Feetech STS3215 Serial Bus Servo, 7.4 V Nominal, 1/191 Reduction Gear (Part Number: STS3215 C044)

  • Quantity needed: 2 for two-arm teleoperation setup (used for lower-resistance leader arm joints). Not used in standalone follower build.
  • Footprint/package: Feetech STS3215 enclosure (45.2 mm × 24.7 mm × 35 mm).
  • Electrical constraints: Operating voltage 5.0 V to 7.4 V DC. Gear reduction ratio 1/191. TTL serial bus communication, 12-bit magnetic encoder. The lower gear ratio reduces backdrive friction so a human operator can move the leader arm smoothly without motor resistance.
  • Substitution latitude: Must be the specific 1/191 gear ratio variant of the Feetech STS3215. Standard 1/345 servos create excessive backdrive resistance for teleoperation input.
  • Operated control: Yes. Directly backdriven and manipulated by the student during teleoperation sessions.
  • Sourcing plan: distributor lookup: Feetech STS3215 C044

Feetech STS3215 Serial Bus Servo, 7.4 V Nominal, 1/147 Reduction Gear (Part Number: STS3215 C046)

  • Quantity needed: 3 for two-arm teleoperation setup (used for wrist and gripper joints on the leader arm). Not used in standalone follower build.
  • Footprint/package: Feetech STS3215 enclosure (45.2 mm × 24.7 mm × 35 mm).
  • Electrical constraints: Operating voltage 5.0 V to 7.4 V DC. Gear reduction ratio 1/147 for ultra-low backdrive friction and high manual compliance. TTL serial bus communication, 12-bit magnetic encoder.
  • Substitution latitude: Must be the specific 1/147 gear ratio variant of the Feetech STS3215.
  • Operated control: Yes. Directly backdriven and manipulated by the student's hand/fingers (including the gripper trigger) during teleoperation.
  • Sourcing plan: distributor lookup: Feetech STS3215 C046

Feetech STS3215 Serial Bus Servo, 12 V High-Torque Version (Optional Alternative for Follower Arm)

  • Quantity needed: 6 (replaces the 6 C001 servos on the follower arm if high-payload operation is desired).
  • Footprint/package: Feetech STS3215 enclosure.
  • Electrical constraints: Nominal voltage 12 V DC. Stall torque 30 kg·cm. Requires a 12 V DC power supply rated at ≥ 5 A.
  • Substitution latitude: Optional upgrade, but if selected, all 6 follower motors must share the 12 V rating, and 5 V supplies must not be connected to the servo bus.
  • Operated control: No.
  • Sourcing plan: distributor lookup: Feetech STS3215 12V 30KG

Control Electronics and Interface Boards

Waveshare Bus Servo Adapter Board (Motor Control Board)

  • Quantity needed: 1 for single follower arm; 2 for two-arm teleoperation setup.
  • Footprint/package: Waveshare dedicated bus servo adapter PCB (approx. 42 mm × 30 mm), mounting to the 3D-printed WaveShare Mounting Plate.
  • Electrical constraints: USB Type-C connector receiving 5 V USB VBUS from the host PC. DC power input via 5.5 × 2.1 mm DC barrel jack (supports 5 V to 12 V DC input). 3-pin 2.54 mm pitch or JST-style servo bus connectors delivering motor power and half-duplex UART communication. Onboard USB-to-UART serial transceiver operating at up to 1 Mbps baud.
  • Substitution latitude: Low to moderate. The board integrates the half-duplex automatic directional control circuit required for Feetech 3-wire bus servos. Any substitute must provide an identical USB-to-TTL half-duplex converter circuit and fit the chassis mount.
  • Operated control: No.
  • Sourcing plan: distributor lookup: Waveshare Bus Servo Adapter Board

Power Supplies and Cabling

AC-to-DC Regulated Power Supply, 5 V DC, 5.5 × 2.1 mm Barrel Plug

  • Quantity needed: 1 for single follower arm; 2 for two-arm teleoperation setup.
  • Footprint/package: External AC wall adapter (plug-in transformer brick) with 1.2 m to 1.5 m DC cable terminated in a 5.5 mm OD × 2.1 mm ID center-positive barrel connector.
  • Electrical constraints: Input 100-240 V AC, 50/60 Hz. Output 5.0 V DC regulated. Current capability must be ≥ 2.0 A per arm (3 A to 4 A recommended for multi-servo dynamic motions). Note: If 12 V STS3215 motors are fitted, this must be replaced by a 12 V DC supply rated at ≥ 5.0 A.
  • Substitution latitude: Any regulated DC power supply with 5.0 V output, center-positive 5.5 × 2.1 mm plug, and adequate current rating works.
  • Operated control: No.
  • Sourcing plan: retail shopping search: 5V 4A power supply 5.5mm 2.1mm barrel jack

USB Type-C to Type-A / Type-C Cable

  • Quantity needed: 1 cable for single follower arm; 2 cables (or one 2-piece pack) for two-arm teleoperation setup.
  • Footprint/package: Standard USB cable with male USB Type-C connector at the robot end and appropriate male connector (Type-A or Type-C) for the host workstation. Minimum length 1.0 m recommended.
  • Electrical constraints: Must support USB 2.0 data lines (D+ / D-) and 5 V VBUS power delivery. Charge-only cables missing data pairs will not work.
  • Substitution latitude: Any functional USB data sync cable.
  • Operated control: No.
  • Sourcing plan: retail shopping search: USB-C data cable 1m

Mechanical Tools and Workstation Mounting

Trigger Ratchet Woodworking Clamps (Table Clamps)

  • Quantity needed: 2 clamps for single arm; 4 clamps (or one 4-piece pack) for two-arm teleoperation setup.
  • Footprint/package: 6-inch quick-release trigger ratchet bar clamp with non-marring rubber jaw pads.
  • Electrical constraints: None.
  • Substitution latitude: Any manual C-clamp, F-clamp, or desk mount capable of securely clamping the printed 3D arm base flange to a desktop surface.
  • Operated control: Yes. Manually ratcheted and released by the operator during arm mounting.
  • Sourcing plan: retail shopping search: 6 inch trigger ratchet bar clamp

Precision Screwdriver Set

  • Quantity needed: 1 set.
  • Footprint/package: Handheld precision driver handle with Phillips size #0 (PH0) and size #1 (PH1) bits.
  • Electrical constraints: None.
  • Substitution latitude: Any standard precision screwdriver set containing PH0 and PH1 bits.
  • Operated control: Yes. Used during mechanical assembly.
  • Sourcing plan: retail shopping search: precision screwdriver set Phillips PH0 PH1

M3 Machine Screws (Fasteners)

  • Quantity needed: 2 screws (required specifically when assembling the hybrid compliant gripper).
  • Footprint/package: M3 metric machine screw, socket head or pan head, length 10 mm to 16 mm.
  • Electrical constraints: None.
  • Substitution latitude: Any standard M3 machine screw.
  • Operated control: No.
  • Sourcing plan: retail shopping search: M3 socket head cap screws assortment

Raw Fabrication Materials

Rigid 3D Printing Filament: PLA+

  • Quantity needed: Approximately 0.6 kg to 1.0 kg per arm (1 kg to 2 kg for a full two-arm setup).
  • Footprint/package: 1.75 mm filament spool.
  • Electrical constraints: None. Mechanical tensile strength of PLA+ required for structural rigidity and joint alignment.
  • Substitution latitude: Standard PLA, PETG, or ABS can be used, though PLA+ is specified to match the calibrated tolerance gauges.
  • Operated control: No.
  • Sourcing plan: retail shopping search: PLA+ 1.75mm filament spool

Flexible 3D Printing Filament: TPU 95A

  • Quantity needed: Approximately 50 g (used for compliant gripper fingers).
  • Footprint/package: 1.75 mm flexible filament spool, Shore hardness 95A.
  • Electrical constraints: None.
  • Substitution latitude: Any 90A to 95A Shore hardness TPU filament.
  • Operated control: No.
  • Sourcing plan: retail shopping search: TPU 95A 1.75mm flexible filament

High-Friction Gripper Tape (Optional)

  • Quantity needed: 1 strip (approx. 50 mm).
  • Footprint/package: 3M high-friction polyurethane or rubberized grip tape.
  • Electrical constraints: None.
  • Substitution latitude: Any adhesive non-slip friction tape.
  • Operated control: No.
  • Sourcing plan: retail shopping search: 3M high friction grip tape

Optional Sensors and Add-on Vision Hardware

Intel RealSense D405 Depth Camera

  • Quantity needed: Up to 1 per arm (optional wrist camera).
  • Footprint/package: Intel RealSense D405 sub-millimeter RGBD camera enclosure.
  • Electrical constraints: 5 V USB 3.1 Type-C.
  • Substitution latitude: Low if running RealSense-specific perception models.
  • Operated control: No.
  • Sourcing plan: distributor lookup: Intel RealSense D405

Intel RealSense D435 / D435i Depth Camera

  • Quantity needed: 1 (optional overhead or wrist vision sensor).
  • Footprint/package: Intel RealSense D435 chassis.
  • Electrical constraints: 5 V USB 3.0 Type-C.
  • Substitution latitude: Low if using native RealSense SDK streams.
  • Operated control: No.
  • Sourcing plan: distributor lookup: Intel RealSense D435

32 × 32 mm UVC Camera Module

  • Quantity needed: 1 to 3 units (for wrist and overhead mount options).
  • Footprint/package: Bare 32 mm × 32 mm PCB camera board with USB interface and fixed-focus wide-angle lens.
  • Electrical constraints: 5 V DC via USB 2.0 4-pin JST / USB cable.
  • Substitution latitude: Any standard 32 × 32 mm UVC video module fitting the bracket screw holes.
  • Operated control: No.
  • Sourcing plan: retail shopping search: 32x32mm UVC camera module

AnySkin / WOWSKIN Tactile Sensor Module

  • Quantity needed: 1 (optional gripper tactile sensing module).
  • Footprint/package: Custom magnetic tactile sensor skin module manufactured by WOWROBO.
  • Electrical constraints: 5 V logic and digital serial interface.
  • Substitution latitude: Proprietary to the AnySkin/WOWROBO tactile sensing pipeline.
  • Operated control: No.
  • Sourcing plan: retail shopping search: WOWROBO AnySkin tactile sensor module

Software and network dependencies

The LeRobot SO-101 relies on host-side Python software and motor communication drivers running on Linux, macOS, or Windows workstations, communicating with the serial bus converters over USB virtual serial ports.

Software Components

Python Runtime Environment

  • Platform: CPython interpreter.
  • Version: Version constraint >=3.12 (pinned in pyproject.toml line: requires-python = ">=3.12").
  • Where version came from: pinned in pyproject.toml.
  • Check plan: support-status lookup: Python 3.12

LeRobot Robotics Control and Machine Learning Framework

  • Name: lerobot
  • Repository: https://github.com/huggingface/lerobot
  • Version: 0.6.2 (stated in pyproject.toml).
  • Where version came from: pinned in pyproject.toml.
  • Check plan: vulnerability lookup: lerobot / PyPI / 0.6.2

PyTorch Core Tensor Computation and Machine Learning Framework

  • Name: torch
  • Version: >=2.7,<2.12.0 (pinned in pyproject.toml).
  • Where version came from: pinned in pyproject.toml.
  • Check plan: vulnerability lookup: torch / PyPI / 2.7.0

Torchvision Computer Vision Library

  • Name: torchvision
  • Version: >=0.22.0,<0.27.0 (pinned in pyproject.toml).
  • Where version came from: pinned in pyproject.toml.
  • Check plan: vulnerability lookup: torchvision / PyPI / 0.22.0

NumPy Scientific Computing Library

  • Name: numpy
  • Version: >=2.0.0,<2.3.0 (pinned in pyproject.toml).
  • Where version came from: pinned in pyproject.toml.
  • Check plan: vulnerability lookup: numpy / PyPI / 2.0.0

OpenCV Headless Computer Vision Library

  • Name: opencv-python-headless
  • Version: >=4.9.0,<4.14.0 (pinned in pyproject.toml).
  • Where version came from: pinned in pyproject.toml.
  • Check plan: vulnerability lookup: opencv-python-headless / PyPI / 4.9.0

Pillow Image Processing Library

  • Name: Pillow
  • Version: >=10.0.0,<13.0.0 (pinned in pyproject.toml).
  • Where version came from: pinned in pyproject.toml.
  • Check plan: vulnerability lookup: Pillow / PyPI / 10.0.0

Einops Array Operations Library

  • Name: einops
  • Version: >=0.8.0,<0.9.0 (pinned in pyproject.toml).
  • Where version came from: pinned in pyproject.toml.
  • Check plan: vulnerability lookup: einops / PyPI / 0.8.0

Draccus Configuration Management Library

  • Name: draccus
  • Version: >=0.11.6,<0.12.0 (pinned in pyproject.toml).
  • Where version came from: pinned in pyproject.toml.
  • Check plan: vulnerability lookup: draccus / PyPI / 0.11.6

Hugging Face Hub Client Library

  • Name: huggingface-hub
  • Version: >=1.6.0,<2.0.0 (pinned in pyproject.toml).
  • Where version came from: pinned in pyproject.toml.
  • Check plan: vulnerability lookup: huggingface-hub / PyPI / 1.6.0

Requests HTTP Networking Library

  • Name: requests
  • Version: >=2.32.0,<3.0.0 (pinned in pyproject.toml).
  • Where version came from: pinned in pyproject.toml.
  • Check plan: vulnerability lookup: requests / PyPI / 2.32.0

Gymnasium Reinforcement Learning Interface

  • Name: gymnasium
  • Version: >=1.1.1,<2.0.0 (pinned in pyproject.toml).
  • Where version came from: pinned in pyproject.toml.
  • Check plan: vulnerability lookup: gymnasium / PyPI / 1.1.1

Safetensors Safe Serialization Library

  • Name: safetensors
  • Version: >=0.4.3,<1.0.0 (pinned in pyproject.toml).
  • Where version came from: pinned in pyproject.toml.
  • Check plan: vulnerability lookup: safetensors / PyPI / 0.4.3

Packaging Python Package Version Handling Library

  • Name: packaging
  • Version: >=24.2,<26.0 (pinned in pyproject.toml).
  • Where version came from: pinned in pyproject.toml.
  • Check plan: vulnerability lookup: packaging / PyPI / 24.2

Termcolor Terminal Output Formatting Library

  • Name: termcolor
  • Version: >=2.4.0,<4.0.0 (pinned in pyproject.toml).
  • Where version came from: pinned in pyproject.toml.
  • Check plan: vulnerability lookup: termcolor / PyPI / 2.4.0

TQDM Progress Meter Library

  • Name: tqdm
  • Version: >=4.66.0,<5.0.0 (pinned in pyproject.toml).
  • Where version came from: pinned in pyproject.toml.
  • Check plan: vulnerability lookup: tqdm / PyPI / 4.66.0

CMake Build Automation Tool

  • Name: cmake
  • Version: >=3.29.0.1,<4.2.0 (pinned in pyproject.toml).
  • Where version came from: pinned in pyproject.toml.
  • Check plan: vulnerability lookup: cmake / PyPI / 3.29.0.1

Setuptools Build System Utilities

  • Name: setuptools
  • Version: >=71.0.0,<82.0.0 (pinned in pyproject.toml).
  • Where version came from: pinned in pyproject.toml.
  • Check plan: vulnerability lookup: setuptools / PyPI / 71.0.0

Feetech Servo SDK (Hardware Driver Extra)

  • Name: feetech-servo-sdk
  • Version: >=1.0.0,<2.0.0 (pinned in pyproject.toml under [project.optional-dependencies] feetech).
  • Where version came from: pinned in pyproject.toml.
  • Check plan: vulnerability lookup: feetech-servo-sdk / PyPI / 1.0.0

PySerial Serial Port Communications Library

  • Name: pyserial
  • Version: >=3.5,<4.0 (pinned in pyproject.toml under [project.optional-dependencies] feetech and hardware).
  • Where version came from: pinned in pyproject.toml.
  • Check plan: vulnerability lookup: pyserial / PyPI / 3.5

Deepdiff Deep Comparison Library

  • Name: deepdiff
  • Version: >=7.0.1,<9.0.0 (pinned in pyproject.toml under [project.optional-dependencies] feetech and hardware).
  • Where version came from: pinned in pyproject.toml.
  • Check plan: vulnerability lookup: deepdiff / PyPI / 7.0.1

Pynput Input Device Control Library

  • Name: pynput
  • Version: >=1.7.8,<1.9.0 (pinned in pyproject.toml under [project.optional-dependencies] hardware).
  • Where version came from: pinned in pyproject.toml.
  • Check plan: vulnerability lookup: pynput / PyPI / 1.7.8

PyRealSense2 Intel RealSense SDK Python Bindings (Optional Camera Extra)

  • Name: pyrealsense2
  • Version: >=2.55.1.6486,<2.57.0 (Linux/Windows) or pyrealsense2-macosx >=2.54,<2.57.0 (macOS) (pinned in pyproject.toml under [project.optional-dependencies] intelrealsense).
  • Where version came from: pinned in pyproject.toml.
  • Check plan: vulnerability lookup: pyrealsense2 / PyPI / 2.55.1.6486

Pygame Game Controller and GUI Library (Optional Teleoperation Extra)

  • Name: pygame
  • Version: >=2.5.1,<2.7.0 (pinned in pyproject.toml under [project.optional-dependencies] gamepad).
  • Where version came from: pinned in pyproject.toml.
  • Check plan: vulnerability lookup: pygame / PyPI / 2.5.1

HIDAPI Hardware Interface Device Library (Optional Teleoperation Extra)

  • Name: hidapi
  • Version: >=0.14.0,<0.15.0 (pinned in pyproject.toml under [project.optional-dependencies] gamepad).
  • Where version came from: pinned in pyproject.toml.
  • Check plan: vulnerability lookup: hidapi / PyPI / 0.14.0

Feetech PC Debugging Software (Windows Vendor Tool)

  • Name: Feetech Software
  • Source: https://www.feetechrc.com/software.html
  • Version: not stated.
  • Where version came from: not stated.
  • Check plan: not checkable: vendor-hosted binary executable without version tag or public vulnerability database.

FT_SCServo_Debug_Qt Motor Debugging Software (Linux Vendor/Community Tool)

Pinning Status and Manifest Location

  • Manifest location: pyproject.toml
  • Dependency Pinning Status: Dependencies in pyproject.toml are bounded by semantic version ranges (e.g. >=X,<Y), but no exact-commit lockfile (such as poetry.lock or pip-compile requirements.lock) is present in the repository. The vendor debugging tools (Feetech PC Software and Kotakku/FT_SCServo_Debug_Qt) are completely unpinned and referenced without version strings or commit hashes.

Network Exposure and Operational Boundaries

  • Network Connections: The physical robot hardware connects locally to the workstation via USB serial COM ports (CDC ACM / FTDI / CH340 virtual COM port). The hardware itself carries no onboard Wi-Fi, Ethernet, or Bluetooth transceivers.
  • Workstation Network Usage: The Python software requires outbound HTTPS access (port 443) via the huggingface-hub and requests libraries to authenticate, stream dataset trajectories from Hugging Face Hub (lerobot/*), download pre-trained policy checkpoints (ACT, Diffusion, SmolVLA, Pi0), and upload teleoperation demonstrations.
  • Open Ports / Listening Services: In standard CLI operation (lerobot-teleoperate, lerobot-record, lerobot-replay, lerobot-train, lerobot-eval), no local network listening ports are opened. When running the optional browser interface (LeLab, https://github.com/huggingface/leLab), a local HTTP server is spawned on a localhost web port.
  • Authentication and Credentials: Hugging Face API access tokens (HF_TOKEN) are read from the host environment or the local Hugging Face cache for gated dataset and model repository uploads. No default root credentials or hardcoded device passwords exist on the robot.

Temporal Downloads and External URLs

External web resources referenced across the documentation that must remain reachable:

Fabrication Specifications

The SO-101 arm chassis consists entirely of 3D-printed FDM mechanical components. The lab provides single-plate combined STL files as well as individual part models.

  • Manufacturing Process: FDM (Fused Deposition Modeling) 3D printing.
  • Structural Material: PLA+ (standard rigid structural components); TPU 95A (flexible gripper elements).
  • Slicing and Tooling Parameters:
    • Nozzle diameter 0.4 mm at 0.2 mm layer height, OR 0.6 mm nozzle diameter at 0.4 mm layer height.
    • Infill density: 15%.
    • Supports: Enabled everywhere, ignoring overhang slopes greater than 45° to the horizontal plane.
    • Slicer Exclusion: Supports must be blocked inside horizontal-axis screw holes.
  • Full Single-Plate Bed Dimension Requirements:
    • Small bed (Creality Ender 3 class): Minimum 220 mm × 220 mm bed area (Ender_Follower_SO101.stl, Ender_Leader_SO101.stl).
    • Medium bed (Prusa MINI+, Prusa MK3/MK4, UP Plus 2 class): Minimum 205 mm × 250 mm bed area (Prusa_Follower_SO101.stl, Prusa_Leader_SO101.stl).
  • Structural File Inventory (14 unique printed elements):
    • Common Elements (9 parts): Base_motor_holder_SO101.stl, Base_SO101.stl, Motor_holder_SO101_Base.stl, Motor_holder_SO101_Wrist.stl, Under_arm_SO101.stl, Upper_arm_SO101.stl, Rotation_Pitch_SO101.stl, Wrist_Roll_Pitch_SO101.stl, WaveShare_Mounting_Plate_SO101.stl.
    • Leader-Specific Elements (3 parts): Handle_SO101.stl, Trigger_SO101.stl, Wrist_Roll_SO101.stl.
    • Follower-Specific Elements (2 parts): Moving_Jaw_SO101.stl, Wrist_Roll_Follower_SO101.stl.
  • Calibration and Fit Test Gauges (4 parts):
    • Gauge_0.STL (STS3215 servo nominal fit check).
    • Gauge_tight_1.STL (STS3215 servo tight tolerance fit check).
    • Lego_Size_Test_02_zero.STL (Standard 4×2 Lego block nominal tolerance verification).
    • Lego_Size_Test_02_minuspoint1.STL (Lego block -0.1 mm tolerance verification).