Readiness report

LeRobot SO-101 Robot Arm · 2026-09-03 18:38 · complete · 18 searches, 17 pages fetched

Download PDF

Cybersecurity — software & network: Review before networking · 10 findings

Details in the Cybersecurity section of the report below.

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.