• Hello Guest!

    We have recently updated our Site Policies regarding the use of Non Commercial content within Paid Content posts. Please read the new policy here.

    An offical announcement about this new policy can be read on our Discord.

    ~The VaMHub Moderation Team
  • Hello Guest!

    VaMHuB! Has been updated!

    Please see this thread for more information.


Plugins ToySerialController+VAMLaunch 10

Plugin intended for Launch owners to feel the action in scenes without having to set up anything specific other than a session plugin. It also works with other toys supported by VaMSync.

It works by using VAMLaunch-plugin controlled by ToySerialController-plugin with auto motion source detection and tracking as a session plugin, sending commands to the VAMServer/VAMSync which in turn sends it to connected devices.


Don't forget to update your session plugin when you download a new version!

Thanks to:
Zengineer for the VAMLaunch and hazmhox for the VAMLaunch Repack

Yoooi for the ToySerialController

In addition, I have made some additional features and changes and bug fixes in both plugins. For the ToySerialController I mostly tweaked it to be more reliable for linear output devices when tracking different motion sources (as the Launch is a linear output device!).

After I discovered the ToySerialController, I decided to merge it together with VAMLaunch. The goal was to get an automatic detection and tracking of a motion source (mouth, hands, chest, vaginal, anal, feet) from the ToySerialController to drive the VAMLaunch plugin using a "virtual" zone which in turn drives the Launch without having to tinker with an individual scene. I'm very happy with the result. All you have to do is to set up a session plugin, hit "start Launch" and it starts tracking the action in the scene automatically.

How to use:
  • Add this as a session plugin.
  • Load up a scene, posses/embody/passenger yourself.
  • Start the udp/Launch from within the session plugin (this must be done for each session of VAM - it never starts automatically after starting VAM)
  • Play the scene and enjoy the Launch experience whether it being mouth, hands, chest, vaginal, anal or feet action happening.

  1. VaMSync server software required to connect to your device. It is available at https://github.com/intiface/VaMSync Only follow the installation guide for the server software in the link! Don't install any .var packages if you intend to use ToySerialController+VAMLaunch!
  2. Pair your device with your PC if using Bluetooth!
  3. Place the Blazedust.ToySerialController+VAMLaunch.var file in the AddonPackages folder.
    • Other .var files included in the VaMSync or VAMServer guides are NOT required if you intend to use this plugin!
  4. Extract the contents of the 'default preset.zip' in your VAM root installation folder. If you don't do this you will get a startup error message telling you that there is no config to load - as one is not yet created. This message is OK.
  5. Start VAM.
  6. Opt-in to allow plugins to use network features


  7. Add this plugin as a session plugin.
    • 1659694048590.png
    • 1659694087348.png
    • 1659693658886.png
    • 1659693685882.png
    • 1659693640301.png
  8. In the plugin interface: Make sure to select VamLaunch as Output Target.
    • 1659693720072.png
    • 1659693833683.png
  9. Load a scene with Male+Female.
  10. Press "Start Udp/Launch" to start sending signals to VAMServer and your connected Launch when there is action in the scene.
    • 1659693826822.png
  11. Tweak Launch settings to your liking/scene specific conditions (see further down).

by default the motion source is set to "Male + Female" with Auto targets. The first male in the scene will always be selected.

