XTPlayer Advanced Tutorial For OSR Device

Hardware

  • PC(MacOS / Windows / Linux)

  • OSR Device (SSR / OSR2+ / SR6 )

  • WiFi 6/7 Router

  • Mobile Device(Phone / Pad)

  • VR Headset(Meta Quest3 / Meta Quest2 / Pico 4 / …)

OSR Firmware

https://www.patreon.com/posts/tcode-esp32-v0-104449314

XTPlayer Download and Installation

Download

Installation

MacOS

  • Right click on XTPlayer-v0.47bnMacOS_x86_64.dmg → Open

  • Copy XTPlayer.app to the Application folder

Windows

  • Unzip XTPlayer-v0.47b_Sin_x86_64.zip

  • Open XTPlayer.exe in the folder

Linux

  • Right click on the AppImage File → Properties → Permissions, and select “Allow executing file as program”

  • Double click to run, or right-click → Run.

Connect OSR

Click on the settings in the bottom right corner

Determine which connection method to use in the connection tab
Connect via serial port (when using Bluetooth or USB cable)
  • Turn on the computer’s Bluetooth and connect to the OSR device’s Bluetooth / directly connect to the OSR via USB

  • Choose the correct serial port

  • Click connect button

  • Connection successful

Please disable TCode validation if you use SR1

OSR device connects to LAN

Connect via network
  • Fill in the IP address of OSR in the LAN(192.168.x.xx) or tcode.local (new firmware support)

  • Fill in the port number 8000 (the port number of the UDP service is usually 8000)

  • Click connect button

  • Connection successful

Comparison of connection methods
Connection method Stability Transmission speed Connection range Power consumption Applicable scenarios
USB High High Short Low Suitable for scenarios requiring high stability and high transfer speed
Bluetooth Medium Medium Medium Low Suitable for scenarios requiring portability and low power consumption
WiFi Medium High Long High Suitable for scenarios requiring long distance transmission and high transmission speed

Select media folder

  • Click XTPlayer’s menu File → Select media folder

  • Click add button to add the specified folder. You can select multiple (please store the video and script in the specified folder and keep the video and script file names consistent)

  • After closing the window, click File → Reload media

  • Observed that the media list on the left has been updated

Play video and scripts

  • Video file names with (MFS) are Multi-Axis script identifiers

  • Hover the mouse in the media’s folder to see all scripts corresponding to the media

  • Click on any video with scripts to play

  • Observe whether the script is loaded correctly and whether the OSR device starts to move

Motion range limit

The main purpose of limiting the scope of Motion is to reduce the excitement of the script and suit personal tastes

  • Click settings in the lower right corner

  • Select motion tab

  • Adjust stroke value, for example, set stroke to 0-8000

  • Play videos with scripts again after closing settings

  • Observe whether the OSR’s movement range is reduced

Create multiple motion range limit profiles

In order to quickly switch between different Motion configurations and change the motion range in XTP WEB mode, we need to create multiple configuration.

  • Click settings in the lower right corner

  • Select the Motion tab

  • Adjust stroke value, for example, set stroke to 0-8000

  • Click the + sign in the upper right corner to save it as a profile named std

  • Adjust stroke value, for example, set stroke to 0-5000

  • Click the + sign in the upper right corner to save it as a profile named low

  • We successfully created 2 different motion range profiles

  • When using scripts from different authors, we can directly switch profile.

XTP web and local web browser

  • Click settings in the lower right corner

  • Select Web tab

  • Check Enable XTP web

  • Open the local address http://localhost:88/ or http://192.168.7.66:88 (If port 80 is occupied, please change the Web server port to 88)

  • Now we can see our media library in the browser

  • Click Settings in the upper right corner

  • Select the Connection tab

  • Select XTP web in Input connections (that is, track the playback progress of the video in the browser to run the script)

  • Close settings

  • Click on any video script to play it

  • Observe whether the OSR device follows the movement

Play videos and scripts with other devices in the LAN

  • Connect mobile device and OSR device to the same wifi router

  • Open the web browser on our LAN devices (phone / pad / notebook)

  • Enter http://192.168.7.66:88 (192.168.7.66 is the IP address of the PC on the LAN)

  • Now we can see our XTPlayer media library in the browser

  • Click any video to play

  • If it’s a VR video, we need to enter the immersive mode (which is only supported by the browsers of VR headsets). We click the full screen button on the player.

  • Click on the immersive mode function in the lower right corner and choose the appropriate format for the VR video.
    pico-xtp-webvr

  • Generally, the browsers of VR headsets only support the 4K H264 format when playing VR videos. Currently, only the Safari of Apple Vision Pro supports 8K and H265.

  • Observe whether the OSR device follows the movement

