Skip to content

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Coyote 3.0 Studio

Web-based PC controller for the DG-Lab Coyote 3.0 e-stim, direct over Bluetooth LE — no phone bridge. Dual-channel frequency explorer, sweep, random generator, stage + drawable waveform editor with live preview, playlist runner, interactive-content (funscript) player, plus balance and soft-cap controls. Python backend + plain HTML/CSS/JS UI.

A web-based PC controller and creation suite for the DG-Lab Coyote 3.0 e-stim device. Connects directly over Bluetooth LE — no phone, no WebSocket bridge required. Dual-channel control with a frequency explorer, sweep, random generator, drawable waveform editor, playlist runner, and an interactive-content (funscript) player. Python backend + plain HTML/CSS/JS browser UI — no Node.js or build step needed.

The in-app title remains "Coyote 3.0 Console" — the project name (Studio) reflects the creation suite as a whole; "Console" is the runtime UI title.

Features

  • Dual-channel Explorer — independent frequency and intensity per channel, with a +4-per-input rate-limiter on intensity slips.
  • Frequency Sweep — walk a frequency range over a fixed duration, mark interesting moments mid-sweep.
  • Random Generator — per-channel random freq/intensity within configurable bounds at a chosen cadence.
  • Waveform Editor — stage-based editor + drawable curve canvas with live SVG preview, click-to-seek progress line, save/load library.
  • Playlist Runner — chain saved waveforms with per-item durations and channel overrides for a full-session experience.
  • Interactive Player — load a video file and matching .funscript; stroke direction drives Channel A vs B, stroke velocity drives intensity.
  • Favorites Library — save discovered frequency/intensity points with optional notes; replay or delete from a grid.
  • Safety controls — persistent soft cap (BF command), balance parameters (frequency / intensity balance), intensity rate-limiter, and an always-visible STOP button in the nav bar. Esc stops both channels instantly.

Hardware required

  • DG-Lab Coyote 3.0 (Pulse Host model 47L121000) with appropriate electrodes.
  • A Windows PC with Bluetooth LE. (macOS/Linux should work too — bleak is cross-platform — but only tested on Windows.)
  • Python 3.9 or newer.

Quickstart (Windows)

  1. Clone or download this repo.

  2. Install Python 3.9+ from python.org. Tick "Add Python to PATH" during install.

  3. Double-click start.bat in the repo root.

    First run creates prototype/.venv/, installs dependencies (bleak, fastapi, uvicorn, pydantic), starts the server, and opens your browser to http://127.0.0.1:8000.

    Subsequent runs just start the server and open the browser.

  4. In the Setup tab of the web UI, paste your Coyote's MAC address and click Connect. (Get the MAC from Windows Settings > Bluetooth, or run prototype\.venv\Scripts\python.exe prototype\discover.py to list nearby BLE devices.)

  5. Set a conservative Soft Cap in the nav bar (start at 30/200, raise gradually after you understand the device).

  6. Start exploring on the Explorer tab. Use the device wheel for channel intensity (voltage).

See START_HERE.txt for more detailed setup and troubleshooting.

Architecture

Browser (HTML + vanilla JS)
        ↕  HTTP + WebSocket
FastAPI server (server.py)
        ↕
Streamer (streamer.py)        ← owns BLE connection + 100ms B0 loop
        ↕  Bluetooth LE
Coyote 3.0
  • The FastAPI server holds the BLE connection across page reloads. A WebSocket pushes state changes and B1 echoes to the browser in real time.
  • The streaming loop sends a B0 command every 100 ms (the protocol's required cadence). State changes (slider drags, waveform plays, playlists, random mode) just mutate the per-channel prog_a / prog_b programs; the next B0 tick picks up the change automatically.
  • All persistent user data — favorites, saved waveforms, saved playlists — lives in prototype/library/ as plain JSON files.

Protocol reference

This project implements the V3 Bluetooth protocol for the Coyote 3.0 Pulse Host, as published by DG-Lab:

The included Coyote V3 Protocol Summary.md is an English summary of the V3 protocol I wrote while building this — meant as a quick reference for anyone else writing a Coyote 3.0 client.

Credits

  • DG-Lab for designing the Coyote 3.0 hardware and publishing the Bluetooth protocol as open source, making third-party clients like this possible.
  • Built on bleak (cross-platform Python BLE), FastAPI, uvicorn, and pydantic.

License

MIT. DG-Lab's protocol documentation is published as open source for non-commercial use; this project follows that intent. Do not redistribute this as part of a commercial product without contacting DG-Lab.

Safety

Electrical stimulation carries real risks if used incorrectly. By using this software you accept responsibility for understanding those risks and operating the device safely.

  • Do not place electrodes across your heart, head, neck, eyes, or anywhere current could cross the chest cavity.
  • Do not use if you have a pacemaker, implanted defibrillator, or any other implanted electronic medical device.
  • Do not use if you have a heart condition, epilepsy, are pregnant, or are under the influence of substances that impair judgment.
  • Start at very low intensity. Set the soft cap (in the nav bar) to single digits before connecting internal electrodes (urethral, anal); start at ~30/200 for surface electrodes.
  • Test off-body first. Verify the waveform feels the way you expect on a small patch of skin before applying to sensitive areas.
  • Esc stops both channels instantly. The nav-bar STOP button and the Stop buttons in the Explorer panel do the same thing. Keep a hand near the keyboard.
  • This is not medical advice or a medical device. The author makes no claims about therapeutic or clinical use.
  • Use of saline-filled penis pumps, internal electrodes reaching the prostate, or other unconventional setups carries elevated risk — including risk of permanent damage to autonomic nerves controlling continence and sexual function. Understand the risk before attempting.

If anything feels wrong — sharp pain, sudden urge to urinate, muscle spasms outside your expected pattern — stop immediately and reassess.


Built by a hobbyist for personal use, then polished enough to share. Not affiliated with DG-Lab.

About

Web-based PC controller for the DG-Lab Coyote 3.0 e-stim, direct over Bluetooth LE — no phone bridge. Dual-channel frequency explorer, sweep, random generator, stage + drawable waveform editor with live preview, playlist runner, interactive-content (funscript) player, plus balance and soft-cap controls. Python backend + plain HTML/CSS/JS UI.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages