Multi-axis funscripts for OSR2 / SR6

FunGen plays stroke and auxiliary funscript tracks to compatible OSR2, SR6 and SSR1 controllers over T-Code. Start with the stroke channel, confirm the controller mapping, then enable the additional axes your hardware supports.

Updated 11 September 2026 · FunGen 2.6.3

1. Connect through T-Code

Open Devices and choose the T-Code / OSR family. Select a connection supported by your controller and firmware: USB serial, a network bridge, or supported Bluetooth. FunGen 2.6.2 added the documented Bluetooth and local-network discovery paths; use a current official build.

For USB, select the board's serial port and the settings required by its firmware. If a plugged-in board has no serial port, check the driver for its bridge chip, such as CH340, CP210x or FTDI. For network playback, use the bridge address and port or WebSocket URL shown by your controller's setup.

A successful connection establishes transport. It does not prove that every channel is mapped correctly. Device families, controller firmware and physical builds vary.

2. Match script axes to device channels

FunGen's standard axis identifiers are listed below. Confirm your controller's mapping before enabling a channel; an SR6 configuration need not match a smaller or customized build.

Script axisStandard identifierMotion
StrokeL0Main linear stroke
SurgeL1Forward / backward translation
SwayL2Side-to-side translation
TwistR0Rotation around the main axis
RollR1Roll rotation
PitchR2Pitch rotation

Load a known script, enable only stroke output, and start at a modest range. Confirm the direction and timing. Add one auxiliary axis at a time, checking its source track and destination channel. Keep unsupported channels disabled.

3. Choose how to create the extra tracks

The video AI generates the primary stroke track. Pro's optional Extra axes feature can add roll, pitch, twist, surge and sway for eligible whole-video VR runs. It synthesizes auxiliary motion with the character of VR scripts; it does not detect those body-pose values from the footage.

This differs from tracking the stroke and from manually authoring a specific extra movement. Use the multi-axis editor when you want to set those movements yourself. Extra axes is optional and does not run for every video type or generation scope.

Review all resulting tracks. A motion that looks reasonable on one channel can interact differently with another channel on physical hardware. Use per-axis range, interpolation and timing settings as appropriate for your controller.

4. Save and test the complete script

Save your project for further editing. Use Export multi-axis funscript for playback files; Preferences → Export selects separate companion files or a combined format. Choose a format supported by your player and keep all companion files together.

Open the result again and confirm that the intended axes appear. Run the Doctor to locate potential speed or timing problems, then test a short section with the device before a longer session.

When a channel does not behave as expected

For a useful support report, include the app version, operating system, controller firmware, connection method and the affected channel. Continue with generation, VR playback, or the full device list.