Skip to content
rotordeckPublic

About

Live stick and telemetry overlays for OBS, from an EdgeTX radio

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Sticklink

Live stick and telemetry overlays for OBS, straight from your radio. Sticklink reads your sticks, switches and link telemetry from an EdgeTX radio (tested on a RadioMaster Pocket) over USB, serves them as an OBS Browser Source with the same look as stickcam's after-the-fact overlays, and records every session so you can check and reuse the data later.

Neon style Arcade style Hacker style

Telemetry HUD, neon Telemetry HUD, hacker

Join the community: join the Rotordeck closed Android beta and join the Discord for help, questions and updates.

What you get

  • Effects overlay (/fx): eight styles (Clean, Minimal, Neon, Arcade, Synthwave, Inferno, Unicorn, Hacker) with glowing trails, sparks, shockwaves and live throttle timers. Trails are smooth curves with no added delay.
  • Telemetry HUD (/hud): Link, Battery, GPS and Status blocks as badges, in the same eight styles. GPS shows a live map with your track, home marker and distance. Each block is also its own page (/hud/link, /hud/battery, /hud/gps), so you can put them in OBS as separate sources. It shows what your radio really receives (see limits).
  • Receiver setup page (/setup): a live 3D quad, stick bars and a 16-channel monitor, like Betaflight Configurator's receiver tab. Press Learn and move a stick or switch to assign roll, pitch, yaw, throttle, ARM and Crash Flip, so a swapped or reversed stick is a ten-second fix.
  • Double-click to configure: style, effect strength, size and video delay, saved on the server so an OBS source updates by itself. The panel also shows a permanent link for the current look: use it as a source's URL to pin that source to its own configuration.
  • Scene switching (/modes): a Betaflight-style Modes page for your OBS scenes: give each scene ranges on a switch channel, sort them so the upper scene wins, and OBS follows your switches (via OBS's built-in WebSocket). Off until you turn it on, and it never acts on stale radio data.
  • Themes: add your own looks to the overlay and HUD with a small .json file (colours, frame, glow, trails, popup texts, fonts), or install one from a friend (sticklink theme install). Data only, nothing runs. See the theme guide.
  • Recordings: one JSONL file per session, a check-log quality report (rate, gaps, lost records, channel ranges) and replay to play a session back through the overlay.
  • REST API + Swagger UI (/docs, works offline) and a WebSocket stream for your own tools.
  • No dependencies to install: downloads are single self-contained programs for Linux, Windows and macOS (they carry their own Python). A pip-installable Python package is available too.

Quick start

  1. Download the build for your system from the Releases page, and unpack it. 1b. Prefer a window? Start the program with no arguments (double-click it): pick your radio (or Demo), press Start, and use the buttons to open the pages. Same as sticklink gui.
  2. Try it without a radio:
    ./sticklink run --demo          # Windows: sticklink.exe run --demo
    Open http://127.0.0.1:47613/fx. You should see two gimbals moving by themselves.
  3. Connect your radio: install the script and set USB-VCP to LUA (radio setup), then
    ./sticklink list-ports
    ./sticklink run --port /dev/ttyACM0 --input-label sticks     # Windows: --port COM5
  4. Assign your sticks and switches at http://127.0.0.1:47613/setup (press Learn, move the control).
  5. Add it to OBS as a Browser Source with the URL http://127.0.0.1:47613/fx, size 576x450, 60 fps (OBS setup). Double-click the page (in OBS: right-click, Interact) to change the look.

Prefer Python? Sticklink is on PyPI: uvx sticklink run --demo (no install, needs uv) or pip install sticklink. Or pip install sticklink-<version>-py3-none-any.whl (from the release page), or from a checkout pip install .; then run sticklink ....

Pages and commands

Address / command What it does
/fx Effects overlay for OBS (double-click for settings)
/hud, /hud/link, /hud/battery, /hud/gps, /hud/race Telemetry HUD (combined, or one block per page)
/setup Receiver screen: 3D quad, channel monitor, learn-by-moving assignment
/modes Pick which OBS scene a switch selects (ranges per scene, sorted by priority)
/overlay The plain panel with two sticks, ARM/flip lamps and telemetry
/docs Swagger UI for the REST API (spec at /api/v1/openapi.json)
sticklink run --port P | --demo Serve the overlays from a radio or from synthetic data
sticklink replay FILE Serve a recorded session as if it were live
sticklink check-log FILE Quality report for a recording
sticklink radio-script [DIR] Copy the EdgeTX Lua script DDSTK.lua (e.g. onto the radio's SD card)
sticklink list-ports List serial ports

More in docs/cli.md.

Documentation

Getting started Install, run, first checks
Radio setup EdgeTX script, USB-VCP, per-OS port names
OBS setup Browser source, Linux/Wayland notes
Overlay guide /fx, /setup, the classic overlay, settings and URL options
Scene switching /modes: switch OBS scenes from radio switches
Themes Make and install your own overlay looks
CLI reference All commands and options
REST API Endpoints, examples, security model
Protocol and log format DDLOG v1, the JSONL recording format
Architecture Modules and data flow
Troubleshooting Silent port, crashes, wrong sticks, OBS
Development Tests, rebuilding the overlay, releases
Validation log What was tested on real hardware, and what was not

Status and honest limits

  • Verified on real hardware: a RadioMaster Pocket (EdgeTX 2.10) with ExpressLRS, on Linux, with OBS 32. The radio reports sticks at about 20 Hz (EdgeTX runs function scripts every 50 ms); the overlay smooths between readings.
  • The Windows and macOS builds are produced and smoke-tested by CI (unit tests, integration tests and a run of the frozen program), but they have not been tried with a radio on those systems yet.
  • The HUD shows only telemetry your radio actually receives. Betaflight does not send motor outputs, RPM, PID or gyro over the radio link (those live in the blackbox on the quad), so there is no live motor screen. So far only link quality (RQly) has been seen live on a real radio; the other link sensors, battery, GPS and attitude were tested with simulated data until the radio script is updated and the quad sends them.
  • The GPS map downloads tiles from the internet (OpenStreetMap by default); see overlay guide.
  • The effects overlay shows what sticks and switches can drive: trails, sparks, snaps, punch-outs, full-throttle and hang-time timers, arm/disarm. Flips, rolls and crash detection in stickcam need gyro and accelerometer data that the radio does not have.
  • Sticklink only reads from the radio. It never writes to it and never changes ExpressLRS or model settings.
  • Unsigned downloads: macOS Gatekeeper and Windows SmartScreen will warn once (getting started).

Frequently asked questions

How do I show my stick inputs in OBS?

Run Sticklink with your EdgeTX radio plugged in over USB, then add http://127.0.0.1:47613/fx to OBS as a Browser Source (576x450, 60 fps). See Quick start and the OBS setup guide.

Can I get a live stick overlay without a camera on the radio?

Yes. Sticklink reads the sticks straight from the radio, so there is no stick cam to mount or light. Try it first without a radio: sticklink run --demo.

Does it work with ExpressLRS, TBS Crossfire or my RadioMaster?

Sticklink reads the radio over USB, not the RF link, so the link type shouldn't matter and any EdgeTX radio with USB should work. Verified so far on a RadioMaster Pocket (EdgeTX 2.10) with ExpressLRS on Linux; see Status and honest limits.

Can it show live telemetry such as battery voltage, link quality and GPS?

Yes, the Telemetry HUD (/hud) shows the telemetry your radio receives. Motor outputs, RPM and gyro are not sent over the radio link, so they are not available live.

More free FPV tools from Rotordeck

  • Stickbeats: free EdgeTX sound themes and voice packs, with a mixer to record your own
  • OSD Fonts: 278 retro fonts and a font editor for the Betaflight analog OSD
  • Betasplash: make a Betaflight OSD boot logo with your callsign
  • bf: configure Betaflight from the command line, for humans and AI agents
  • Rotordeck skills: Agent Skills that teach Claude Code and other agents to set up Betaflight

All of them in one place: the Rotordeck Toy Box.

Community

Licence

Sticklink is free software under the GNU Affero General Public License v3.0 or later (AGPL-3.0-or-later); see LICENSE. If you modify it and let others use it, including over a network, you must offer them your source under the same licence. Third-party components are listed in THIRD_PARTY_NOTICES.md.

About

Live stick and telemetry overlays for OBS, from an EdgeTX radio

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages