ANANGA

Guide · Multi-axis

Multi-axis scripts on the OSR2 and SR6.

The OSR2 and SR6 are open-source stroker robots that move on more than one axis. They take TCode, a short text protocol, and play one funscript per axis. Here is what each axis does, how the files are named, and how to connect and play a set.

01 / IN SHORTFour things to know first.

  • Three devices, three sets of axes. The OSR2 strokes and tilts two ways. The OSR2+ adds twist. The SR6 adds forward and back, and side to side, for six axes in all.
  • They speak TCode. Plain-text commands such as L050I500, which the specification allows over a serial cable, Bluetooth or Wi-Fi.
  • One file per axis. Each extra axis has its own funscript, named after the main one: evening.twist.funscript adds twist to evening.funscript.
  • Missing axes are fine. Devices ignore files for axes they do not have, and a stroke-only script plays on all of them.

02 / THE SIX AXESWhat moves, and which file moves it.

AxisMotionFile nameDevices
Stroke · L0Up and downevening.funscriptAll
Surge · L1Forward and backevening.surge.funscriptSR6
Sway · L2Left and rightevening.sway.funscriptSR6
Twist · R0Rotationevening.twist.funscriptOSR2+, SR6
Roll · R1Tilt left and rightevening.roll.funscriptOSR2, OSR2+, SR6
Pitch · R2Tilt forward and backevening.pitch.funscriptOSR2, OSR2+, SR6

Directions and the centre

In TCode, L0 is positive upward, L1 positive away from you, and L2 positive to your left. R0, R1 and R2 turn around those three lines. On an axis that moves both ways, the middle of the range is the centre, or rest. So in a twist, roll or pitch script, 50 is straight and level, and the script swings either side of it.

Funscript positions run from 0 to 100. TCode values run from 0 to just under 1, and the player converts one to the other.

03 / WHAT TCODE LOOKS LIKEShort commands, one per axis.

A command is a letter for the kind of axis, a digit for the channel, then digits for the value as a fraction. An I suffix gives the time, in milliseconds, to get there; the specification recommends it for scripts. Commands on one line run together.

L050I500 R180I500 R250I500

This moves the stroke to the middle, rolls part-way to one side, and holds pitch at the centre, all over half a second. Your player writes these for you from the funscripts.

CommandWhat it does
D0Identifies the device and its firmware version.
D1Reports the TCode version.
D2Lists the axes and the range you prefer for each.
DSTOPStops the device.

Version 0.4 of the specification, dated October 2026, adds easing terms and a Bluetooth companion. Check that your firmware and player support a version before relying on its features.

04 / CONNECT AND PLAYFive steps, the first time.

  1. Put the files together.The video and every axis file in one folder, with the same base name. A player that finds the main script finds the rest.
  2. Choose a TCode player.MultiFunPlayer (Windows) supports TCode v0.2 and v0.3 over serial, UDP, TCP or websockets, with per-axis speed limits, smoothing and auto-home. XTPlayer (Windows, Linux, macOS) plays funscripts on TCode devices and follows DeoVR, HereSphere and Whirligig. Intiface Central can drive them too, with extra setup.
  3. Connect.By USB cable or over the network, as your player and firmware allow.
  4. Set each axis's range.Start narrow on twist, roll and pitch, and widen as you learn how a set feels. A full swing on every axis at once can be a lot.
  5. Find stop, then play.Know where your player's stop is before you start. If the motion runs early or late, see fixing sync.

ANANGA's player connects TCode devices by USB in Chrome or Edge, or over Wi-Fi, and plays L0, L1, L2, R0, R1 and R2 plus vibration. Because it is a secure web page, it reaches a Wi-Fi device only at a secure (wss://) address; otherwise use the cable. It opens to everyone this winter.

05 / ONLY A STROKE SCRIPT?Three options.

  • Play the stroke alone. It works on every device; the extra axes simply have no script.
  • Let the player add motion. XTPlayer can add pseudo-random motion to the other axes, based on the stroke's position.
  • Write the axes yourself. Editors such as FunGen have a multi-axis timeline. See how to make a funscript.

Some newer editors keep several axes in one file, under an axes list. ANANGA's funscript spec says players may read it, but not all do, so one file per axis is still the safe way to share a set.

06 / QUESTIONSAsked often.

What is the difference between the OSR2 and the OSR2+?

Twist. The OSR2+ adds rotation (R0) to the OSR2's stroke, roll and pitch.

Will a multi-axis set play on the Handy or a Keon?

Only the main stroke file. The others are ignored, so the set still plays.

Which file names do players accept?

The names in the table above are the common convention. ANANGA's player also reads the channel code as the name, such as evening.R0.funscript.

What does 50 mean in a roll script?

Level. For axes that move both ways, the middle of the range is the centre, so the script tilts either side of 50.

Is a stroke script for the OSR different from one for the Handy?

No. The main file is an ordinary funscript and plays on any stroker. The format, explained.

Where do I find multi-axis scripts?

See where to find funscripts, and ANANGA's free, open catalogue at ananga.ai/scripts. Before you play one, check each file: the checker names the axis from the file name.

07 / SOURCESWhere the facts come from.

Written and checked by ANANGA in Paris against the pages above on 6 November 2026. Corrections are dated on this page.

The player · Opening this winter

Felt, not seen.

ANANGA's player opens to everyone this winter. It plays your videos and their funscripts in the browser and in VR, with the Handy, Intiface devices and TCode devices, and keeps every file on your device.