Metafetish Dev Log - Week of 2017/09/05

Time for our weekly roundup of Metafetish Project Development!


New Section! This is where we'll put updates for hardware specific changes companies have made in the last week. I doubt this section show up frequently, but since working on Buttplug means we have to stay up to date on this stuff, it's worth adding.


Last week, we mentioned that Lovense is now shipping their new Domi Magic Wand toy!

It's already supported in Buttplug, but just in case anyone wants that info:

  • Device Name: LVS-Domi37
  • Main Service UUID: 57300001-0023-4bd4-bbd5-a6920e4c5653
  • TX Characteristic: 57300002-0023-4bd4-bbd5-a6920e4c5653
  • RX Characteristic: 57300003-0023-4bd4-bbd5-a6920e4c5653

The Domi adheres to the normal Lovense communications protocol.

Also, we had reports from the community that Lovense Hush Buttplugs that shipped recently now identify differently than old toys. Sure enough, it looks like the Hush plugs are running new firmware. Here's the identifying info:

  • Device Name: LVS-Z36
  • Main Service UUID: 5a300001-0024-4bd4-bbd5-a6920e4c5653
  • TX Characteristic: 5a300002-0024-4bd4-bbd5-a6920e4c5653
  • RX Characteristic: 5a300003-0024-4bd4-bbd5-a6920e4c5653

Fleshlight Launch/Kiiroo

As of 2018/09/05, the Fleshlight Launch Firmware has now been updated to v1.3. A quick binary diff didn't show any huge changes, with the code section growing maybe 50 or so bytes, and no large banks of changes seen. Users who've tested it report that it works with both Buttplug and ScriptPlayer. More info about new features if/when we figure out what they are.

Metafetish Projects

On to our own projects!


We added the new Hush info to buttplug-csharp, and it'll be added to buttplug-js soon. I'll most likely do a new npm push of buttplug-js so that hush/domi support is available, though I'm not sure anyone but me is using buttplug-js yet.

Due to these toy configuration additions/changes, we're looking at moving to a more flexible configuration definition system. Right now, toy info is built into Buttplug servers, meaning if we want to support new toys, we have to recompile everything ourselves. That sucks.

There's now a new project bug filed to change our device configuration definitions to an external config file that we can update without recompiles. This should save us a lot of testing and release time, while also hopefully making life easier on users.

Full list of changes/bug fixes that happened this week:

  • Buttplug C#
    • Devices that disconnect now take the same index when they reconnect. (Commit)
    • Fixed the "Can't load assembly file, no version info available!" error that always shows up in the logs.(Commit, Commit)
    • New Hush ID Support (Commit)
  • Buttplug JS
    • None

