Introduction
The Elgato Stream Deck Neo is a USB 2.0-compliant input device combining a 4×2 keypad, an informative LCD window, and two capacitive touch sensors (mapped as extra buttons). It communicates with the host via the USB HID protocol.
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 Neo.
Device Overview
Summary
| Name | Model | VID | PID | Capabilities |
|---|
| Stream Deck Neo | 20GBJ9901 | 0x0FD9 | 0x009A | Neo Layout |
Capabilities & Physical Characteristics
Neo Layout
| Entity | Property(-ies) |
|---|
| LCD Image | 480 × 320 px, high DPI |
| Buttons matrix | 4 × 2 |
| Button Image | 96 × 96 px |
| Window | no touchscreen capabilities |
| Window Image | 248 × 58 px |
| Sensors | 2 (mapped as buttons) |
| Sensor Image | 96 × 16 px |
Unit Pixel Layout
Command Descriptions
The Report ID of input reports is 0x01.
An event is generated on every change of key or sensor state. On Stream Deck Neo, the two capacitive touch sensors are mapped as extra buttons appended at the end of the buttons array.
| Offset | Type | Note |
|---|
| + 0x00 | Input Report | Report ID: 0x01, Command: 0x00, Payload data length: number of buttons + number of mapped sensors |
| + 0x04 | UINT8[] | Each byte has value 0x00 when depressed, or 0x01 when pressed |
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.
Uploads an image for a specific button.
| Offset | Type | Note |
|---|
| + 0x00 | Output Report | Report ID: 0x02, Command: 0x07 |
| + 0x02 | UINT8 | Button Index |
| + 0x03 | UINT8 | Transfer is Done flag (0x01 = last chunk) |
| + 0x04 | UINT16 | Chunk Contents Size |
| + 0x06 | UINT16 | Chunk Index (zero-based) |
| + 0x08 | UINT8[] | Chunk Data |
Update Full Screen Image
Uploads an image for the complete LCD.
| Offset | Type | Note |
|---|
| + 0x00 | Output Report | Report ID: 0x02, Command: 0x08 |
| + 0x02 | UINT8 | Reserved |
| + 0x03 | UINT8 | Transfer is Done flag (0x01 = last chunk) |
| + 0x04 | UINT16 | Chunk Contents Size |
| + 0x06 | UINT16 | Chunk Index (zero-based) |
| + 0x08 | UINT8[] | Chunk Data |
Update Window Image
Uploads a full image for the window strip.
| Offset | Type | Note |
|---|
| + 0x00 | Output Report | Report ID: 0x02, Command: 0x0B |
| + 0x02 | UINT8 | Reserved |
| + 0x03 | UINT8 | Transfer is Done flag (0x01 = last chunk) |
| + 0x04 | UINT16 | Chunk Contents Size |
| + 0x06 | UINT16 | Chunk Index (zero-based) |
| + 0x08 | UINT8[] | Chunk Data |
Update Partial Window Image
Uploads an image into a rectangular region of the window.
| Offset | Type | Note |
|---|
| + 0x00 | Output Report | Report ID: 0x02, Command: 0x0C |
| + 0x02 | UINT16 | X-coordinate |
| + 0x04 | UINT16 | Y-coordinate |
| + 0x06 | UINT16 | Image width |
| + 0x08 | UINT16 | Image height |
| + 0x0A | UINT8 | Transfer is Done flag (0x01 = last chunk) |
| + 0x0B | UINT16 | Chunk Index (zero-based) |
| + 0x0D | UINT16 | Chunk Contents Size |
| + 0x0F | UINT8 | Reserved |
| + 0x10 | UINT8[] | Chunk Data |
- Use logical coordinates, without accounting for image rotation.
Device Setup & Communication
Uploading Images
- Prepare a
96 × 96 px image.
- Rotate the image
180° before upload.
- Export in JPEG format.
- Send using the Update Button Image command sequence.
Full LCD Image
- Prepare a
480 × 320 px image.
- Rotate the image
180° before upload.
- Export in JPEG format.
- Send using the Update Full Screen Image command sequence.
Full Window Image
- Prepare a
248 × 58 px image.
- Rotate the image
180° before upload.
- Export in JPEG format.
- Send using the Update Window Image command sequence.
Partial Window Image
- Prepare the image at the desired logical dimensions.
- Rotate the image
180° before upload.
- Export in JPEG format.
- Send using the Update Partial Window Image command sequence.
INDEX
Output Reports Reference
Feature Reports Reference
Setter Feature Reports
Getter Feature Reports