My OSR2 modifications

I’ve been using an OSR2 now for a bit more than three months, and thought I’d share some of the improvements I made to the base, the lid, and the receiver.

I’m a wordy guy, so the way I’ll do it is to describe problems with the device that I found after assembling and using it, and what I did to fix those problems.

All STL’s for my modifications can only be downloaded from the Tempest Discord server. Look in the hardware-exchange channel for recent posts by my user ID. I’ll just show some images here. Here’s a link to the first Discord post with the STL parts.

First, these problems are all with the version of the OSR2 that existed three months ago. Three of these problems are solved by the recent OSR2.1 incarnation that was recently posted for the first time. I am not adopting that version at this time, because it’s not amenable to fixing one of my problems.

Now, a list of the problems, in the order I became aware of them.

  1. The base doesn’t have room for two power inputs or two switches.

  2. The receiver doesn’t hold onto a Fleshlight case very well.

  3. The servos get hot.

  4. The lid doesn’t stay on very well.

  5. The servos get loose after a while, and can’t be tightened.

A longer description of the problems:

  1. This is a problem of my own creation.

As those of you who’ve built the device know, the simple route is to wire the DC input jack right to the Arduino board, and power the servos from there. If you read the instructions all the way through, you also know there’s another way to do it, where you don’t pass the servos’ power through the board, but get it directly from the DC power input. The board itself is always powered by the USB connection.

Well, I had already decided to use high-end servos with my OSR2, to make sure it had good performance and was less likely to break. Such servos are naturally going to draw a fair bit of power. So plugging them into the board wasn’t an option. I also decided that the DC adapter I could find just didn’t put out enough power to comfortably power two servos, so I wanted to power each servo with a separate DC input.

That meant I needed to modify the base to have room for two DC power inputs, two switches, and - because I’m a big nerd - two power LED’s.

If anyone is interested in doing this, I’d be happy to explain how to do it. It requires some extra parts (header pins, busboard, etc.) and the ability to solder.

  1. This problem became apparent to me immediately after first connecting a Fleshlight case.

It’s just not a tight connection at all, and for the case to come loose, all you need is a bit of rotation during use. The first time it happened to me during use, it kind of just came loose and fell over. The second time, it was near the end of a top stroke, and the case flew up into the air a few inches. That’s when I resolved to make a change.

Rather than spend a lot of time thinking about how best to secure the Fleshlight case, I went straight to the Launch, which seems to have a very solid connection. Turns out it’s basically a ramp of increasing thickness, so as you twist the Fleshlight case, it pushes against those little angled tabs to create a strong friction connection. I took measurements and duplicated the shape, producing a new receiver that holds onto the Fleshlight case quite securely.

  1. This problem is more serious than it sounds, though how serious it is will certainly vary with servo choice.

More powerful servos are going to generate more heat, though I couldn’t say how much more. After I decided to do something about it, I used the first 17 minutes of a particularly active Cock Hero script to test. With the default setup, the surface temperature of my servos after those first 17 minutes (which includes 30 seconds of idle time at the end) was about 80C. That’s hot enough to cause third-degree burns in a couple of seconds. It was a bit cooler on the portion facing the outside, but I fully expect that high temperature to continue migrating out the longer the session goes.

My solution was to modify the lid to make room for a small cooling fan. The fan I chose was a Noctua 40mm 5V fan (there’s no clear way to power a 12V fan). You just screw the fan into the lid using the normal fan screws, break the little keying tabs off of the connector, and plug it into the 5V power output on the Arduino board.

I tested the solution with the same 17-minute section of script. The result was a drop of 20C, down to 60C on the hottest part of the servo. That’s hot enough to be uncomfortable, but not hot enough to cause damage without prolonged contact.

I posted two versions of this lid. One uses the new clip mechanism mentioned in the next problem, and one will connect to the original base, perhaps a little bit more securely (I increased the size of the bit that’s supposed to grab the base).

  1. This problem is pretty easy to notice if you’ve bumped or brush the unit often enough.

It was especially annoying when I was doing testing concerning the hot servos, as the lid kept falling off.

