Nimblestroker and Scripting, a Deep Dive

I’m hoping that due to them now speeding up the production it’ll mean more tech savvy folk can take a look at this. I honestly wouldn’t know where to start but if I did I’d be trying to create something that would work with this device.

It has the ability to be more popular than the OSR2 due to everything that it can do. As you say, it just needs someone to figure out how this thing works but considering this device has been out for 2 years and there’s nothing, I don’t have much hope for the future until it becomes more widely adopted.

oh yeah, I also forgot to say that I emailed the creator of XToys and he said that he’s getting his device within the next month and then will work on adding it to the website. Once it’s on there it’ll open up a WORLD of possibilities.

Is there any way to email the Exploratory Device / Nimblestroker “Team”?
I never got an answer on Twitter, there is no contact information or even imprint on the website/shop - which I find kind of strange for a device at that price point to begin with…

I mean, as someone said before: It has been on the market for two years already, eventhough production numbers seem to be low. It’s not like it’s within the first 2-3 weeks of creating a business and is just not up to speed with everything. My primary concern is the fact that the website states taxes = zero USD at checkout and since this would be quite a bunch in Europe I just wanted to double check if that is true. Not being able to contact someone pre-sales is just not very comforting.

1 Like

Those are indeed valid concerns. I was also rather uneasy at the lack of contact information listed on the website, although I unfortunately don’t share your issue of European taxes. The one thing I found was that on this page: Deposits and Warranty – NimbleStroker, it was stated that you could cancel your order (note this still talks about a reservation and they aren’t doing deposits any more so could be outdated), or contact them about any problems by replying to your confirmation email.

I haven’t tried this so I don’t know how responsive they would be, and this might not help if you don’t want to have to actually make a purchase to access their support, but it’s unfortunately all I could find.

For what it’s worth however, I can share the address they sent my confirmation email from: support@exploratorydevices.com
I can’t guarantee that they would respond to any inquires there but might be worth a shot!

I read that part with the confirmation email as well. Thank you for your time and effort! I will give your email address I try.

I just got mine recently and started playing around with some of the code. Here are my recommended settings.

NimbleTCode.h
MAX_POSITION_DELTA 100
This will fix your issue when a script speeds up it does short fast strokes. Now it will do fast full length strokes. I think the reason is before it was limited to 50 units of position change between each update frame. Now the max is 100.

VIBRATION_MAX_AMP 100 or 1000
This controls the strength of the vibration. 0% is no vibration. It slowly ramps up to whatever your dick can handle. 100 is fine on its own but if you dial up the vibrations with the pendant instead of the connectivity module, you’ll notice how your floor will start shaking. Setting this to 1000 will get it close to what the pendant can do.

VIBRATION_MAX_SPEED 50.0hz
This controls the behavior of the vibration. At 25%-35% you get a nice deep ass rumble. At 45%-70% you get a shit loads of violent shaking because the resonance frequency of the Amplitude and Max Speed is probably causing an interference pattern. I do not recommend. At 80%-100% you get a nice high speed vibration, something like a wand.

nimbleConModule.h
ACTUATOR_MAX_POS 1000
You can switch this to 1000 to max it out. This will give you more range. It affects how tight it clenches at 100 and how loose it gets at 0.

screenshot02

In MultiFunPlayer
Go into the Serial Settings as shown and turn off Offload elapsed time. I don’t know what this does but when you turn it off, you get a lot more movement out of the device. When switched off you’ll definitely feel the machine fucking the shit out of you.

screenshot01

And finally how I control everything…

L0 Controls the stroke length
V0 Controls the vibration strength
A0 Controls the air in/out valve. 0%-33% air out, 34%-65% close valve, 66%-100% air in.
A1 Controls the force. Basically how hard it forces the air into the desired position. I leave this at 100% and disable it from showing. I want it hitting at 100%.
A2 Controls the vibration behavior. See above for recommended ranges.

I only set the funscripts to control the L0 axis. This controls the up and down stroking motion. Everything else I just leave the values depending on what I want like if I want vibration or not.

