These are good clues, but where in Device Manager will I find these values? I didn’t have to go far - it’s all in the Hardware Ids property.Īmong all the text, I can clearly see that there is a familiar VID and PID values. Going to their repository page also lists all their products, showing Stream Deck XL having the 006c product ID (PID). I know that the Stream Deck is made by Elgato, so that’s what I am going to search for.Ī quick scan of the page shows that Elgato’s vendor ID (VID) is 0fd9. To find what we need, we can refer to public databases, such as the USB ID Repository. These are formal identifiers that are static - they don’t change on your machine. Luckily, there is another way to find out - through vendor and product IDs that are set for every USB device.
Well that’s an awful lot of connected HIDs, with zero identifiers that allow me to actually find which is the Stream Deck, and I don’t want to go through trial and error to figure out what to listen to. To make sure that I am looking for the right things, I first fired up the Windows Device manager to see how it identifies the Stream Deck. I’ve previously done something similar on a Mac device, and there I needed to jump through a few hoops to get it running (like disabling System Integrity Protection) - if you are following this article and want to experiment on the macOS, refer to the Wireshark USB capture setup guide. On Windows, the setup of this traffic analysis toolchain was relatively simple - I basically installed the tools and ran them. Along with Wireshark, I also used USBPcap (stands for “USB Packet Capture”), which is specifically designed to inspect USB traffic, and it plugs in nicely with Wireshark, so that I can see everything in one view. The next ingredient required for my inspection recipe was Wireshark - this is a wonderful that allows hooking into the “wire” (whether it’s network or USB) and listening to what all the chatter is about.
The Stream Deck software was needed to understand how I can talk to it, so I spun up a virtual machine and installed the default tools to manage the device. Knowing this, I could now verify my assumptions by inspecting the USB traffic that goes between the device and my computer. Wikipedia put it best, describing HID as “…takes input from humans and gives output to humans.” Sounds like the Stream Deck? Sure does. The device I am experimenting with is a Stream Deck XL, so as you read through this article, keep in mind that the experience or nuances of the USB protocol might be different for other variants.Īs I started my detective work, my running assumption was that the Stream Deck is a Human Interface Device (HID).
Knowing that, I knew that my job would be somewhat easier - I don’t need to try and understand how to write code for the device, but rather figure out its USB protocol. The Stream Deck is merely acting like a screen with a short-term memory. It’s the Stream Deck software that does the heavy lifting. Its capabilities are fairly limited - the device itself is not the one that is responsible for launching software or switching scenes in OBS. That’s right, the Stream Deck is not a collection of small screens, but rather one large display that is split into square subsections by a capacitive panel that sits between the plastic buttons and the screen. If you watch any of the teardown videos, you’ll learn (just like I did) that it sports an ARM CPU and a large TFT display.