Let's Teledildonics!

Now that the teledildonics patent is expired, I promised everyone that I'd teach them how to teledildonics. So here we go.

I've stood up a generic Teledildonics server at

https://metafetish-white-label-teledildonics-server.glitch.me

This is a small, websocket based Omegle style chat server, meaning that you will be paired with another anonymous user, and assuming one or both of you has compatible Buttplug devices, you can share device access with each other if you really, really want.

Before we all run off and hand the keys to our buttplugs to strangers, some warnings:

There is no security on this server. I didn't even try. I just hacked up another project. This is a stunt. Treat it as such.

Random people are random. I highly recommend standing up your own server on glitch and inviting someone you know by giving them the URL. If you're the only 2 people on the server, you'll just be matched with each other. There's instructions on doing this at the server github repo. Again, do not mistake this for security or reliability.

Things may not work or crash horribly. Who knows. You are on your own.

If you are on Windows 7-10 and don't have a sex toy we support handy, the Buttplug Windows Server Software also supports Xbox Gamepad Vibration, so you can have other people make your gamepad vibrate! We will also support VR controller and Nintendo Switch JoyCon vibration soon.

To use the server:

Go to the URL above

Click the "Find Partner" button

Once you are matched with a partner, together you can fumble through a world of online intimate experience exploration using a clumsy, hacked together interface. Imagine having sex while wearing full body condoms and oven mits and blindfolds and also each of you are on different planets.

A more in-depth tutorial for this server is available at this post on our message boards. If you have any questions, feel free to ask there.

The White Label Teledildonics Server is a generic version of YiffSpot, an open source roleplay server for furries. As furries have a lot of their own terminology that may not apply to the generic user who just wants to have generic sex, the White Label server has scrubbed away all identifying traits, allowing users the most generic of experiences possible so as not to offend the delicate sensibilities of teledildonics participants with an overabundance of the word "Yiff".

All source code for the server is available on github. Thanks go out to Kisuka for making the server this work is based off of, which allowed me to hack this together in a stupid amount of time without having to consider the chat or UI parts.

Now, onto the technical explanation of what is going on in a simple teledildonics server like this. You can skip this section if you're not interested in the technical details of how we make all of this work.

Teledildonics usually requires:

A way to match participants

A way for those participants to control each others toys.

The White Label/YiffSpot software does this by:

Creating a node.js based Websocket server that listens for connections from a website.

A client website users can visit, which sets up the Websocket connection and matches them with other users.

Once the match is set up and the users are connected, they can use buttplug-js to connect to toys locally, then share that control with the user on the other end.

Teledildonic communication through Buttplug happens via special IRC style messages between users, which turn into JSON to go to the Buttplug server, as defined by the Buttplug Protocol Spec.

Let's say one user has shared their toy with another:

The user controlling the toy has access to a slider control which can set vibration levels of a toy.

Once they move the slider, a message like this is send to the other user

/buttplug vibrate 0 0.5

This command means "Tell the other user's vibrator (at device index zero) to run at 50% speed". Most ranges in Buttplug are floating point from 0-1, as we have to support everything from vibrators with on-off all the way to HD level 16/32-bit control ranges.

Once the user with the toy receives the command, the White Label server translates it from IRC style into Buttplug style JSON, specifically a VibrateCmd message. This would look like

{ "VibrateCmd": { "Id": 1, "DeviceIndex": 0, "Speeds": [ { "Index": 0, "Speed": 0.5 } ] } }

Breaking that down for those that don't want to read the spec: This is a generic vibrate command, which can send many commands to many vibrators on a device (we currently support some devices that have 6+ vibrators). The Id field is the ID of the message itself, used for matching message pairs during remote communication. The DeviceIndex tells the server which device we want to command. The Speeds portion takes a list of objects, each with an index of the specific vibration motor we want to control, and a speed to set that motor at.

This message is then translated by Buttplug into the device specific, proprietary message to be sent over Bluetooth, USB, or some other local communications bus. Let's say we're controlling someone's Lovense toy. Lovense toys have 20 vibration levels, and their vibration commands look like

Vibrate : X ;

Where X is some number between 0-20. Since we're using 0.5 as our speed, this would mean we'd set this to 20 * 0.5, or 10. So the final command we send over bluetooth to the lovense toy is

Vibrate : 10 ;

And that's Teledildonics!

So, there you go. A free, open source, if wildly insecure and weirdly pairing teledildonics server, and an explanation of how we get commands from point A to point B.

As you can see, there's a few moving parts here, and a lot of places where we have to trust that things won't go wrong. The server could crash, the network could go down, there's going to always be communication lag because the speed of light is an asshole. If these aren't things you normally think about while having sex, then teledildonics is going to be a wild new frontier of anger and pain for you!

In the future, I'll be posting updates on the new, more formalized teledildonics projects happening in the Buttplug project, including a server actually designed with security and scalability in mind, as well as using APIs like WebRTC for pairing and real time communication.

Now go out and teledildonics!