Skip to content

Add Stream Deck + XL support (PID 0x00c6)#11

Open
ten9876 wants to merge 1 commit intoStreamController:masterfrom
ten9876:add-plus-xl-support
Open

Add Stream Deck + XL support (PID 0x00c6)#11
ten9876 wants to merge 1 commit intoStreamController:masterfrom
ten9876:add-plus-xl-support

Conversation

@ten9876
Copy link
Copy Markdown

@ten9876 ten9876 commented Apr 4, 2026

Summary

Adds support for the Elgato Stream Deck + XL (USB PID 0x00c6).

Hardware Specs

  • 36 keys (9×4) at 112×112 px
  • 6 rotary encoders/dials
  • 1200×100 touchscreen strip
  • USB VID: 0x0fd9, PID: 0x00c6

Changes

  • New file: StreamDeckPlusXL.py — full device driver
  • ProductIDs.py: Added USB_PID_STREAMDECK_PLUS_XL = 0x00c6
  • DeviceManager.py: Added enumeration entry for Plus XL

Key Implementation Details

  • LCD is internally portrait (800×1280) — key images use KEY_ROTATION = 90
  • Touchscreen images require manual 90° CCW rotation with expand=True before sending, plus coordinate swap (x↔y, w↔h) in the 0x0c header
  • Serial number at HID report 0x06 offset 2 (Plus uses 5)
  • Firmware at HID report 0x05 offset 6 (Plus uses 5)
  • Input report length: 64 bytes

Testing

Tested on physical hardware:

  • Device: Elgato Stream Deck + XL
  • Firmware: 1.0.2.2
  • OS: Linux (Arch/CachyOS)
  • Verified: Enumeration, brightness control, key image rendering, serial/firmware read

Based on work by Moises Lopez (abcminiuser/python-elgato-streamdeck#170), adapted for StreamController's fork.

- New StreamDeckPlusXL device class: 36 keys (9x4), 6 dials, 1200x100 touchscreen
- Key resolution 112x112 JPEG with 90° rotation (portrait LCD)
- Touchscreen image rotation handling for internal portrait frame
- Serial number at report 0x06 offset 2, firmware at 0x05 offset 6
- Registered PID 0x00c6 in ProductIDs and DeviceManager

Based on work by Moises Lopez (PR abcminiuser#170),
adapted for StreamController's fork.

Tested on hardware: Elgato Stream Deck + XL, firmware 1.0.2.2
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant