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.
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.
The quickstart instructions for Rust are as follows:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
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
streamdeck-cli set-brightness 0
Set the brightness to
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
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:
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:
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
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:
- Check out streamdeckd
- Try streamdeck-ui
- USB captures via Wireshark and review Streamdeck HID notes as necessary
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