<robrotics/>

<actuator/> · HDP30 · v2.0 (RevC)

Rinnegan drive

The Rinnegan drive, aka HDP30: a 3D-printable 30:1 harmonic drive that bolts onto any standard NEMA 17 stepper, with about 2 arcmin of backlash, measured. That's close to commercial strain-wave territory, from a printer and $4 of hardware. Half again the reduction of our HD20, in a thinner stack, now all PLA.

Free and open under CC BY-SA 4.0. Build it, change it, sell it. Just credit us and share alike.

The assembled Rinnegan drive v2.0 on a NEMA 17 stepper: a cream printed gearbox with a knurled output ring, four brass inserts on the output face and three printed shear pins.
~2 arcminbacklash (0.03°), measured
30:1reduction
1.3 N·mworking limit (peaks)
5,700flex cycles, no damage
~$3.96hardware per unit
Keep peaks under about 1.3 N·m. In a 41-minute endurance run, one unit took 5,700 flex cycles and 188 hard stops at 1.0-1.2 N·m with no damage and no tooth skips. Then a single 1.67 N·m impact started a crack in the flexspline wall, and it broke twelve hits later. A second unit started cracking at about 1.5 N·m. Impacts count as peaks, so avoid slamming hard stops, and on a NEMA 17 like ours limit the motor current to about 0.6 A. Read the endurance results.

Longer life testing is still to come. 5,700 cycles is about 40 minutes of running, not months. If you need torque today, the archived HD20 was tested to 3.3 N·m.

<how-it-works/>

Three parts do the work. A wave generator, an ellipse riding on eleven loose 5 mm balls in a printed cage, pushes a flexible toothed ring (the flexspline) into an oval, so its teeth engage a rigid circular spline at only two points. The circular spline has two more teeth than the flexspline, so a full turn of the motor walks the output around by just two teeth. With a 60-tooth flexspline, that tiny slip per revolution is the 30:1.

New to strain wave gearing? We wrote a plain-language explainer. And every tooth profile in this drive came out of our own free harmonic maker, including the exact settings used here, which you can open and edit.

<what-changed/>

v1.0 (RevB) held 1.47 N·m and then started ratcheting: the flexspline teeth rode over the circular spline one tooth at a time, and every round of that left the drive weaker. v2.0 goes after that with two changes.

On the load cell that bought no tooth skips up to 1.49 N·m, about 40% less twist at the same torque, the same efficiency, and 5,700 flex cycles under load without damage. The tooth profile, the wave generator, the cage, the interface and both preloaders are unchanged, and so is every piece of hardware.

We changed two things at once, so we can't fully split the credit. The way the stiffness rises with load points at the alignment, and the lower creep points at the PLA.

<specs/>

Reduction30:1
BacklashAbout 0.03° at the output (2 arcmin). No run of 12 slow runs showed more than about 0.1°. How we measured it
Tooth profileCycloidal, module 0.55, 60-tooth flexspline against a 62-tooth circular spline
Working limitKeep peaks under about 1.3 N·m. The flexspline wall starts cracking at 1.5-1.67 N·m, and it broke at about 2.0 N·m on a single overload.
Measured torqueHeld 1.49 N·m with no tooth skips. Above about 0.8 A of motor current, held torque levels off near 1.35 N·m.
Endurance5,744 flex cycles and 188 hard stops at 1.0-1.2 N·m, no damage. Longer life test still to come.
Efficiency47-60% static (stalled), across two units
Torsional stiffness40 N·m/rad at 0.85 N·m, rising to 61 N·m/rad at 1.5 N·m
CreepAbout 5% of the torque relaxes in a 2 s hold, and about 3.5% more for every 10× longer you hold it
Unpowered holdHolds about 1 N·m with the motor off. It doesn't backdrive at that load.
Test reportPlots, method and raw data
MotorAny NEMA 17 with a 5 mm shaft. The interface plate is unchanged from the HD20, which was validated with an OMC StepperOnline 17HE12-1204S: 42 × 42 × 30 mm, 26 N·cm, 1.2 A, 4-wire.
LubricationSuper Lube synthetic PTFE grease
Printed parts11 pieces across 9 unique parts, including 3 shear pins, plus a printed alignment tool
Fasteners8 × M3×0.5 × 6 mm button head screws per drive, motor screws included
MaterialsPLA throughout, including the flexspline
Versionv2.0 (RevC), 18 October 2026. v1.0 (RevB) is archived.
LicenseCC BY-SA 4.0

<how-it-compares/>

Backlash is where this drive stands out. Even at its worst measured reading (6.7 arcmin; typical is about 2), it's tighter than every off-the-shelf NEMA 17 planetary gearbox under $200, for about $5 without a motor. Metal strain-wave gearboxes are tighter still, from about $100. It gives up torque against all of them: keep peaks under about 1.3 N·m.

Log-log plot of price against backlash. The Rinnegan drive sits at about 5 dollars and 6.7 arcmin worst case (1.8 typical). StepperOnline MG planetary gearboxes sit at 24 to 43 dollars and 30 to 50 arcmin. A precision right-angle planetary is 246 dollars at 5 arcmin. Metal strain-wave gearboxes are 100 to 215 dollars at 2 arcmin and under.
Price against backlash for NEMA 17 gearboxes. Ours is plotted at its worst reading; the commercial ones at their listed maximum.