A couple of thoughts:
This thing is fucking amazing. First time I used it was with some really good VR blowjob porn. The Nimblestroker synced up perfectly. It felt like the full range of getting my dick sucked by a professional. When the scene had the girl sucking on tip, the stoker was around the 70-100 range at the top and was working on my head. When the girl swallowed the whole thing, it actually felt like I was getting deep throated. The received sucked my dick in like a vacuum. And then everything else in between.

Of course it’s not perfect though. You have to be fully rock hard to get the best range of motion. I am praying to god though that someone figures out a way to get this thing heated. That would be the chef’s kiss. Also depending on how long your session is, your lube my dry up and you have to relube. I think I might modify the air valve on the receiver, cut a slice off and shove a small tube into the exposed hole that I can shoot lube into. Also the air in/out doesn’t change the air that much. I want air in to grip my dick so tight that it’s about to snap it off.

But overall: Great machine. I am getting erectile dysfunction because I keep using it so often that it’s wearing my dick out.

Updates: Edited the settings to get way stronger vibrations.

7 Likes

Wow, such an incredibly detailed post, my machine is getting delievered next week and you’ve made me get even more excited, I’m counting down the days like its Christmas!

The experience you had with the VR blowjob video sounds unreal, do you have a link to the video / script, I’d love to try it out.

Honestly, my dream would be to use the Nimble with something like SexLikeReal (paging @Realcumber) in VR. I don’t think I’d leave the house!

Some really useful info here! I can tell that these values are making the device much more responsive!

Also funnily enough, fixing the vibration values actually helped make the code I hacked together to manually add vibrations actually do something. The thing is that I just hardcoded the vibrations to be around the max amplitude when you input any amount of stroke length on the pendant, but since that value was so low, the vibrations were hardly noticeable. Now changing those values let me manually toggle some max strength vibrations during a script which is quite nice!

Now unfortunately, getting the device to properly locomote under its own power seems to still be rather inconsistent for me. I don’t think this is necessarily an issue with script responsiveness, as even in manual mode, I can’t always get full-length strokes. Most of the time, even if the speed is low, the device will move partway up or down the shaft, and then act as if it has hit a wall, stopping the motion until it changes direction. So unless I am helping it along, the strokes end up covering quite a small area.

I feel like there are quite a few variables at play here though, as my struggle is getting the same behavior to happen consistently. There’s sleeve and seal fit that could be an issue: I’ve been mixing and matching 3 sleeves and 2 seals to try to find out which combo works the best, and while I prefer the feeling of some, I think others give better motion (I think the few times I’ve gotten full length strokes with minimal assistance, it was with my larger seal and least textured sleeve). I’m also constantly messing with air in/out, which maybe isn’t doing much, but could be messing things up. And in the case of lube, I feel like I’m using enough, as it feels pretty smooth and is already making a bit of a mess, but I dunno if way more than I think is needed to get it really moving. Heck, I’ve now even tried tying it to my over desk mounting solution to both stabilize it and slightly resist gravity, but the hands-free motion is still not quite there for me.

…as someone who uses suction and a Handy all the time, albeit with a more hands-on approach, i completely concur that there is a lot of ‘fine-tuning’ that one has to do on the fly to make it work. For long sessions, where one may be more erect at certain times than others, being able to throttle the suction on a whim is essential. There is an effect where too much stimulation can lead to a loss of stimulation, so one wants to ease down on the suction as much as possible, but in response to ones own particular biology and how one feels at that moment. This is something that would be impossible to script for, without possibly attaching some kind of pressure monitoring cuff round your cock, and then feedbacking it into an automated valve on the suction control, or wtvr.

In terms of ‘correct fit’, this is the main reason why many off the shelf blowjob machines that work perfectly for one chap fail so spectacularly for another. Correct fit is essential, and i would definitely recommend ‘nubs’ when it comes to the internal texture, as this allows one to feel still traction against one’s penis, whilst also allowing lube / vacuum to migrate freely.

And on the subject of lube, thick lube is very much your best mate here. i recommend mixing X-lube (powder) at 1 cap per 200ml water. This results in a thick gel like goop, that helps seal the vacuum in whilst allowing movement under intense pressure.

