Connecting and configuring the OSR2
A full walkthrough for the OSR2 stroker. Install the Helper, connect over USB, set the stroke and twist range, and play multi-axis scripts.
The OSR2 ("Open Source Reciprocator") is the most popular do-it-yourself stroker, and it speaks the T-Code language. It does the main up-and-down stroke and can also rotate (twist), and some builds add more motion or a vibration motor. This page walks you through connecting one and setting it up.
The OSR2 connects by USB cable, not Bluetooth. A web browser cannot talk to a USB device on its own, so ToyControl uses a small companion program called the ToyControl Helper to bridge the two. Once the Helper is installed, connecting takes about a minute.
What you will need
- An OSR2 (or OSR2+) that is built, powered on, and running T-Code firmware.
- A USB cable that carries data (some cheap cables only carry power, which will not work).
- A computer running Windows, macOS, or Linux. The OSR2 cannot be used from a phone or tablet.
- The Chrome or Edge browser.
- The ToyControl Helper app (free). We will install it in Step 1.
Step 1: Install the Helper
The Helper is a small app that sits quietly in your system tray (the row of little icons near your clock) and passes messages between your OSR2 and ToyControl.
-
Download the Helper for your computer:
- macOS: ToyControl-Helper.dmg
- Windows: ToyControl-Helper.exe
- Linux: ToyControl-Helper.AppImage
(ToyControl also shows a Download Helper button when you add a T-Code device, if you would rather grab it there.)
-
Install it, then open it.
-
First launch: allowing the unsigned Helper. The Helper is not yet code-signed, so your computer warns that it is from an unidentified developer. This is expected and safe. To allow it, just once:
- macOS: in your Applications folder, right-click (or hold Control and click) ToyControl Helper and choose Open, then click Open again. On newer macOS, instead open the Apple menu > System Settings > Privacy & Security, scroll to Security, and click Open Anyway.
- Windows: if you see "Windows protected your PC", click More info, then Run anyway.
- Linux: make the AppImage executable (right-click > Properties > Permissions > allow executing, or
chmod +x ToyControl-Helper.AppImage), then run it. For USB access you may also need to join thedialoutgroup.
-
Make sure the Helper is running. You should see its icon in your system tray, and a green dot on the Helper chip in the ToyControl sidebar.
Full details, including firewall and permission notes, are on the Helper app page.
Step 2: Plug in and connect
- Connect the OSR2 to your computer with the USB cable.
- In ToyControl, click the + button in the Devices section of the sidebar.
- From the catalog, choose T-Code (OSR2 / SR6 / SSR1 / DIY). The OSR2 uses this same card as the other T-Code machines.
- ToyControl asks the Helper for a list of connected USB devices. Pick your OSR2 from the list.
- Click Connect.
- The OSR2 appears in your sidebar with a green dot next to it. You are connected.
If the list is empty the first time, wait a couple of seconds and try again. Many OSR2 boards briefly restart the moment they are plugged in, and ToyControl will automatically take a second look.
Step 3: Test it safely
Before you test, make sure the OSR2 is mounted or secured. These machines move with real force and can shift themselves across a surface if they are not held down.
Click Test toy at the bottom of the screen. The OSR2 should run a short movement. If it moves, you are ready to go.
The OSR2's axes
Every OSR2 does the Stroke (the main up-and-down motion). On top of that, depending on how yours is built:
- Most add a Twist (rotation) axis.
- An OSR2+ build can also add Roll and Pitch (tilting).
- Some builds include a vibration motor.
You do not need to know exactly which your machine has, because ToyControl shows you a control for each axis your OSR2 reports. If you only see a Stroke slider, that is all your build exposes. If you see Twist too, you have the rotation axis, and so on.
Setting the range for each axis
Each axis has its own range slider in the sidebar, one labelled Stroke, and others such as Twist if your machine has them. The slider has two handles and controls how far that axis moves:
- Drag the handles wider apart for a bigger, fuller motion.
- Drag them closer together for a smaller, gentler motion.
- The numbers show how much of that axis's full travel you are using, for example 20% to 80%.
Every axis starts at a safe, middle-of-the-road setting (20% to 80%) rather than its full travel. That is why the motion may feel a little short at first. Just widen the Stroke slider for a longer stroke, and the same for any other axis you want more movement from.
A safety note: dragging a handle all the way to 0% or 100% drives that axis to its physical end-stop, so it may bump or knock at the very ends of its travel. If you hear that, pull the handle in by a few percent. If your OSR2's firmware already has its limits set correctly, you can use the full range without worry, but backing off slightly is always safe.
Playing multi-axis scripts
A normal .funscript file controls only the stroke. To make the OSR2 also twist (or move on any other axis it has), a content creator provides a set of files that share the same name, one per axis. ToyControl finds them automatically.
For a video or script called scene, the common OSR2 pair is:
scene.funscript(the main stroke)scene.twist.funscript(twisting)
An OSR2+ set might also include scene.roll.funscript and scene.pitch.funscript, and some include scene.vib.funscript for vibration.
To load them: drag all of the matching files onto ToyControl at the same time (or keep them together in a folder you have added to your library). ToyControl loads the main stroke file and quietly attaches the others. When it works, you will see a small "multi-axis" note next to the file name showing which extra motions were found. Each axis then plays from its own track and respects the range slider you set for it.
If you only have a single .funscript, the OSR2 simply strokes, which is perfectly normal and by far the most common case.
Adjusting intensity
The main intensity control (and any pattern or script speed) sets how fast the OSR2 moves, while the range sliders set how far it moves. The two work together: pick a comfortable range for each axis, then use intensity to speed things up or slow them down.
Troubleshooting
- No devices are listed. The Helper must be installed and running. Look for its icon in your system tray, and check the Helper chip in the ToyControl sidebar for a green dot.
- The OSR2 is listed but will not connect. Try a different USB port, and try a different USB cable, since some cables only supply power and cannot carry data.
- It connects, then drops out during use. This is almost always a USB power or cable issue. Use a good quality cable and, if you can, a powered USB hub. See toy keeps disconnecting.
- The stroke feels too short. Widen the Stroke range slider in the sidebar. See setting the range for each axis above.
- It only strokes, it does not twist. Either you are playing a single-axis script (twist needs a multi-axis set, see above), or your particular build does not have the twist axis.
- The motion is jerky. Smoothness depends a lot on the script and on your firmware tuning. Try a slower or better-made script, or the built-in Patterns, to compare.