So I created a more secure clip to hold the lid to the base. The OSR2.1 design actually uses four corner screws to secure the lid, but I didn’t want to go that far.

The new clip works with the modified base.

  1. This problem was the last to become apparent.

I noticed from time to time that the servos had shaken themselves loose. At first, I could retighten the screws, but eventually, they no longer had good purchase - the threads were stripped. The design that was current when I signed up for the plans had the servo screws threading directly into the printed plastic, rather than using nuts on the other side that were difficult to get to during assembly. That makes assembly easier, but it also means those screws are temporary.

One solution, of course, would be to get some longer screws and add nuts on the other side. And that’s probably good enough for most people experiencing the problem. However, I decided to modify the base to hold hex nuts in place, making assembly with nuts easier.

Now some images of the modified parts.


Note the two spots at the top for DC power jacks, the two holes in the corner for 5mm round LED’s, and the two holes on the upper right side for small switches. You can also see the hex nut holders on the sides for the servos. If you decide to use this base, you should secure the nuts in place before putting the servos in position. The fit will be tight, so use a screw to pull the nuts into the case first, where they’ll stay, making installation easier.


It’s a bit narrower than the original at the bottom, so you need to put a little bit more effort into making sure the Fleshlight holder is oriented correctly to get the tabs into the slots before rotating to produce a secure fit.

Fan lid:

There’s another version on the Discord server which doesn’t have the new clip, but will attach to the original base (should be better fit than the original lid).

In case anyone’s interested, all these changes were made in Blender. It’s a completely free, open-source 3D modelling program (and more, as those using it to create Funscripts already know) that is, without a doubt, the most unintuitive software I have ever used. I suspect it’d be easier to start using for someone with a lot of 3D modelling experience, but before this, I had none. Creating the first version of the dual-power base was literally the first 3D modelling I had ever done, and it was painful. I had to look up how to do the most simple of things many, many times.

But all the other 3D modelling programs have baggage attached, so Blender is what I went with. It takes a lot of searching to figure out how to do things, but eventually, you get the hang of it, and even if you’re not doing things the easiest or fastest way, you at least know how to get where you’re going. And a lot of the time, when you find some task that there is no built-in way to accomplish easily, there’s an existing add-on that does what you want, and all you need to do is enable that add-on to save a lot of time.

Anyone interested in using the modified parts is free to do so. If you have the rights to use the original OSR2 parts (really a moral rather than a legal distinction), you have the rights to use these. That goes for people interested in modifying their own build, and anyone offering builds for sale (though you should have an arrangement with Tempest before doing that).


As for your 5th issue, that’s why I never adopted the second iteration of the base (the one you said was current at the time). I’ve always used the original one that uses nuts. Your solution works as well, as it’s the one Tempest put in his newest version of the base, but if you slightly overtighten, that small piece of plastic between the servo and the nut will break. Ask me how I know. I had to reprint the entire base because the crack went all the way through.

That’s certainly a possibility if you overtighten. The choice of material will also play a role. PLA is very strong, but it’s also very brittle. I use PETG for my parts, which flexes a lot before breaking.

So far, so good on the recessed nuts. If I run into a problem with cracking, I’ll probably just extend the walls inward to provide more material between the servo flange and the nuts. Which will still be a pain, of course, given that it takes nearly 12 hours to print with my settings.

I have made and posted a modified base on discord as well. My original ripped completely apart due to my poor 3d printing and the force of the JX servos during HMV watching!
The receiver I use is from Draaks original twist and it is very tight, no problem there.
I use PETG and under size the holes for the servo mounting screws a bit and then use a thread cutter to make clean threads. These have never loosened on my build.
I have never put the lid on my OSR as I was worried about heat from the start.
But what I have found is the opposite of what you found. The cheaper servos at 20K or 25K get super hot but the JX do not. The smaller ones actually drew more poser on my setup during my testing. Does not matter but the issue of heat does need some attention, like the fan.
Thanks for your help.

I have an issue with my build it starts up fine them both servos will just go to the end point an start to buzz I’ve tried looking through the code to see why this is happening but can’t see anything out of place ino is v 3