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.