Non scripted suction is easy, Serious Kit can keep you going for hours with it’s constant lube, and it’s different vacuums. Personally, i favour an open loop suction for my Handy, as it doesn’t have the strength to stop the Handy, but instead does toe curling things to you as it sucks up and down. Which is nice. What i’m hoping for is a hybrid system, where we can utilize the Nimblestroker (or wtvr) with scripts, but run it in open loop.

Really stoked to see this subject finally getting some traction! Now i’m gonna have to learn to Github…

2 Likes

Thank you for this! I’ve been experimenting for quite a while with this, although my coding knowledge is limited. @TesterMan13 I am interested to try your unofficial code and see how well it works. @jmatrix I will try your settings and see what comes of this.

That said, I’ve been switching back and forth between two firmware sets on my connectivity module. One is the aforementioned serial t-code firmware, but the other is this:

This is a bluetooth implementation that is controlled with a web app. You can directly control the device, or you can set it to randomly stroke between certain parameters, or (my favorite) even use an Edge-O-Matic to control the Nimble.

The problem is at the end of the day, the machine doesn’t actually track any air pressure. It’s a sensor that moves a magnetic cylinder up and down. That cylinder is attached to an air bladder which causes the opening and tightening motion of the receiver. All it does is detect the position of the magnetic cylinder.

The air in/out valves work, but the difference is very very subtle.

A couple more tips: Connect everything except the air hose to the receiver. Turn the machine on. Set the L0 axis in MFP to 0-1 range. This way the actuator cylinder slides all the way to the bottom position. Then attach the air hose the receiver. This ensures that when it goes to 100, it’s doing it with maximum range. Then set the range back to 0-100.

Next thing I plan on doing is splicing the air hose. It’s 5/8" interior diameter by way. I plan on adding a T shaped splicer when a check valve. This way I can add air inside the actuator so that when its at position 100 it’s clenching tight enough to snap my dick off. Because the tighter it squeezes, the more it’s pushing my dick out/off the receiver. When it’s at 0, gravity takes over and it slides back on my dick. This way I can get a lot more motion out of it. How it’s working right now is that the receiver sucks me in and if I don’t have a raging boner it doesn’t push out that far. It feels like I’m getting deep throated which is not bad, but I still want a better range of motion from it. Problem with my current endeavor is I can’t find a hand pump or something that’ll pump air into the check valve that’s compatible and will fit the 5/8" ID hose. And I don’t want to daisy chain a bunch of adapters together or Macgyver something with electrical tape because the whole thing would be too bulky and unwieldy. Let me know if you guys have a solution to pump more air into the receiver.

2 Likes

Oh, yeah ok, that tip for setting the stroke length in MFP made quite the difference!
I wish you luck on your modifications! I have come to realize the limitations of the air in/out as well, so I hope a workable solution comes around sometime soon!

For my next upgrade, I’ve gone a bit crazy and pulled the trigger on an SR1. I was realizing that when using the Nimblestroker in sync with a Handy, the limitations of the Handy have become a bit more apparent.
First off, the Handy does not play scripts well over MFP. It is well known that the device struggles with responsiveness over Bluetooth, which is how I was attempting to connect it to MFP. I did try its exclusive Handy connection mode too, but it seemed just as bad, possibly why it’s listed as experimental. At any rate, I should be able to get a much more responsive connection with the SR1.
Next, the additional power of the SR1 should allow me to play more with using the Nimblestroker unsynced. A thing I tried was playing a script on the Handy while keeping the Nimblestroker in manual mode, but as one could expect, the additional resistance will really tank the Handy’s performance. Really excited to put that extra strength to use!
And finally, the SR1 model I’m getting should also just be a better fit for my setup. It’ll have 2 straps to hold the Nimble receiver and a screw hole that should fit perfectly on my mounting arm.

Thanks for all the suggestions, did the modified code and MFP setup and settings and now this little expensive toy is quite amazing if you can afford the funds :sunglasses:

