May Update - v3.0 Software Release

Hi guys,

It’s time for a major software upgrade for the OSR2.

Today I am releasing the version 3.0 firmware. This is an open source release, free to all, and should work just fine for all OSR2 versions.

In my mind this is the software equivalent of the OSR2.1 redesign, and it’s long overdue. I’ve spent several weeks on this, because it’s a ground-up total rewrite of the beating heart of the machine. If I’ve done my job well you shouldn’t notice much of a difference in the basic functions, but I now have the freedom to add in some new features.
Release 3.0 in the Arduino Serial Monitor.

All TCode devices have been using TCode v0.2 for the last 16 months, but I am now making the move to TCode v0.3. The big changes are the addition of ten “A” (Auxiliary) channels (for valve, lube, etc), the ability to store axis range preferences on the device so that you don’t need to set them every time, and some extra useful “device” functions, including a “STOP” function. There haven’t been any changes to the core protocol, so this code will still work with existing players.

As for the new firmware itself, I have made several improvements to the device setup.

The T-valve is now on the A0 and A1 channels. By default the valve now operates an automated suck algorithm on the “A1” axis. That means it opens on the way down and closes to a commanded position on the way up. It’s 50% by default but you can change the default in the options at the top of the firmware.

“A0” offers direct control override of the valve position for any app developer who wants to write their own valve control algorithm.

I’ve included an easy option to reverse the valve servo direction, which was a popular request.

Another popular request was an auto-timeout function for the vibration channels. The vibe channels will now therefore cut out after a specified time interval if no commands are received, which is 2 seconds by default.

In this release have also supported IssacNewtongue’s popular iLube mod, which replaces the second vibration channel with a lube pump. This feature can be activated at the top of the firmware, and switches the second motor controller to be controlled by a button on pin 13, and the “A2” axis.

The last feature is that for this release I have gone back to using the standard Arduino servo library. I haven’t been particularly impressed with my custom library running on the Romeo given the limitations of the hardware.

This new code currently only works for the OSR2. I intend to produce an SR6 version in the near future, but this will be ESP32 only. In the meantime the existing SR6 firmware should work just fine with any TCode v0.3 player or plugin, it just won’t have access to the new functionality.

Finally, something for my $8 patrons. My main focus this month has been on writing this software, but in working on this new firmware I spent some time looking at the T-Valve.

I think the valve can add a lot to the experience of using the OSR2/SR6, and particularly with scripted content. The biggest problem with the valve has been that the effect seems to have been a bit all-or-nothing. This is because the suction effect only really occurs with relatively small hole sizes.

I’ve experimented with making changes in the software, adding a non-linear opening scale for example, but in the end it was instead a change to the cut-out shapes in the valve base that worked best. Therefore this month I am going to be releasing an improved valve base. It’s a small modification but it makes a huge difference.
Updated T-Valve base

It’s being great seeing multi-axis scripting being taken up by the community on eroscripts with pitch, roll and twist axes being added to a lot of popular scripts. I hope that this month’s updates will lead to a similar uptake in “suck” axis scripting.

Have fun!
Tempest