Skip to content

StreamDeck

Jeremy Fielder edited this page Apr 8, 2026 · 6 revisions

Stream Deck Integration

AetherSDR gives you one-touch control of your FlexRadio from an Elgato Stream Deck. Change bands, switch modes, toggle DSP, key the transmitter — all from dedicated hardware buttons without touching your mouse.

What You Need

  1. An Elgato Stream Deck — any model works (see Which Model? below)
  2. AetherSDR v0.8.6 or laterdownload here
  3. A Stream Deck app — either the official Elgato app (macOS/Windows) or StreamController (Linux)

AetherSDR provides plugins for both apps, so you're covered on every platform.

Which Model Should I Buy?

If you're buying a Stream Deck specifically for ham radio, here's what to consider:

Model Keys Best For Price Range
Stream Deck MK2 15 (5x3) Most operators — enough keys for bands, modes, and TX controls ~$150
Stream Deck XL 32 (8x4) Full layout — bands, modes, DSP, TX, and slice controls all visible at once ~$250
Stream Deck + 8 keys + 4 dials Contesters — physical dials for VFO tuning, volume, RF power ~$200
Stream Deck Mini 6 (3x2) Budget option — PTT, band up/down, and a few essential toggles ~$80
Stream Deck Pedal 3 foot switches Hands-free PTT — press with your foot while operating SSB or adjusting controls ~$90

Our recommendation: The Stream Deck MK2 (15 keys) is the sweet spot for most operators. If you want everything on screen at once without pages, go for the XL.

Quick Start

Step 1: Enable TCI in AetherSDR

The Stream Deck plugin talks to AetherSDR through its built-in TCI server. You need to turn this on once:

  1. Open AetherSDR
  2. Go to Settings menu
  3. Check Autostart TCI with AetherSDR

That's it — TCI starts automatically every time you launch AetherSDR from now on.

Step 2: Set Up Your Stream Deck App

Choose the guide for your operating system:


macOS / Windows (Official Elgato App)

Install the Elgato App

If you haven't already, download and install the Elgato Stream Deck app for your platform. Plug in your Stream Deck and make sure the app detects it.

Install the AetherSDR Plugin

  1. Go to the AetherSDR releases page
  2. Download com.aethersdr.radio.streamDeckPlugin
  3. Double-click the downloaded file — the Elgato app installs it automatically
  4. The "AetherSDR" category now appears in the Elgato app's action list

That's it — no command line, no build tools, just download and double-click.

Add Actions to Your Deck

  1. Open the Elgato Stream Deck app
  2. In the right sidebar, find the AetherSDR category
  3. Drag actions onto your Stream Deck buttons:
    • Drag "Band 20m" onto a key to create a one-touch 20m button
    • Drag "PTT" onto a key for push-to-talk
    • Drag "MOX Toggle" for a transmit toggle
  4. The buttons work immediately — no restart needed

Linux (StreamController)

Install StreamController

StreamController is a free, open-source Stream Deck app for Linux.

Flatpak (recommended):

flatpak install com.core447.StreamController

Or follow the full installation guide.

Set Up USB Permissions

Linux needs a udev rule so your user can access the Stream Deck without root:

echo 'SUBSYSTEM=="usb", ATTRS{idVendor}=="0fd9", TAG+="uaccess"' | \
  sudo tee /etc/udev/rules.d/70-streamdeck.rules
sudo udevadm control --reload-rules && sudo udevadm trigger

Unplug and replug your Stream Deck after running this.

Install the AetherSDR Plugin

  1. Go to the AetherSDR releases page
  2. Download streamcontroller-aethersdr.zip
  3. Extract and copy to StreamController's plugin directory:
unzip streamcontroller-aethersdr.zip
cp -r streamcontroller-aethersdr \
  ~/.var/app/com.core447.StreamController/data/plugins/com_aethersdr_radio

Restart StreamController. The "AetherSDR" plugin should appear in the plugin list.

Add Actions to Your Deck

  1. Open StreamController
  2. Click a button on the virtual Stream Deck display
  3. Select an AetherSDR action from the list (e.g. "Band 20m", "PTT", "MOX Toggle")
  4. The button is now live

Available Actions (43 total)

Every action works on all platforms and all Stream Deck models.

Transmit Control

Action What It Does
PTT Hold to transmit, release to return to receive. Just like a mic button.
MOX Toggle Press to start transmitting, press again to stop. Stays on until you press it again.
TUNE Toggle Sends a tune carrier for antenna tuning. Press to start, press to stop.
RF Power Cycles through power levels: 5W → 10W → 25W → 50W → 75W → 100W.
Tune Power Cycles through tune power levels: 5W → 10W → 15W → 25W → 50W.

Band Selection

Action What It Does
Band 160m through Band 6m Instantly jumps to that band's calling frequency. One press = one band change.
Band Up Steps to the next higher band (e.g. 40m → 30m → 20m).
Band Down Steps to the next lower band (e.g. 20m → 30m → 40m).
Tune Up Nudges the frequency up by one step (default 100 Hz).
Tune Down Nudges the frequency down by one step.

Mode Selection

Action What It Does
Mode USB Switch to Upper Sideband
Mode LSB Switch to Lower Sideband
Mode CW Switch to CW (Morse code)
Mode AM Switch to AM
Mode FM Switch to FM
Mode DIGU Switch to Digital Upper (FT8, WSPR, JS8Call, etc.)
Mode DIGL Switch to Digital Lower
Mode FT8 Switch to FT8 mode

