Skip to content

Native StreamDeck support — live radio status on LCD keys #647

Description

@ten9876

What

Native Elgato StreamDeck integration via HIDAPI. Button presses mapped to radio actions, rotary dials mapped to tuning/gain controls, and live radio status rendered on LCD key images.

Supported Devices

Device PID Keys Dials Touchscreen
Stream Deck + XL 0x00c6 36 (9×4) 6 1200×100
Stream Deck + 0x0084 8 (4×2) 4 800×100
Stream Deck XL 0x006c 32 (8×4) 0 None
Stream Deck MK2 0x0080 15 (5×3) 0 None
Stream Deck Mini 0x0063 6 (3×2) 0 None

Features

Key images (live radio status)

  • Frequency display, mode indicator, S-meter readout
  • TX/RX state (red/green), band buttons
  • SWR/power gauges, VFO A/B indicators
  • Dark theme matching AetherSDR's UI

Button mapping

  • 36+ keys mappable to radio actions (MOX, TUNE, band change, mode switch, etc.)
  • Same action dispatch as FlexControl/MIDI (50+ parameters)
  • Configurable profiles

Dial mapping

  • VFO tuning, AF gain, RF power, squelch, RIT/XIT
  • Same coalesce pattern as FlexControl (20ms batching)

Touchscreen strip

  • Mini S-meter bar, power/SWR display, or spectrum preview

Architecture

  • StreamDeckManager on ExtControllers thread (same as HidEncoderManager)
  • Uses HIDAPI (already integrated via HAVE_HIDAPI)
  • Key image rendering via QPainter → JPEG → HID write
  • State change signals from RadioModel/SliceModel trigger image updates
  • Configuration UI in Radio Setup → Serial tab

Prior Art

Reference

  • Protocol: same HID reports as python-elgato-streamdeck library
  • Key images: 112×112 JPEG, 90° rotation for portrait LCD
  • Touchscreen: 1200×100 JPEG with coordinate swap
  • Brightness: feature report [0x03, 0x08, percent]

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementImprovement to existing featureexternal devicesFlexControl, MIDI, serial port, USB peripherals

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions