Reverse Engineering the ATEM Protocol
How I used Wireshark to figure out undocumented commands and add them to an open-source library.
This post walks through how I used Wireshark to reverse engineer undocumented ATEM protocol commands and contribute them back to the PyATEMMax library.
Why Bother?
The PyATEMMax library covers most basic ATEM operations, but when I needed to control chroma key settings and DVE parameters programmatically, those commands simply weren’t implemented. The ATEM protocol isn’t publicly documented by Blackmagic, so the only way to figure it out was to watch the traffic.
The Setup
I set up Wireshark on the same network as an ATEM switcher and Blackmagic’s official ATEM Software Control. Then I’d perform an action in the official software — like adjusting a chroma key parameter — and watch what packets got sent.
What I Learned
The ATEM protocol uses UDP and has a specific packet structure with command headers, length fields, and payload data. Once you understand the pattern, you can map out new commands relatively quickly.
The hardest part was figuring out the data types and value ranges for each parameter. Some values are straightforward integers, but others use fixed-point encoding or have non-obvious scaling factors.
More details coming soon as I document the full process.