Menu navigation
After homing completes, the OSSM displays the main menu on the remote’s OLED screen.| Action | Result |
|---|---|
| Rotate encoder | Scroll through menu options |
| Press encoder | Select the highlighted option |
| Long-press encoder | Return to menu (from any operating mode) |
The menu wraps around—scrolling past the last item brings you back to the first.
Main menu options
| Option | Description |
|---|---|
| Simple Penetration | Basic operation with speed and stroke controls |
| Stroke Engine | Advanced pattern-based control with depth, stroke, and sensation |
| Streaming (experimental) | External control mode for funscript playback and third-party applications |
| Update | Check for and install firmware updates (requires WiFi) |
| WiFi Setup | Configure wireless network connection |
| Get Help | Display QR code linking to setup documentation |
| Restart | Restart the controller and re-home |
Simple Penetration mode
Simple Penetration provides straightforward control with minimal parameters. It’s ideal for users who want reliable operation without complexity.Default settings
| Parameter | Default Value |
|---|---|
| Speed | 0% |
| Stroke | 0% |
| Depth | 50% |
| Sensation | 50% |
Controls
- Speed
- Stroke
The left knob (potentiometer) controls speed from 0% to 100%.
- Turn clockwise to increase speed
- Turn counterclockwise to decrease speed
- Speed must be near zero to enter the mode (safety feature)
Session statistics
Simple Penetration tracks three statistics during your session:| Statistic | Description |
|---|---|
| Stroke count | Number of complete strokes performed |
| Distance | Total distance traveled (displayed in meters or feet) |
| Time | Duration since the session started |
Stroke Engine mode
Stroke Engine provides advanced pattern-based control with four adjustable parameters. It uses the StrokeEngine library to generate varied motion patterns.Default settings
| Parameter | Default Value |
|---|---|
| Speed | 0% |
| Stroke | 50% |
| Depth | 10% |
| Sensation | 50% |
Stroke Engine starts with different defaults than Simple Penetration—notably a lower depth (10%) and higher stroke (50%)—to provide a gentler initial experience with pattern-based motion.
Controls
- Speed
- Parameters
- Pattern selection
The left knob (potentiometer) controls speed from 0% to 100%.Speed affects how fast the patterns execute, measured in cycles per minute.
Available patterns
Stroke Engine provides 7 motion patterns:| Index | Pattern | Behavior |
|---|---|---|
| 0 | Simple Stroke | Balanced acceleration, coasting, and deceleration |
| 1 | Teasing Pounding | Speed shifts based on sensation; balances faster strokes |
| 2 | Robo Stroke | Sensation varies acceleration from robotic to gradual |
| 3 | Half’n’Half | Alternates between full and half depth strokes |
| 4 | Deeper | Stroke depth increases each cycle; sensation sets cycle count |
| 5 | Stop’n’Go | Pauses between strokes; sensation adjusts pause length |
| 6 | Insist | Modifies stroke length while maintaining speed |
For detailed pattern descriptions and sensation effects, see the Pattern documentation.
Streaming mode (experimental)
Streaming mode allows external applications to send real-time position commands to the OSSM via BLE. Unlike Simple Penetration and Stroke Engine which generate motion patterns internally, Streaming mode receives exact position targets from an external source—enabling synchronized playback with video content, funscripts, or custom control applications.How streaming works
- Select Streaming from the main menu (or send
go:streamingvia BLE) - The OSSM homes to position 0 (fully retracted) and waits for commands
- External applications send
stream:<position>:<time>commands - The OSSM moves to each target position within the specified time
- The display shows the current streaming state
When to use Streaming mode
- Funscript playback: Sync motion with video content using the Funscript Player
- Third-party integrations: Applications that generate real-time position data
- Custom automation: Developers building BLE control applications
Safety considerations
- The OSSM validates incoming commands but relies on the external application for safe motion planning
- If the BLE connection is lost, the OSSM ramps down speed over 2 seconds and stops
- Local controls remain accessible—use the emergency stop (long-press encoder) if needed
Controls
While in Streaming mode:- Speed knob: Not used for streaming (external commands control motion)
- Encoder rotation: Not used for streaming
- Long-press encoder: Emergency stop and return to menu
Technical details
| Property | Value |
|---|---|
| Command format | stream:<position>:<time> |
| Position range | 0-100 (percentage of stroke) |
| Time unit | Milliseconds |
| Minimum firmware | Version 3.0+ |
Funscript Player
Play funscript files synchronized with video.
BLE Protocol
Full streaming command reference and protocol details.
Exiting any mode
From any operating mode, long-press the encoder for approximately 3 seconds to trigger an emergency stop and return to the main menu.Related pages
Safety Features
Learn about preflight checks, disconnect safety, and emergency stop.
StrokeEngine Patterns
Detailed descriptions of each motion pattern and sensation effects.
Funscript Player
Play funscript files synchronized with video using streaming mode.
BLE Protocol
Technical reference for BLE commands including streaming.