Though I can’t seem to get it to show up in Intiface Central (my nimble is listed as COM4) so I can get it connected with games :thinking:

So I did run into a few issues getting Intiface Central setup myself, so hopefully I can provide a bit more helpful info for this.

I assume you were following mnh86’s example for setting up the firmware with Intiface. If you have MFP working then hopefully your connectivity module was properly setup.

In that case, there’s a few things worth double checking with the Intiface setup:

The quickest thing to check would be making sure “Serial Port” is toggled on in the “Advanced Device Managers” section of the settings. Just to make sure!

Next, let’s talk about the the buttplug-device-config.json file. For me, any time I had an issue, it was relating to this file. There are instructions for setting this up on mnh86’s Github, but I’ll walk through the process here to attempt to catch any potential issues that could happen:

So after opening the config file C:\Users\(User)\AppData\Roaming\com.nonpolynomial\intiface_central\config\buttplug-device-config.json, we want to find the block labeled “tcode-v03”. By default, it should look like this:

    "tcode-v03": {
      "serial": [
        {
          "port": "default",
          "baud-rate": 115200,
          "data-bits": 8,
          "parity": "N",
          "stop-bits": 1
        }
      ],
      "defaults": {
        "name": "TCode v0.3 (Single Linear Axis)",
        "messages": {
          "LinearCmd": [
            {
              "StepRange": [
                0,
                100
              ],
              "ActuatorType": "Position"
            }
          ],
          "FleshlightLaunchFW12Cmd": {}
        }
      }
    },

Now before I explain anything else, it might just be worth attempting to replace that whole block with all the modifications at once. If the config is still in its default state, then go ahead and select that whole block (make sure to get it all the way down to the final curly brace and comma) and replace it with this:

"tcode-v03": {
   "serial": [
     {
       "port": "COM4",
       "baud-rate": 115200,
       "data-bits": 8,
       "parity": "N",
       "stop-bits": 1
     }
   ],
   "defaults": {
     "name": "NimbleStroker Connectivity Module (Serial TCode v0.3)",
     "messages": {
       "LinearCmd": [
         {
           "StepRange": [
             0,
             100
           ],
           "ActuatorType": "Position",
           "FeatureDescriptor": "Up/Down Position (L0)"
         }
       ],
       "ScalarCmd": [
         {
           "StepRange": [
             0,
             100
           ],
           "ActuatorType": "Vibrate",
           "FeatureDescriptor": "Vibration (V0)"
         }
       ]
     }
   }
 },

Starting from a default config, I have replicated doing this replacement and the device will show up when scanning. But let’s still look at this in detail:

First, we want to make sure the “port” option is correct. You said yours was listed as COM4, so I went ahead and put that in the paste. For me, it was COM5, so that’s what I used instead.

I think the main other thing that could go wrong is the json code being malformed. This could be the result of a comma or curly brace being out of place. That is why I suggest starting with the default file and pasting over the exact lines I posted. If you edited the default manually, it’s possible an error could’ve been introduced that way. Notably, the line "FleshlightLaunchFW12Cmd": {} could’ve messed things up too if it was left in there, since it might’ve looked like it was the start of a different block instead.

The final piece of advice I have is that if the json code is messed up at all, Intiface will show an error on launch and reset your config file. Keep an eye out for a red triangle icon in the top right corner and recheck your config file in case anything goes wrong. For various reasons, I’ve had my config file reset on me, so even if you think you got your config correct, just give it a look to ensure the changes you made are still there!

1 Like

Thanks! That did it, the “FleshLightLaunchFW12Cmd” was left in there and yeah I was following the mnh86 guide. Everything fully works on both Intiface Central and MFP now. Now I just need to grab a Meta Quest 3 for an easier VR setup (currently have the HP Reverb G2)

I hope this whole topic helps other future Nimble Stroker users

1 Like

Hi there, registered just to poke my head in here since info on this thing is hard to find, still. Did any of you have to do anything special with the connectivity module before uploading? I’ve gotten everything to compile and it recognizes the board, but it just flashes the encoder light a few times then declares “Wrong boot mode detected (0x13)! The chip needs to be in download mode.”

