DG-Labs Coyote GUI v1.1

This software is to allow easy playback of Funscripts on the DG-Labs Coyote while using common sources like MultiFunPlayer, FapTap, etc.

It’s a significantly improved upon version of my previous release here:
DG-Labs Coyote TCode Support

It accepts T-Code input from either a serial port or a WebSocket and outputs to the Coyote over bluetooth.

The GUI allows adjusting the frequency, intensity, etc. for both channels individually, similar to XToys but with more fine-grain control.

Channel A is mapped to axis L0 (up/down) and Channel B is mapped to R2 (pitch). Optionally if using a single axis source you can link both channels or mirror/invert the axis L0 and output that to Channel B.

It’s generally compatible with all the same tools/software the OSR2 & SR6 are.


  • If using a WebSocket (like with MultiFunPlayer), it does not require any additional software.
  • If using a Serial Port, you need to create a virtual serial using software like com0com or Free Virtual Serial Ports. This lets software like FapTap connect to COM1 and the T-Code content gets routed out COM2 to the Coyote GUI.
  • The source .py files are posted as well, if running from source you’ll likely need to install some pip packages.
  • When using MultiFunPlayer, a -0.20s offset works best due to the slight lag in Bluetooth
  • In rare cases, not all Bluetooth adapters work properly. Some cause the output to significantly lag (many seconds) behind the input and progressively gets worse over time. Try a different Bluetooth USB dongle if you’re having issues.
  • com0com does not work on Windows 11 - use Free Virtual Serial Ports.


Python source & exe compiled using PyInstaller are here:


  • Fixed a bug when sending back TCode settings to host
  • Changed interface to control Duty Cycle and Frequency directly rather than using the X/Y values of the Coyote. When adjusting frequency it will maintain the nearest allowable Duty Cycle given whatever the required X/Y parameters must be to achieve the frequency.
  • Added extra .exe with debug output enabled



fantastic, Coyote finally has funscripts done right! At least for stuff that isn’t too fast because the bluetooth packet rate for the Coyote is a little on the slow side, but if the intensity range isn’t too large it seems to handle this better than xtoys by a long shot! kudos to you, the Coyote is going to be collecting less dust for me now. Works well with MultiFunPlayer using websocket for me. I think there is something backwards with the pulse on time because the intensity is much higher if I reduce the pulse on time and less if I increase it. I remember the xtoys dev saying something about one(or more) of those values were documented in reverse in the protocol doc.

Some stuff to make MultiFunPlayer work better based on my very brief time playing with this tool - It seems like zero position on the funscript is max intensity and 100 position is minimum intensity which seems backwards but it’s easy enough to turn on invert in MultiFunPlayer to swap that around.
For two channel usage while using L0 and R2 with MultiFunPlayer - Set one as inverted and the leave the other normal and you’ve got stroking sensations if the electrode configuration is setup for it, or at least opposite behavior between the two channels connected to different places.
To bring the intensity down when the funscript stops moving(such as a long pause in an edging funscript or a break in a Cock Hero) - Enable auto home with the auto-home inside script turned on for both channels, set delay and duration to 1 second or whatever works for the funscript and set target value to 100% since that is the minimum intensity. This way both channels drop intensity instead of remaining at a potentially uncomfortable high intensity.

Hope this helps anyone else trying to get the best use out of their Coyote.

Increasing the “on” time decreases the frequency because of the way the variables are handled on the device. Since they’re inversely proportional, that’s why it seems a bit backwards.

I might change the GUI to allow adjusting the duty cycle and frequency independently rather than controlling the device variables directly.

The part that was documented backwards was the channel IDs, but it takes that into account.

1 Like

any idea? i am on windows

1 Like

@Cardot How can i use/play Funscripts with videos with it? thx

I just cannot get it to work.

Im trying to play Funscripts with my DG-LAB Coyote and MultiFunPlayer.

@Cardot Can u please give me a Tutorial how to :pray: thxx

1 Like

Just run the program, choose the websocket option and open the socket:

It just uses the default settings in MFP for websocket output:

You need to open the websocket in the GUI before attempting to connect MFP.

the Option “WebSocket” doesnt appear in MFP and its not in the List either.

To the right of that little section there is a + button next to a gear button, click that plus and you should be able to select WebSocket there from the list of about 8 options.

@Cardot hi, this software looks awesome but I am having the same problem. I can connect Multifunplayer websocket to the Coyote GUI, but the GUI will not connect to my actual Coyote. It finds it on bluetooth, but won’t connect.

Any suggestions? Thanks :slight_smile:

1 Like

no idea, i not manage to connect the divice

Ah that sucks, bad luck dude. I’m in the same boat

I just uploaded an update of the program and included a version with debugging enabled. It should give you more info about what exactly the error is.