Audio

Action What It Does
Mute Toggle Mute/unmute the radio audio.
Volume Up Increase audio volume by 5%.
Volume Down Decrease audio volume by 5%.

DSP (Digital Signal Processing)

These toggle the radio's built-in signal processing on and off:

Action What It Does
NB Toggle Noise Blanker — reduces impulse noise (power line interference, ignition noise)
NR Toggle Noise Reduction — reduces background noise on voice signals
ANF Toggle Auto Notch Filter — removes steady-tone interference (carriers, tuning signals)
APF Toggle Audio Peak Filter — narrows the audio passband for CW reception
SQL Toggle Squelch — silences the audio when no signal is present (useful on FM)

Slice Controls

Action What It Does
Split Toggle Enables split operation (transmit on a different frequency than receive)
Lock Toggle Locks the VFO so you can't accidentally change frequency
RIT Toggle Receiver Incremental Tuning — offset the receive frequency without moving TX
XIT Toggle Transmitter Incremental Tuning — offset the transmit frequency without moving RX

DVK (Digital Voice Keyer)

Action What It Does
Play Play a pre-recorded voice message (for CQ calls in contests)
Record Start/stop recording a voice message

Suggested Layouts

Stream Deck XL (32 keys) — Full Station Control

Row 1: [160m] [80m] [60m] [40m] [30m] [20m] [17m] [15m]
Row 2: [12m]  [10m] [6m]  [USB] [LSB] [CW]  [AM]  [FT8]
Row 3: [PTT]  [MOX] [TUNE][MUTE][NB]  [NR]  [ANF] [SQL]
Row 4: [SPLIT][LOCK][RIT] [XIT] [PLAY][REC] [PWR] [VOL+]

Stream Deck MK2 (15 keys) — Essentials

Row 1: [40m]  [20m]  [15m]  [10m]  [BandUp]
Row 2: [USB]  [LSB]  [CW]   [FT8]  [BandDn]
Row 3: [PTT]  [MOX]  [TUNE] [NR]   [MUTE]

Stream Deck Mini (6 keys) — Minimal

Row 1: [BandUp] [PTT]  [MOX]
Row 2: [BandDn] [TUNE] [MUTE]

Stream Deck Pedal (3 keys) — Foot Control

[Band Down] [PTT] [Band Up]

Use the center pedal for PTT — press with your foot to transmit while your hands stay on the keyboard or tuning knob.

How It Works

Your Stream Deck
       │ USB
       ▼
Stream Deck App (Elgato or StreamController)
       │ Plugin API
       ▼
AetherSDR Plugin
       │ WebSocket (port 40001)
       ▼
AetherSDR TCI Server
       │ TCP (port 4992)
       ▼
Your FlexRadio

The Stream Deck app handles the USB communication with your hardware. The AetherSDR plugin translates button presses into TCI commands sent over a WebSocket connection to AetherSDR, which forwards them to your radio. Radio state changes flow back the same path to update button labels.

Troubleshooting

Nothing happens when I press a button

  1. Is AetherSDR running and connected to your radio? The plugin can't control the radio if AetherSDR isn't connected.

  2. Is TCI enabled? Go to AetherSDR → Settings → check Autostart TCI with AetherSDR. Restart AetherSDR after enabling it.

  3. Is the Stream Deck app running? The Elgato app (or StreamController on Linux) must be running for the buttons to work.

The Stream Deck app doesn't see my device (Linux)

Make sure you installed the udev rule:

echo 'SUBSYSTEM=="usb", ATTRS{idVendor}=="0fd9", TAG+="uaccess"' | \
  sudo tee /etc/udev/rules.d/70-streamdeck.rules
sudo udevadm control --reload-rules && sudo udevadm trigger

Then unplug and replug the Stream Deck.

The plugin doesn't appear in the Elgato app

  • Make sure you ran npm run package and double-clicked the .streamDeckPlugin file
  • Check that Node.js 20+ is installed: node --version
  • Try restarting the Elgato Stream Deck app

The plugin doesn't appear in StreamController

  • Verify the plugin directory name is exactly com_aethersdr_radio
  • Check that it's in the correct path: ~/.var/app/com.core447.StreamController/data/plugins/
  • Restart StreamController

Buttons show "PTT" but nothing happens when pressed

The plugin is loaded but can't connect to AetherSDR's TCI server. Check:

  • AetherSDR is running
  • TCI autostart is enabled (Settings menu)
  • No firewall is blocking port 40001

I upgraded from AetherSDR v0.8.5 or earlier

The old built-in Stream Deck support was removed in v0.8.6. You now need to:

  1. Install the Elgato app or StreamController (if you haven't already)
  2. Install the AetherSDR plugin as described above
  3. The old Settings → StreamDeck... menu item no longer exists

The new plugin approach is more flexible — you can customize which actions go on which buttons, use multi-page layouts, and mix AetherSDR controls with other plugins.

Extending the Plugin

Both plugins are open source in the AetherSDR repository:

  • Elgato plugin: plugins/elgato-aethersdr/ (TypeScript/Node.js)
  • StreamController plugin: plugins/streamcontroller-aethersdr/ (Python)

To add a new action, create a new action class that sends the appropriate TCI command. Pull requests welcome!

Clone this wiki locally