The commonly-stated remedy for this is to short IO0 to ground at reset, but I can’t access that without breaking the case open, and that feels a bit extreme. Am I missing something simple?

Hello!

My Nimble arrived last week and it’s been incredible, I’ll be writing my own review shortly.

I am having some trouble getting the connectivity module to work as I’m quite new to coding and I’m looking for some support from those above who have got it working…

I’m currently trying to install the default Nimble module from the website ( GitHub - ExploratoryDevices/NimbleConModule: Nimble Connectivity Module (Basic functions and library)) as I believe you need to load this onto the device first before then building on top of that with some of the other github repos mentioned in this thread.

I’m running into a few issues:

  1. I have installed the Arduino program, opened it and made it SP32 Dev Module in the ‘board’ settings.
  2. I then try to select Port but it’s greyed out in the program. The Gifhub website says to do the following if port is greyed out:

If, after connecting your device, no new ports are avialable in the Arduino IDE, you may need to install drivers for the USB-to-Serial capabilities of the ESP32 used in the Connectivity Module. The CP201x drivers are available on the silicon labs website. Later devices may use the CH340 USB interface. Instructions on how to install these can be found here.

Now, the issue I’m having here is that once I download the CP210x Universal Windows Driver via the website, I get a folder in my downloads with 10 random files in it with no installer. Does anyone know how to install this?

There is instructions on the website that state the following:

Install Windows Virtual COM Port (VCP) drivers

  1. Download: CP210x Universal Windows Driver from Silicon Labs (tested with v11.2.0)
  2. Extract the driver .zip file to folder
  3. Open Windows “Device Manager”
  4. Attach the NimbleConModule to the PC via the USB cable.
  5. There should be a new device listed under Other devices
  6. Select the Silicon Labs CP210x USB to UART Bride device
  7. Right-click “Properties”, navigate to “Driver” tab
  8. Click “Update Driver” → “Browse my computer for drivers”
  9. Navigate to the driver zip folder that was extracted in step 2
  10. Click Next to install.
  11. The device should now be listed in Device Manger under "Ports (COM & LPT). Make note of the COM port for future steps (ie. “COM3”).

But, the issue is, when I open Device Manager there is no ‘Other Devices’ tab leaving me stuck. Any know how to fix this?

As I was losing hope with this option it, it did state that later devices can use the CH340 USB interface which I’m trying to also download and install, however it presents the following instructions:

How to Install CH340 Drivers - How to Install CH340 Drivers - SparkFun Learn

I follow the video tutorial on the above website and I then get stuck inside of Device Manager because I don’t have a ‘Ports’ tab.

I’m simply at a dead end here because both paths I can take seem to lead me to a dead end in device manager. Is there something I’m doing wrong? Does anyone else have a simple video tutorial showing the entire process, as I imagine this is going to be a steep mountain for every non-coder to climb whenever they want to use the Nimblestroker.

Thanks for any help!

Though I’m not sure I can be of TOO much help, but my module didn’t show up in my devices list when I used the supplied USB-c cable that came with the package, had to use my own known working cable that properly detects data transfer so maybe you could try that?

You can see if you have any hidden COM ports on the Device Manager by going to View > Show Hidden Devices


This is what it looks like on my end (With my nimble on Com4 after setup)

Support got back to me re: “Wrong boot mode”, they said they’d send me the print file or another case if I had to crack it open. So I did, and plugged it in with the BOOT button held down, and it’s worked fine ever since!

I’m not having any luck getting functions to work other than L0 using NimbleTCodeSerial, though. I can get them to do things in MFP but I don’t notice anything different happening on the device.

Unfortunately, that didn’t work for me as no port option appeared.

I do have this ‘USB Serial’ under ‘Unknown devices’ which seems to be the nimble as when I unplug it, it disappears, but I honestly don’t know how to update that driver.

I’ve had my Nimble for 3 weeks now and have had zero luck with getting it to work.

Can someone create a thread with a simple installation guide as I’m getting very confused between the different things you can install onto the device as there are so many paths I can go down.