Device Web Browser VR Mode Supported VR Video Max Resolution Supported VR Video Encoding Usability
iPhone Safari No / / Low
iPhone Chrome No / / Low
MacBook Pro Safari No / / High
Meta Quest Default Web Browser Yes 4K H264 High
PICO Default Web Browser Yes 4K H264 High
Apple Vision Pro Safari Yes 8K H264 & H265 High

Connect DeoVR/HereSphere/Whirligig

  • Open the DeoVR app in the VR headset device

  • Find and enable remote control features

  • Go back to XTPlayer on our computer and click settings in the lower right corner

  • Find HereSphere in the connection tab (DeoVR/HereSphere settings are consistent, the name of the XTPlayer option here is not set correctly)

  • Fill in the IP address of the VR device on the LAN (check it in the router management interface or in the network information of the VR device). Port 23554 is fixed and does not need to be modified.

  • Click connect button

  • Connected to DeoVR successfully

  • Connecting to HereSphere/Whirligig is similar. Please try it yourself.

Play VR video and scripts in DeoVR

  • Enter XTP web address in the address bar of DeoVR, which is the above http://192.168.7.66:88

  • Now we can see our XTPlayer media library in the browser

  • Click Settings

  • Select the Connection tab

  • Select DeoVR/HereSphere in Input connections

  • Click any VR video with scripts to play

  • Observe whether the OSR device follows the movement

Find the IP address of VR headset

PICO

Meta Quest3

Set a Static IP Address for a Device | DHCP IP Reservation

Please set the PC and OSR device to a static IP address according to this video tutorial.

For example, set the IP address of the PC to 192.168.0.66 and the IP address of the OSR device to 192.168.0.67.

In this way, we don’t have to check the IP addresses of these two devices every time.

XTP WEB PRO

Since the web side technology of xtp web is a bit outdated, I started a new project to replace it. I used vuetify and Google’s material design. The goal is to be compatible with multiple devices (Phone & Pad & PC & VR Headset). I have done some simple work so far and I will release it when it is basically complete.

9 Likes

According to rubanio1993’s feedback, there is a BUG in the XTPlayer Bluetooth connection to SR1. We need to wait for Khrull to fix this problem in subsequent software versions.

got it to work, just need to disable TCode validation for SR1 devices

Thanks for your feedback

Oh wow thanks for this! Documentation is always a weak point of the creation process. I will link to this post.
This is much appreciated!

P.S. the SSR1 bug is not a bug with the SSR1 specifically. Its an issue with validation and the Serial COM. Validation works fine over wireless but serial has issues.

1 Like

Awesome write up! I’ve been messing with XTP on linux for a bit now since MFP doesn’t seem to be getting any support any time soon. The web player is definitely the way to go over the main interface. One thing I’ve noticed, and I’m not sure if this is a linux specific issue or just the program as a whole, but when adding a huge library as one media source, the thumbs processing seems to halt after awhile. I would get to around 40% before it just stops doing any more (even though I think it stopped actually processing them long before that). It could also be the fact that I’m setting the library through an NFS share, but I can’t say for sure. It seems more consistent if I add multiple, smaller source folders, though.

Another quirk of the existing web interface is when using Zen browser’s (firefox) pop-out video, the pop-out closes when a different video is played. I know this isn’t particularly an issue unique to XTP, some sites handle that scenario, some don’t, but something worth mentioning. I like having the popout full-screen, then in another monitor have the media library interface

Either way, I’m glad to even have an option on linux, since it seems the pickings are slim. Thank you both for all of your work!

For thumbnails, we’d better place a picture in the folder. XTP will automatically set it as the thumbnail of the video. This can avoid XTP from reading the first frame of all videos to generate thumbnails. Reading videos will take more time and occupy the CPU
For example
fileName.mp4
fileName.jpg / fileName.gif / fileName.png
fileName.funscript

As for the problem of playing videos, the player technology used by XTP web is too old. we should refer to the interactive design of SLR-like websites.

Yeah I ended up doing that eventually, with ffmpeg.

I’m actually having issues getting g videos to show up on quest in deovr… I can access the page but it constantly “connecting”. Likely a firewall config issue,i just haven’t put in the time to fix it yet.

2025-01-01

  • Add “Set a Static IP Address for a Device | DHCP IP Reservation”
  • Add How to play VR video and scripts on VR headset devices within the LAN

Thanks CS! Any tips on getting videos to display as VR in Safari on an Apple Vision Pro? I can get the video to play but it shows up rectangular… no options to interpret as stereo or 180/360.

Please refer to this video to turn on the WebXR function of Apple Vision Pro