Skip to main content

Stream Deck +

Introduction

The Elgato Stream Deck + is a USB 2.0-compliant input device combining a 2×4 keypad, a touchscreen window, and 4 rotary encoders. It communicates with the host via the USB HID protocol, enabling key events, encoder events, touchscreen interaction, and image upload.

For all concepts, data types, report structures, and shared commands refer to the General Reference page. This page documents only what is specific to the Stream Deck +.


Device Overview

Summary

NameModelVIDPIDCapabilities
Stream Deck +20GBD99010x0FD90x0084Stream Deck + Layout

Capabilities & Physical Characteristics

Stream Deck + Layout

EntityProperty(-ies)
LCD Image800 × 480 px, high DPI
Buttons matrix4 × 2
Button Image120 × 120 px
Window✓ (touch capable)
Window Image800 × 100 px
Encoders4
Keypad Buttons Index Layout
Image showing the Stream Deck + keypad buttons index layout.
Unit Pixel Layout
Image showing the Stream Deck + unit pixel layout.

Command Descriptions

Input Reports

The Report ID of input reports is 0x01.


Buttons Press State Change

An event is generated on every change of button state.

OffsetTypeNote
+ 0x00Input ReportReport ID: 0x01, Command: 0x00, Payload data length: number of buttons
+ 0x04UINT8[]Each byte has value 0x00 when depressed, or 0x01 when pressed

Touch Screen Activity

Touch screen activity events are reported for interactions with the Stream Deck + window. The event is reported after the interaction completes — touch and release are not reported as separate events.

TAP

A short tap on the touchscreen window.

OffsetTypeNote
+ 0x00Input ReportReport ID: 0x01, Command: 0x02, Payload data length: 0x0A
+ 0x04UINT8Contents type: 0x01 (TAP)
+ 0x05UINT8Number of fingers: N/A
+ 0x06UINT16Touch X-coordinate
+ 0x08UINT16Touch Y-coordinate
PRESS

A long tap (hold) on the touchscreen window.

OffsetTypeNote
+ 0x00Input ReportReport ID: 0x01, Command: 0x02, Payload data length: 0x0A
+ 0x04UINT8Contents type: 0x02 (PRESS)
+ 0x05UINT8Number of fingers: N/A
+ 0x06UINT16Touch X-coordinate
+ 0x08UINT16Touch Y-coordinate
FLICK

A flick gesture on the touchscreen window.

OffsetTypeNote
+ 0x00Input ReportReport ID: 0x01, Command: 0x02, Payload data length: 0x0E
+ 0x04UINT8Contents type: 0x03 (FLICK)
+ 0x05UINT8Reserved: N/A
+ 0x06UINT16Start touch X-coordinate
+ 0x08UINT16Start touch Y-coordinate
+ 0x0AUINT16End touch X-coordinate
+ 0x0CUINT16End touch Y-coordinate

Encoders State Change

An event is generated on every change of encoder state.

BTN

One or more encoder buttons changed press state.

OffsetTypeNote
+ 0x00Input ReportReport ID: 0x01, Command: 0x03, Payload data length: number of encoders + 1
+ 0x04UINT8Contents type: 0x00 (BTN)
+ 0x05UINT8[]Each byte has value 0x00 when depressed, or 0x01 when pressed
ROTATE

One or more encoders were rotated.

OffsetTypeNote
+ 0x00Input ReportReport ID: 0x01, Command: 0x03, Payload data length: number of encoders + 1
+ 0x04UINT8Contents type: 0x01 (ROTATE)
+ 0x05INT8[]Each byte has a positive value for clockwise ticks, or a negative value for counter-clockwise ticks

Output Reports

The Report ID of output reports is 0x02. When the payload does not fit into a single report, it must be split into multiple chunks.


Update Button Image

Uploads an image for a specific button.

OffsetTypeNote
+ 0x00Output ReportReport ID: 0x02, Command: 0x07
+ 0x02UINT8Button Index
+ 0x03UINT8Transfer is Done flag (0x01 = last chunk)
+ 0x04UINT16Chunk Contents Size
+ 0x06UINT16Chunk Index (zero-based)
+ 0x08UINT8[]Chunk Data

Update Full Screen Image

Uploads an image for the complete LCD.

OffsetTypeNote
+ 0x00Output ReportReport ID: 0x02, Command: 0x08
+ 0x02UINT8Reserved
+ 0x03UINT8Transfer is Done flag (0x01 = last chunk)
+ 0x04UINT16Chunk Contents Size
+ 0x06UINT16Chunk Index (zero-based)
+ 0x08UINT8[]Chunk Data

Update Window Image

Uploads a full image for the touchscreen window strip.

OffsetTypeNote
+ 0x00Output ReportReport ID: 0x02, Command: 0x0B
+ 0x02UINT8Reserved
+ 0x03UINT8Transfer is Done flag (0x01 = last chunk)
+ 0x04UINT16Chunk Contents Size
+ 0x06UINT16Chunk Index (zero-based)
+ 0x08UINT8[]Chunk Data

Update Partial Window Image

Uploads an image into a rectangular region of the touchscreen window.

OffsetTypeNote
+ 0x00Output ReportReport ID: 0x02, Command: 0x0C
+ 0x02UINT16X-coordinate
+ 0x04UINT16Y-coordinate
+ 0x06UINT16Image width
+ 0x08UINT16Image height
+ 0x0AUINT8Transfer is Done flag (0x01 = last chunk)
+ 0x0BUINT16Chunk Index (zero-based)
+ 0x0DUINT16Chunk Contents Size
+ 0x0FUINT8Reserved
+ 0x10UINT8[]Chunk Data
  • Use logical coordinates, without accounting for image rotation.

Device Setup & Communication

Uploading Images

Button Image

  1. Prepare a 120 × 120 px image.
  2. No rotation required for Stream Deck + (20GBD9901).
  3. Export in JPEG format.
  4. Send using the Update Button Image command sequence.

Full LCD Image

  1. Prepare an 800 × 480 px image.
  2. No rotation required.
  3. Export in JPEG format.
  4. Send using the Update Full Screen Image command sequence.

Full Window Image

  1. Prepare an 800 × 100 px image.
  2. No rotation required.
  3. Export in JPEG format.
  4. Send using the Update Window Image command sequence.

Partial Window Image

  1. Prepare the image at the desired logical dimensions.
  2. No rotation required.
  3. Export in JPEG format.
  4. Send using the Update Partial Window Image command sequence.

INDEX

Input Reports Reference

Report IDCommandDescription
0x010x00Buttons press state change
0x010x02Touch screen activity
0x010x03Encoders state change

Output Reports Reference

Report IDCommandDescription
0x020x07Update Button Image
0x020x08Update Full Screen Image
0x020x0BUpdate Window Image
0x020x0CUpdate Partial Window Image

Feature Reports Reference

Setter Feature Reports

Report IDCommandDescription
0x030x02Show Logo
0x030x05Fill LCD with Color
0x030x06Fill Button with Color
0x030x08Set Backlight Brightness
0x030x0DSet Sleep Mode Duration

Getter Feature Reports

Report IDCommandDescription
0x04Get Firmware Version (LD)
0x05Get Firmware Version (AP2)
0x06Get Unit Serial Number
0x07Get Firmware Version (AP1)
0x08Get Unit Information
0x0AGet Sleep Mode Duration