[Den Delimarsky] had a Stream Deck and wanted to be free of the proprietary software, so he reverse-engineered it. Now, he has a Stream Deck Plus, and with the same desire, he reverse-engineered it as well.
The device has eight buttons, a narrow screen, and four encoder dials. The device looks like a generic HID device to the host machine, and once it has been configured, doesn’t need any special software to function. By configuring the device using the official software in a virtual machine under the watchful eye of Wireshark, it was possible to figure out how that initial setup worked and recreate it using a different software stack.
If you’ve never done this kind of thing before, there is a lot of information about how to find USB data and draw inferences from it. The buttons send messages when pressed, of course. But they also accept a message that tells them what to display on their tiny screen. The device screen itself isn’t very big at 800×100.
[Den] packages everything up in the DeckSurf SDK, an open source project that lets you control Stream Decks. So if you just want to control the Deck, you don’t need to know all these details. But, for us, that’s where the fun is.
Way back in 2015, we covered some guy who had sniffed out a USB signal generator. That was easy since it was a serial port. However, you can go pretty far down the rabbit hole.
This project seems to be only available for Windows so far.
Linux users might like to search Github for “StreamController”
I made my own version too that has some nice very simple features. Would it be ok to provide the github link?
Unfortunately written in C# – not a great choice for portability.
Portability is no longer a concern, at least not for projects of this size/scope. Feed the source to a good LLM and tell it to port it to any language you like. Well over 95% of the code will work the first time.
Fortunately, .NET Core and .NET 5+ can target Linux (and be used on Linux workstations for development)
You may want to check out also a similar device caller Mirabox Stream Dock that does essentially the same and costs a fraction on Aliexpress. Pretty much all “Elgato Stream Decks” sold there are instead Mirabox Stream Docks. They’re not compatible, but as with the Stream Deck, there is Linux support: its SDK supports C++ and Python, is open Source and MIT licensed.
https://github.com/MiraboxSpace