3 min read

Set up and control elgato Stream Deck Mini on Linux

Brie Carranza

I bought the elgato Stream Deck Mini. I wanted to get it set up on my desktop running Parrot OS. It was ridiculously easy to get it working with the streamdeck-cli provided by the streamdeck package on crates.io. With that installed, I was able to set custom colors and images on each of the keys.

Prerequisites

Get the serial number of your Stream Deck Mini

After you plug it in, run dmesg to get the Serial Number. Set the environment variable USB_SERIAL equal to your Serial Number so that you can copy and paste commands below.

Install Rust

The quickstart instructions for Rust are as follows:

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

(Exercise caution.)

Install streamdeck-cli

With Rust installed and cargo in your $PATH, it's time to install streamdeck, from crates.io.

# cargo install streamdeck

This will provide the streamdeck-cli executable used to update the Stream Deck Mini.

Set the brightness

To make sure everything is working, set the brightness to 0:

streamdeck-cli set-brightness 0

Set the brightness to 100:

streamdeck-cli set-brightness 100

Set button colors

In order to use the set-colour subcommand, you need to specify the key you want to modify. The keys are 1 through 6, like so:

| 1 | 2 | 3 | | 4 | 5 | 6 |

You also need the RGB value for the color you want to use. You can easily convert hex to RGB online.

Set button 4 (lower left) to Twitter blue

streamdeck-cli set-colour 4 --r 29 --g 161 --b 242

Set all six buttons to Overwatch orange in one go

With the magic of the seq command, you can set all six buttons to the same color like so:

for i in $(seq 1 6) ; do streamdeck-cli set-colour $i --r 249 --g 158 --b 26 ; done

Set images

In order to use the set-image subcommand, you need to specify the key you want to modify and the path to an image you want to use.

I decided to create to use six different cat emoji from Openmoji:

Here's the idea I had in mind:

cat key layout

Once I had downloaded the files and renamed them, I ran these commands to set a custom cat face for each of the six buttons:

streamdeck-cli  set-image 1 1_laughing_cat.png
streamdeck-cli  set-image 2 2_crying_cat.png
streamdeck-cli  set-image 3 3_kissing_cat.png
streamdeck-cli  set-image 4 4_laugh_cry_cat.png
streamdeck-cli  set-image 5 5_pouting_cat.png
streamdeck-cli  set-image 6 6_smiing_cat_with_heart_eyes.png

Here's how the final product looks:

six cat faces

A note on image selection:

The icons from OpenMoji will look good on the relatively small buttons on the deck. If you attempt to send an image that's too large, you'll see:

[ERROR] Command error: InvalidImageSize
  • The largest image that I added was ~15K.
  • The smallest image that has returned that error message is ~26K.

Limitations and Next Steps

The streamdeck-cli tool is really fun and easy but the only interesting subcommands are for setting brightness, colours and images. I found that I couldn't control both the color and the image. I'd like to go a little further and be able to receive keypresses.

Here's what's next:

Appendix

lsusb

Let's take a look at the dmesg output we see when connecting Stream Deck Mini:

dmesg | grep Stream | grep devices
[1288627.009470] input: Elgato Systems Stream Deck Mini as /devices/pci0000:00/0000:00:14.0/usb1/1-5/1-5:1.0/0003:0FD9:0063.0006/input/input34
[1288761.853895] input: Elgato Systems Stream Deck Mini as /devices/pci0000:00/0000:00:14.0/usb1/1-5/1-5:1.0/0003:0FD9:0063.0007/input/input35
# dmesg | grep Stream | grep devices   | cut -d"/" -f7
1-5:1.0
# lsusb -s 1-5:1.0
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub