Easy Device Integration for Games. EDI FunSSR1 V2.0 + Preview Device [03/2025]

Downloaded the new mega folder. Looks like it attempted to connect, then the device tried to twist itself to pieces (assuming that was due to the reset error). I hit the power to the servos quickly to not stress the arms.

2025-07-10 00:05:38.865 -07:00 [INF] Reconnection timer triggered. Attempting to reconnect.
2025-07-10 00:05:38.865 -07:00 [INF] Attempting to connect to Buttplug client.
2025-07-10 00:05:38.865 -07:00 [INF] Removing all devices.
2025-07-10 00:05:38.865 -07:00 [INF] All devices removed.
2025-07-10 00:05:38.865 -07:00 [INF] Existing client disposed and devices removed.
2025-07-10 00:05:41.155 -07:00 [INF] Initializing ButtplugProvider...
2025-07-10 00:05:41.155 -07:00 [WRN] Config.Key is null or empty. Initialization aborted.
2025-07-10 00:05:41.155 -07:00 [WRN] Configuration key is empty; initialization aborted.
2025-07-10 00:05:41.155 -07:00 [INF] Initialization started.
2025-07-10 00:05:41.155 -07:00 [WRN] DeviceId is set to -1. Initialization will be skipped.
2025-07-10 00:05:41.155 -07:00 [INF] Attempting to connect to Buttplug client.
2025-07-10 00:05:41.155 -07:00 [INF] Removing all devices.
2025-07-10 00:05:41.155 -07:00 [INF] All devices removed.
2025-07-10 00:05:41.155 -07:00 [INF] Existing client disposed and devices removed.
2025-07-10 00:05:42.872 -07:00 [ERR] Failed to connect to client: Websocket Connection Exception! See Inner Exception
2025-07-10 00:05:45.161 -07:00 [ERR] Failed to connect to client: Websocket Connection Exception! See Inner Exception
2025-07-10 00:05:45.161 -07:00 [INF] ButtplugProvider initialization complete.
2025-07-10 00:05:45.999 -07:00 [INF] ?d?#?ets Jul 29 2019 12:21:46

rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0018,len:4
load:0x3fff001c,len:1044
load:0x40078000,len:10124
load:0x40080400,len:5828
entry 0x400806a8
AY value:0
AY voltage:0.00
Read Settings: /userSettings.json
Update settings
ESP32 v0.244b
Mac: 00:4B:12:34:EB:98
Wifi APMode IP: 192.168.1.1
Setting up web server on port: 80
Setting up webSocket
BLE waiting a client connection to notify...
TCode v0.2
Ready!

2025-07-10 00:05:46.605 -07:00 [ERR] Error while attempting to connect TCode device: Timeout waiting for TCode Name response
System.Exception: Timeout waiting for TCode Name response
   at Edi.Core.Device.OSR.OSRDevice.GetDeviceName()
   at Edi.Core.Device.OSR.OSRDevice..ctor(SerialPort devicePort, FunscriptRepository repository, OSRConfig config, ILogger logger)
   at Edi.Core.Device.OSR.OSRProvider.Connect()

Dropped in the pixeldrain edi on the new folder and it still failed to connect

Does this have support for Handy firmware 4?

yes

Are you familiar with Arduino Studio? Would you be able to send a command to your device in the serial monitor?

I’ve noticed your firmware is a bit older and I think it might not support the command Edi is sending to the device to query the name.

If you can send the command \d0 to the device and let me know what the response is it could help me understand what is happening.

The new edi.exe successfully got my osr2 working. Thank you so much!

1 Like

Figured it out! I had bought my OSR2 from G90ak, and it was loaded with an older firmware. I downloaded the latest firmware v0.451b and that fixed it!

Things to note:

  • Hit “Edit Timers” above the PIN allocations to update timers hz respone (set to 300hz)
  • You can set firmware device ranges, but they might be mostly informational atm

wrote (or actually AI did) a tool to optimize the gallerycsv/funscript combination (regions that are not used in the csv are removed from the funscript to reduce the size etc. ) and also added a option to add variations of specific animations in different speeds and save that into a new csv/funscript.

its js/browser based, so just rename index.html.txt to index.html and open in your browser.

index.html.txt (86.7 KB)

2 Likes

About upgrading:

Succubus Farm has an Edi.exe of 172,271k, and the latest in EdiDemo is 363,791kb.

initially, the instructions are to overwrite everything but the EdiConfig.json file, and later it says to just copy Edi.exe over the old one.

Which is correct?

To update the EDI program, you can simply replace everything except the “Gallery” folder and “EdiConfig.json”, since these are game specific.

Other than that, just drop the new files into the game folder and you should be good to go.

2 Likes

I was wondering how to go about EDI implementation with the Sims 4 sex mod WickedWhims? So it initially only supported Lovense devices through the Lovense app but it looks like the developer introduced an API which should allow custom devices to be connected. Judging by the EDI tutorial would I have to register every sex animation to be used by custom devices?

Not sure if this is relevant to giving support via EDI: Creating WickedWhims Custom Sex Device Listener

I just looked at the latest code on Github. Your UDP code actually works. You have to pass the port into the Bind method as well instead of the 0, not just on Connect.
The Bind address and port are what the client locally listens to and where the OSR sends the UDP data. The Connect sets up remote address and port for sending data.

Were you ever able to make an updated definition.csv file with corresponding scripts names for Pure Onyx w/ @99DM 's scripts?

Been looking for stuff about keybind assignment. I see some integrations have custom keybinds set (through plugins I think?) but I can’t figure out how to replicate it. Is there a way to create/edit EDI keybinds natively?

EDI doesn’t implement its own keybindings. Each integration handles key capture inside the game via the mod, and then uses those captured keys to send commands to EDI through the API

ah okay, makes sense. How hard would it be to either create my own keybind plugin, or copy the integration from one mod to another?

It depends on which technology the game is built on. If there’s already a mod for that technology that includes the binder and EDI integration, copying it is relatively easy. For example, there are RPGs made in JavaScript, like this one. If the game you want to integrate is also built in JavaScript in this particular framework, it will be fairly straightforward, replicating the mod integration will be quite simple.

However, if it’s built with another technology and no mod exists, then yes—it will be very difficult.