We're looking at a v0.1.1 release of Buttplug C# soon. That is waiting on 2 things:

  • Fixes to the websocket UI (better errors, defaulting to SSL on)
  • Update system checks (So we aren't depending on people to constantly check forums/websites for Buttplug C# updates)


Syncydink development has moved to working on a web based encoding solution. This means that, sometime in the future, you'll be able to pull up Syncydink in your favorite modern web browser, load a movie, and start creating haptics files for it.

This is still in the super early stages of development, but should have something to show soon!

Other Development

Funscript Blender Encoder

Did you know you can build haptics files in Blender? Funjack has been putting work into making encoding an easier and better experience. You can now use keypad buttons for encoding commands in the Blender encoder, and there's new hints and output verification.

The Video Encoder is available from the LaunchControl Releases Page.

That's it for this week! Back to the code mines...

RealTouch History Article in Logic Magazine and Vice

Logic Magazine's new Sex Issue has a wonderful article by David Parisi on the history, labor requirements, and impact of the RealTouch.

I highly recommend buying a copy of Logic because it's a great magazine that also happens to have an article with me and Internet Of Dongs talking about sex toy security. However, the RealTouch article has now been republished on Vice, in case you're interested.

Metafetish Dev Log - Week of 2017/08/28

Back to the dev log habit. As we've actually released software (though it's still "soft launched" right now since we're missing things like, say, documentation), it seems like now might be a good time to get back to dev logs since you can now actually go what's listed here if you want.

Metafetish Org

I'm kinda diving into the middle of development news here after a 2 month gap in dev logs, so there's a good chance some of this won't make sense. If you've got questions, please feel free to ask on our message boards.

Also, since we haven't had dev logs or much in the way of user feedback, we've run into the problem of having developed a huge pile of software that makes sense to us, but probably doesn't to anyone outside the core engineering group. We're trying to figure out how to better convey this information now, but expect confusion on all sides of a while until we get that going.

Buttplug CSharp

As of a couple of weeks ago, Buttplug C# is now at 0.1.0 (unannounced because soft launch!). We released the 0.1.0 app suite as well as the 0.1.0 nuget packages. Just like everything else, these aren't well documented. The libraries have some comments but that's it, while the app suite has some tutorial written for it around the Metafetish Forums.

Since then, we've:

  • Created a new Game Vibration Router application, which will be talking more about in another post/video soon.
  • Created a unified device control panel UI, which should make new C# apps easier to build.
  • Added WeVibe 4 Plus, Ditto, Pivot, Nova, Verge, and Wish support.
  • Added Lovense Domi Support.

We're now trying to plan for the 0.2.0 version of the libraries and app suite, which will hopefully also include some bug fixes, automated update checks, and the features listed above.

Buttplug Javascript

The Javascript Server is done! Or, well, started but usable, I guess.

The WebBluetooth portion of the Javascript server is up and running. This means we can now write webapps that use the Buttplug Protocol, and all users need is Google Chrome to access their sex toys on macOS, Linux, Android, and ChromeOS. No other installed software is required, and the app just needs to be hosted off a SSL (https) site. So far, we support:

  • Fleshlight Launch on macOS and Android (Linux is a no go right now due to a bug in WebBluetooth, ChromeOS may work but is untested)
  • Lovense toys (all, including the newly released Domi) on macOS, Linux, Android, ChromeOS
  • WeVibe 4 Plus, Ditto, Pivot, Nova, Verge, Wish

We'll be adding more toys to this soon, as it's fairly trivial to do so. We're on version 0.1.0 on npm (our 10th release!), which includes the server code.

As mentioned before, almost no documentation exists for this, inside or outside of the library. We're working on fixing this, both via library documentation and planned tutorials on Watch this dev log updates for more info.


Syncydink, our web based movie player with sex toy sync thanks to Buttplug, is now up at, which is probably where I'll keep releases for the time being. The whole page is 2 files, about 2.5mb of minified javascript (only! Yay modern web dev. :) ), and does not reference any outside sites, or even our own piwik tracking instance. Ghostery and uBlock should come up quiet on it.

Syncydink now supports:

  • 2D and VR video playback (including VR on Android!) using funscript, VirtualRealPorn, FeelMe, and other haptic file formats.
  • Buttplug C# Websocket connections on Windows
  • Buttplug-js on macOS/Linux/Android/ChromeOS

There's a tutorial about how to get all of this working at the Metafetish Forums.

Next up, much like the other projects, is more documentation, especially for error states. Right now we fail silently all over the place, which is very annoying for everyone. Getting that cleaned up is top priority.

Other Projects


Development on the ScriptPlayer sex toy synced movie player for Windows continues apace. Liquid, the main developer, is working on movie encoding, ways to track scripts from github, and other features.


For those not familiar, Funscript is a haptic movie file format built by Funjack, of golaunch and launchcontrol fame. Both ScriptPlayer and Syncydink support Funscript as a haptic format for movies, and it works quite well with the Fleshlight Launch and other toys.

Lately, Funjack has been improving the Blender tools for encoding movies with funscript. These tools allow users to encode their own movies, which can then be played by either of the 2 supported players. There is now also a funscript forum on RealTouchScripts where users can share their scripts.

Vice Motherboard Article on the Buttplug Project

The Buttplug project got a feature in Vice Motherboard! It's a great overview of the goals of the project.

We also recently finished and released the first version of buttplug-csharp, our Windows 10 client, and we're now hard at work on tutorials for our browser based Buttplug server for Mac, Linux, Android and ChromeOS! We'll be posting more information about this later this week.

Metafetish Dev Log - Week of 2017/07/03

And then every 2 weeks just became every 5 weeks. Oops.

Metafetish Org

Buttplug Protocol Spec

The Buttplug Protocol Spec Repo now contains the reference documentation for the Buttplug protocol, as well as our JSON schema. This will be the central source of truth for Buttplug client/server implementations.

Not much new to announce here other than that it exists. We're trying to minimize the amount of changes we make here before v0.1, but once that's done, expect to see lots of action here as we start adding new message types for more devices.

Buttplug CSharp

For Buttplug C#, we're down to polishing off the rough edges on the v0.1 release. The server seems to be working ok, and we've had a decent amount of testing going into the Kiiroo emulator, slightly less with websockets since that requires building all of our own apps. We've got quite a bit of documentation and website work to do, but are hoping we can get some basics up and a realease out, so we can start getting feedback for v0.2.

Buttplug JS/Typescript

The Buttplug JS/Typescript library for accessing the server is up on npm now, at Expect breaking changes a bunch, since we're still pre-v0.1 of a reference server release.

This package will also be expanding into a WebBluetooth based server for platforms that support WebBluetooth (currently MacOS/Linux/Android/ChromeOS). We'll have an extra add-on package for using Noble in node, and the combination of that plus this repo will give us both cross-platform clients and servers in node for those that are interested in that as a platform.


SyncyDink is our web-based movie player, based on video.js and vue. We're building reusable components for connecting to buttplug servers and doing tasks like scanning for and listing devices.

The movie player portion can currently load a movie, and load haptics files via our new haptic-movie-file-reader library. This isn't on npm quite yet but should be in a day or two, will make another post when that's done.

We'd like to have syncydink working well enough to ship along with v0.1, but don't want it to block our release, so we'll see where things are.

Other Projects

Been a bit quiet lately elsewhere. If you've got an open source sex project you're working on, please let me know via twitter or the email address at the bottom of the page!