Troubleshooting and Connecting:
If Launch can't connect (this is how I do it):
  • You need a PC with bluetooth (make sure you're running the latest bluetooth drivers).
    • Bluetooth must be enabled in Windows.
    • If you have a bluethooth antenna with the motherboard, make sure it's actually connected and not still in the box.
    • (Optional) You might have to pair the Launch with your PC first (pair other bluetooth devices - I did this at some point with my Launch).
  • Start your Launch and make sure the blue LED is blinking.
  • Start the VAMServer (BEFORE starting VaM, after starting your Launch).
  • Wait a few seconds, select the Launch once it shows up in the VAMServer list. Your blue LED on your Launch should now be solid.
    • If you can't see your device:
      • Try restarting the VAMServer.
      • Try restarting your bluethooth chipset (bluetooth off/on in windows) while VAMServer is closed.
  • Start VaM once Launch is connected to the VAMServer.
  • Start this plugin as a session plugin and that you have the correct motion source and Udp/Launch is started and have a scene with some action.
  • This plugin can't work together with existing VAMLaunch plugins in scenes. Remove them if you have any and want to try out this plugin to drive the action.
  • If you need to restart the network due to an already used socket error: press "stop Udp/Launch" and then "start Udp/Launch" again.

Plugin settings:
VAMLaunch settings will be on the left side, ToySerialController settings on the right.

  • Current Axis Input: Shows the current selected axis input value from the ToySerialController.
  • Device Simulator: Simulator over the Launch.
  • Device Max/Min Range: How far the Launch will go up/down along your shaft.
  • Use Random Max Range: For scenes with a static linear up/down thrusting motion this can add some extra... flavour over how far your knob will be rubbed ;)
  • Advanced (optional settings):
    • Main.Smoothing: Smooths the position sampling which causes less jitter but also less movement. 5-15% seem to be a good starting point.
    • Main.Reference Length (%): The Reference Length is the source's shaft length (penis length for the male if male is the selected source) to be used during the ToySerialController calculations for the axis input.
    • Main.Reference Radius (%): The Reference Radius is how far away the reference can be to the target point/axis. If the axis input doesn't seem to register all the time, try increasing the radius ℹ
    • L0.Target Point End/Start: Where the target point will start/end compared to the reference. Increasing both values by the same amount (like +/-20) will move the whole target point away/closer, making the input offset with the same amount.

  • Device Speed Multiplier: Calculated output speed to the launch will be affected by this multiplier. You may want to tweak this depending on your FPS mostly.
  • Axis Input Multiplier: The input from the ToySerialController will be amplified by this amount. Usually, animations never go ALL the way to the bottom or the top during animations. To utilize the whole range of the Launch device, increase this slightly.
  • Device Max Speed: If you want to limit the Launch's maximum speed to something calm, you might want to lower this. Sometimes a false prediction might happen, causing the Launch to go top-speed up/down. You may not want this for some animations.
  • Device Min Speed: This only affects the speed calculation prediction and might be useful for other devices than the Launch (which can move very slowly).

  • Current Adjust Time:How long a stroke will be monitored before being predicted what speed the Launch needs to move in order to cover a certain distance. This one is calculade based on the 4 following settings.
    • The FASTER animation you have the LESS time you want. If this time is too high and the animation too fast the Launch will miss out on some strokes, making for a lesser experience.
    • The SLOWER animation you ahve the MORE time you want to make the prediction of the speed more accurate.
  • Min/Max Adjust Time Threshold and Min/Max Adjust Time Vel Barrier: both controls how the Current Adjust Time is calculated.
    • I have min time set to about 0.08, max time to about 0.20, min velocity to 10 and max velocity to 50. Seem to work good for most animations for me.
  • Position Sample Rate: Depending on your FPS and Physics Rating, you may want to tweak this. I leave it at 40.

  • Curve Axis Input:Choose which axis input to use from the ToySerialController.
    • Launch is a linear output device. C0 is a combination of curves L0, R1 and R2 with some built-in transition curves. This considers up/down motions as well as horizontal/rotational hip movements. This is the default. I don't recommend changing this.
  • Invert Axis Input: If you need to invert the axis input from the ToySerialController. The ToySerialController always have its own invert options too.
  • If you need some other control when the VAMLaunch will predict a movement, you might want to play around with the graph V0 like the image below together with other settings to suit your Launch-style.


  • To Current Input If No Movement: Feature to move the launch to current input axis value if no movement has been detected for a certain amount of time. This is default active with a time of 1 second. If all movement stops but the target point remains in the reference zone the launch will move to the current idle position of the target point. (e.g. move the launch when a hand idle somewhere along the shaft).
  • Minimum Axis Input Before Predicting Movement: Allows you to adjust the minimum distance the axis input needs to move before predicting a new movement with the launch. Some animations have very subtle movements where this could be useful to decrease (but at the cost of prediction accuracy for faster moving animations).
  • Select Max Input Prediction Mode:Use the current stroke's min/max apex axis input values to analyze when to predict the next stroke (it's not time or speed dependent like the old way).
    • NONE: Disable this feature.
    • A: Max Input Value: Use a fixed distance value to travel from current stroke apex.
    • B: % of Axis Range: Use a percentage distance of current stroke range the input needs to travel from current stroke apex before predicting ("dynamic" distance).
  • A: Max Axis Input (From Apex): Fixed distance to travel for mode A. Increase this if you want to predict strokes later, decrease to predict them earlier.
  • B: % of Current Axis Input Range ( From Apex): Percentage distance to travel for mode B. Increase this if you want to predict strokes later, decrease to predict them earlier.
  • /Axis Input Range Apex Min/Max Position:Current analyzed min/max positions of the current stroke's apex point which is used for the prediction modes.
  • Example of this prediction mode using %: If the current stroke's axis input value is from (min) 20 to (max) 80, there's an axis input range/travel distance of 60. Once the next strokes travel distance is past a certain threshold it will predict the next stroke. By default the threshold is set to 50% of the current axis range. For an axis input range of 60 it would be when the next stroke has traveled 30 from the current apex (50% of 60 is 30). Analyzing distance traveled has the benefit of not being dependent on speed which makes it very robust when predicting strokes even when speed changes from fast to slow and slow to fast.
    • I have this set to mode B with 50%. This together with the timing values seem to work fine.