Sources, method and the script are in the test report.

<what-you-need/>

Beyond the bill of materials below, you supply:

Building v1.0 instead? Its flexspline is still PETG. The all-PLA build only applies to the RevC geometry and alignment. The archived v1.0 page has its files and its own instructions.

<bill-of-materials/>

Unchanged from v1.0 and from the HD20. We checked that against the CAD rather than assuming it: the cage, the interface, both preloaders and the wave generator are identical to v1.0, so the same screws, inserts, balls and bearing fit.

loading the bill of materials…

<printed-parts/>

PartQtyMaterial
Circular spline (base)1PLA
Circular spline (output)1PLA
Base preloader1PLA
Output preloader1PLA
Interface / motor mount1PLA
Wave generator1PLA
Ball cage1PLA
Flexspline1PLA
Shear pin3PLA
Alignment tool (assembly jig)1PLA

All three shear pins are required, and they're the same part printed three times, so there's only one file to download. They carry shear load across the output joint directly, so the connection doesn't have to rely on friction from the preloaded screws to resist it. The screws clamp; the pins take the sideways load.

Print settings

No custom temperatures and no special bed prep. The HD20 was printed on a Bambu Lab P1S with Bambu PLA, and the HDP30 uses the same settings: the Arachne variable-width wall generator and one extra wall loop for strength.

Two things are not the default. The output circular spline and the interface both need tree supports; everything else prints unsupported. And we turn on scarf seam for all parts, so the seam blends in instead of leaving a ridge on the round surfaces.

<the-files/>

Everything lives in robrotics/hdp30. Grab the packaged bundles from the releases page. The STEP files are large, so you probably don't want to clone the whole repo. The v1.0 bundles are still on the releases page too.

Slice the STEP with the print settings above, so the geometry you print is always the current one.

<assembly/>

New in v2.0: the alignment tool. Before you tighten the set screw on the wave generator, sit the alignment tool on top of the interface plate and slide the wave generator down the motor shaft onto it. That puts the wave generator at the right height, so the flexspline lines up with both circular splines. Tighten the set screw, then take the tool out.
Step 3 of the build manual: the flex bearing sub-assembly. The wave generator drops into the ball cage, the cage into the flexspline, then eleven steel balls drop in from the top. A callout box lists the parts with their counts.
Download the build manual (PDF). Ten LEGO-style steps, every part rendered from the RevC CAD. Prints on A4 landscape.
The drive opened up, output side off. The wave generator spins on its eleven balls and pushes the flexspline into an oval that walks around.
Looking into the open drive: the cream circular spline, the flexspline teeth, the steel balls in the printed cage, and the wave generator clamped to the motor shaft.
Inside v2.0: circular spline, flexspline teeth, ball cage and wave generator.

📹 Quick run-through: watch the assembly reel on Instagram. It's fast (it's a reel), and it was filmed on v1.0, before the alignment tool, but the stack-up and the order things go together in are the same.

📹 the proper build video is in the works

A full, properly paced walkthrough is being filmed now and will be posted to youtube.com/@robrotics and embedded right here.

<known-behaviour/>

Some of this was measured on v2.0 itself, and some carries over from the HD20. Each heading says which. Read it before you conclude you assembled it wrong.

Measured on this drive

Carried over from the HD20

Still open

Life beyond a few thousand cycles (a multi-hour test is next), running efficiency under load, and long-term wear below the cracking limit. If you run one for a long time, please open an issue and tell us how it held up, with your version, filament and printer. We'll credit you.

<test-data/>

Tested on 18 October 2026 with a 100 mm arm between two load cells, on the same rig and against the same no-gearbox baseline as v1.0, then run for 41 minutes of endurance testing at rising current until the flexspline cracked.

v2.0 (RevC)v1.0 (RevB)
BacklashAbout 0.03° (2 arcmin)Under 0.3° (not resolved)
TorqueHeld 1.49 N·m, no skips. Cracks from 1.5-1.67Held 1.47 N·m, then ratcheted
Endurance5,744 flex cycles at 1.0-1.2 N·m, no damageNot tested
Efficiency47-60% (static)43-55%
Stiffness40-61 N·m/rad31-44 N·m/rad
Creep, 2 s holdabout 5%about 10%

The report has every plot, the method, the caveats and the raw CSV, along with the script that turns it into these numbers. If you measure your own build, please open an issue with your setup and your numbers. We'll credit you on this page.

read the v2.0 test report →

<make-your-own/>

Two ways in, depending on how deep you want to go.

Change the tooth profile. This link opens our free harmonic maker loaded with the exact settings used for the HDP30, so you can nudge one number and export a new DXF.

open the HDP30 profile in the harmonic maker →

Change the mechanics. The full parametric model is public on Onshape. Copy it into your own workspace and change whatever you like: a different motor face, a different output interface, a different ratio. If you build a variant we would genuinely like to see it: open an issue on the repo or tag @robrotics.

open the model in onshape →

<whats-next/>

We're working on a cup-style harmonic drive, the classic layout where the flexspline is a thin-walled cup instead of a flat ring. It'll get its own page here when it's ready. Follow @robrotics to hear when it lands.