Stream Deck XL
Introduction
The Stream Deck XL Family are 32-Key USB 2.0-compliant input devices featuring an 4×8 grid of keys atop a single high-DPI LCD screen. They communicate with the host via the USB HID protocol, enabling key event reporting, image upload, and device configuration.
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 32-key family.
Devices Overview
Summary
| Name | Model | VID | PID | Capabilities |
|---|---|---|---|---|
| Stream Deck Module 32 | 20GAT9902 | 0x0FD9 | 0x00BA | 32 Keys Layout |
| Stream Deck XL | 20GAT9901 | 0x0FD9 | 0x006C | 32 Keys Layout |
| Stream Deck XL 2022 | 20GAT9902 | 0x0FD9 | 0x008F | 32 Keys Layout |
All models in this family share the same HID command set and 32-key layout. Adjust the PID when targeting a specific model.
Capabilities & Physical Characteristics
32 Keys Layout
| Entity | Property |
|---|---|
| LCD Image | 1024 × 600 px (high DPI) |
| Keys matrix | 8 × 4 |
| Key Image | 96 × 96 px |
Keypad Keys Index Layout

Unit Pixel Layout
Command Descriptions
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 Key Image
Uploads an image for a specific key.
| Offset | Type | Note |
|---|---|---|
| + 0x00 | Output Report | Report ID: 0x02, Command: 0x07 |
| + 0x02 | UINT8 | Key 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 entire 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 Background
Uploads an image to be stored as a background at a given index.
| Offset | Type | Note |
|---|---|---|
| + 0x00 | Output Report | Report ID: 0x02, Command: 0x0D |
| + 0x02 | UINT8 | Background Index |
| + 0x03 | UINT8 | Transfer is Done flag (0x01 = last chunk) |
| + 0x04 | UINT16 | Chunk Index (zero-based) |
| + 0x06 | UINT16 | Chunk Contents Size |
| + 0x08 | UINT8[] | Chunk Data |
Setter Feature Reports (Device-Specific)
Show Background by Index
Displays a previously stored background by its index.
| Offset | Type | Note |
|---|---|---|
| + 0x00 | Feature Report | Report ID: 0x03, Command: 0x13 |
| + 0x02 | UINT8 | Background Index |
Device Setup & Communication
Uploading Images
Key Image
- Prepare a
96 × 96 pximage. - Rotate the image
180°before upload (required for all models in this family). - Export in JPEG format.
- Send using the Update Key Image command sequence.
Full LCD Image
- Prepare a
1024 × 600 pximage. - Rotate the image
180°before upload (required for all models in this family). - Export in JPEG format.
- Send using the Update Full Screen Image command sequence.
INDEX
Input Reports Reference
| Report ID | Command | Description |
|---|---|---|
0x01 | 0x00 | Key press state change |
Output Reports Reference
| Report ID | Command | Description |
|---|---|---|
0x02 | 0x07 | Update Key Image |
0x02 | 0x08 | Update Full Screen Image |
0x02 | 0x0D | Update Background |
Feature Reports Reference
Setter Feature Reports
| Report ID | Command | Description |
|---|---|---|
0x03 | 0x02 | Show Logo |
0x03 | 0x05 | Fill LCD with Color |
0x03 | 0x06 | Fill Key with Color |
0x03 | 0x08 | Set Backlight Brightness |
0x03 | 0x0D | Set Sleep Mode Duration |
0x03 | 0x13 | Show Background by Index |
Getter Feature Reports
| Report ID | Command | Description |
|---|---|---|
0x04 | Get Firmware Version (LD) | |
0x05 | Get Firmware Version (AP2) | |
0x06 | Get Unit Serial Number | |
0x07 | Get Firmware Version (AP1) | |
0x08 | Get Unit Information | |
0x0A | Get Sleep Mode Duration |