Primary Settings for Launch Intensity
The following list of settings/configuration seem to be primarily responsible for the intensity output for a Launch device in my experience. To increase the intensity of a Launch device, try experimenting with the following settings:
  • Main: Reference Length (%): Try 70-100%. Roughly translates to higher axis input values as the reference doesn't need to move as much. This one setting might be enough to tweak for most animations.
  • Main: Smoothing (%): 5
  • Device Max/Min Range: Set to the range you want.
  • Device Speed Multiplier: Try between 1.0 and 1.2 depending on the animation. (Speed can't exceed the Device Max Speed setting.)
  • Device Input Multiplier: Try somewhere between 1.0 and 1.4 depending on the animation.
  • Device Max Speed: Set it to the max speed you want. Start around 70, higher if you want the possibility for even faster strokes.
  • (Optional) Velocity Smoothing Steps: Try value of 1 or 2 - result depends on the animation.
  • (Optional) Min/Max Adjust Time Threshold and Min/Max Adjust Time Vel Barrier: both controls how the Current Adjust Time is calculated. This works together with the max input prediciton mode.
    • Try min adjust time 0.05 - 0.08, max time to about 0.15 - 0.20, min velocity to 10 and max velocity to 50.
  • (Optional) Select Max Input Prediction Mode: Try mode B with 40% to 50%.
There are a lot of settings, configurations and possibilities. I have most of the settings on default. I usualy only tweak the above settings, from top to bottom, when tweaking.

Motion Sources:

The ToySerialController features some different options for motion sources.
  • Select motion source: Primary source of interaction between persons/atoms. For all scenes I use I have it selected "Male + Female" and all Auto.
  • Select Male: Male acting as the source for which the penis is being tracked.
  • Use Fixed Penis Reference Length: Some animations animate the penis tip, causing the length to vary up to 10% (as the ToySerialController uses the collision models to calculate the length) causing the length to vary which in turn causes the input to jitter which could cause faulty predictions. Enable this to have a fixed reference base length.
  • Select Female: Female (or Male) to track. *Auto* will select the female with the most accurate Target Point.
  • Select Target Point:Target point to track for the selected female (or male). Supported auto target points:
    • Auto (tries to use the target point with the most relevant motion)
    • vaginal (which is the penis if target is male)
    • mouth
    • hands
    • chest
    • anal
    • feet
  • Include Males In Female Targets:To include males in female targets as valid tracking points. This also works with the Auto options.
    • When including Males, you might want to increase Reference Radius in the main options to make it easier to track the male anus target point - this is already done automatically to some extent in the code.
  • Include Females In Male Targets: Intended for lesbian scenes. It works best when one female strokes the other with the hand. Depending on the scene and stroke angles, this might work or not. It's kinda underdeveloped and I abandoned this feature. It works good enough for some scenes, others not. Play around with it if you want. You can just add an invisible dildo and use that as a motion point instead.

I strongly recommend DiviningRod as that enhances the accuracy of the penetration and therefor the tracking of the motion source in this plugin. Not all scenes need this, some already have this, some will be better with it:

Embody for scenes where you want to follow along one of the characters (POV):

  • Animations that doesn't have an up/down thrusting pattern but rather a sideways/horizontal grinding doesn't work too well with this plugin unless you use the Curve Axis Input "C0" which works best for this scenario. You can experiment with different axis input to track sideways motion for specific scenes.
  • Animations that doesn't properly align the penis/source can fail to track or get inconsistent tracking. Here you might want to tweak around on some of the ToySerialController's settings, like Reference Radius and increase from 300 to up to 500 for those specific scenes.

What to do after you get everything up and running?

Visit old scenes again from the past burried in your VAM installation with various animations for oral, vaginal, handjobs, boobjobs, anal, feet! There are a lot of great animations out there with embody/passenger enabled scenes. I have tried this plugin in a lot of scenes by now. This will be my go-to plugin for the Launch experience.
  • 1638653083279.png
    78.4 KB · Views: 0
  • 1638653089235.png
    15.9 KB · Views: 0
  • 1640541033017.png
    16.7 KB · Views: 0
  • 1641570909551.png
    7.7 KB · Views: 0
  • 1659693743028.png
    58 KB · Views: 0
  • 1659693763637.png
    17.2 KB · Views: 0
  • 1659693810227.png
    24.4 KB · Views: 0
  • 1659693813177.png
    24.4 KB · Views: 0
  • 1659694016900.png
    5.3 KB · Views: 0
  • 1659694024341.png
    6.9 KB · Views: 0
  • 1659694061929.png
    36.5 KB · Views: 0
First release
Last update
4.83 star(s) 24 ratings

More resources from Blazedust

Latest updates

  1. ToySerialController+VAMLaunch (update) v.10

    * New Curve Axis Input called "C0". It's a combination of curves L0, R1 and R2 with some...
  2. ToySerialController+VAMLaunch (update) v.9

    * Minor tweak to avoid triggering very fast predictions when changing min/max range which also...
  3. ToySerialController+VAMLaunch (update) v.8.1

    * Updated the optional bundled configuration files. * Normalized the version-nr to "8" instead...

Latest reviews

Working with most existing scenes. Needs some more tweaks to get it perfectly and I believe it will get there.
Upvote 0
I don't get this at all, I did everything that the instructions say, but yet it does not work. I honestly think there are some things missing from your instructions
Seeing how you didn't provide any more information, I will assume you didn't do one of the steps or have an incompatible device.

Follow the instructions in the "Installation" part and the "Troubleshooting and Connecting" part.
Only install the VaMSync server software from the external site, nothing more! Also make sure your device is compatible with the VaMSync and have updated firmware if required.
You need a computer with Bluetooth, installed drivers, Bluetooth enabled in Windows, your device paired in Windows and possible the VaMSync server permissions to use Bluetooth. Plenty of information online how to do this. Otherwise the VaMSync server can't find your device. I can't help you with this as you must do it.
Don't forget to click "Start Udp/Launch" afterwards.
Verify that the "Current Axis Input" is moving in scenes at all.
See also https://hub.virtamate.com/threads/toyserialcontroller-vamlaunch.14653/page-4#post-103190

The rest is up to you to keep troubleshooting if you want to try or engage with more information in the discussion thread.

Thanks for the review.
Upvote 0
In case anyone else is having trouble connecting their device. (Lovense Max 2 in my case)

. Install the latest version of VaMSync

. Download and extract the contents of buttplug_rs_ffi-lib-win-x64 overwriting any existing files in the VaMSync folder

. Start VaMSync and select your toy. If no toy appears. check the Logs tab.

. After connecting your toy, start up VaM

. Load up your scene, add this plugin to the session plugins and click "Start Udp/Launch" with VamLaunch selected.
Upvote 0
Best Toy in the Game!
Upvote 0
Easy to use and worked really well. definitely a must have plug in for your electronic helpers!
Upvote 0
Love this plugin. I use it with the Handy and while it takes a bit of adjusting, it makes vam a much more enjoyable experience 😀

I would love to be able to connect the handy via wifi, as i need a bit more range than Bluetooth allows. Anyone know if this is possible?
Upvote 0
Upvote 0
god mode
Upvote 0
Does the thing! Works well with vibrators!
Upvote 0
This is a game-changer if you have an interactive device. As others have said, for the most part it just works. Very little fiddling or configuration. This is the first thing I add when starting VAM, along with SPQR Haptics plugin and the immersion level goes to eleven! Thanks @Blazedust!
Upvote 0
Top Bottom