BlackMagic ATEM Switcher Protocol

This is an almost complete reverse engineering of the ATEM protocol commands, provided by SKAARHOJ ApS, who pioneered this work back in 2011. We have tried to make it as complete and correct as possible1. This has taken weeks and weeks to make and keep it updated. If you like this information (provided under Creative Commons by-sa license), please credit us and link our website.

Apart from providing this information for free, SKAARHOJ ApS also maintains an Arduino API. The "Arduino API" column lists which methods from the SKAARHOJ ATEM library series will handle the feature in question. The "BMD API Method" column correlates this feature to the official BlackMagic SDK in many cases. The API and value ranges are usually tested with 720p50 resolution, but should work with any other.

Various versions of the SKAARHOJ Arduino ATEM library exist in order to accomodate different customer needs in terms of flash and dynamic memory usage on these small MCU boards. You can download the library files from GitHub. The ATEM libraries are called something like ATEMbase (shared super class), ATEMmin (minimalistic), ATEMstd (basic needs, legacy wrapper functions), ATEMext (extended), ATEMmax (all features) etc. The library just named "ATEM" on GitHub is the old library and usage of this is discouraged - use ATEMstd instead. Please check out the example sketches distributed with the libraries for examples of usage. Remember, these libraries are all GNU/GPL Open Source and can only be used with compatible code. This basically means you can only use it in part or full, if your code is open source as well. In this way, the stuff stays open and the world becomes a better place :-). Please check out our general guidelines on using our freely provided IP

The information below is based on and tested with ATEM Software Control 6.3 (firmware version 2.16), March 11th 2015.

August 2018: The free open source SKAARHOJ provided Arduino Libraries will only work

with ATEM Software Control firmware versions up to 7.5.0.

(SKAARHOJs commercial products will work with ATEM Software Control firmwares beyond 7.5.0)

 

1) Features for uploading clips and stills are not included since they are unmanageable on an Arduino. Please check out Peter Simonssons QT library for how to use those commands. And btw, thanks to Peter for comments and helpful inspiration from his work as well!

(Arduino API filter: 1, "ATEMmax")

Commands

 

VIDEOSRC

Array

(

    [0] => Black

    [1] => Input 1

    [2] => Input 2

    [3] => Input 3

    [4] => Input 4

    [5] => Input 5

    [6] => Input 6

    [7] => Input 7

    [8] => Input 8

    [9] => Input 9

    [10] => Input 10

    [11] => Input 11

    [12] => Input 12

    [13] => Input 13

    [14] => Input 14

    [15] => Input 15

    [16] => Input 16

    [17] => Input 17

    [18] => Input 18

    [19] => Input 19

    [20] => Input 20

    [1000] => Color Bars

    [2001] => Color 1

    [2002] => Color 2

    [3010] => Media Player 1

    [3011] => Media Player 1 Key

    [3020] => Media Player 2

    [3021] => Media Player 2 Key

    [4010] => Key 1 Mask

    [4020] => Key 2 Mask

    [4030] => Key 3 Mask

    [4040] => Key 4 Mask

    [5010] => DSK 1 Mask

    [5020] => DSK 2 Mask

    [6000] => Super Source

    [7001] => Clean Feed 1

    [7002] => Clean Feed 2

    [8001] => Auxilary 1

    [8002] => Auxilary 2

    [8003] => Auxilary 3

    [8004] => Auxilary 4

    [8005] => Auxilary 5

    [8006] => Auxilary 6

    [10010] => ME 1 Prog

    [10011] => ME 1 Prev

    [10020] => ME 2 Prog

    [10021] => ME 2 Prev

)

 

AUDIOSRC

Array

(

    [1] => Input 1

    [2] => Input 2

    [3] => Input 3

    [4] => Input 4

    [5] => Input 5

    [6] => Input 6

    [7] => Input 7

    [8] => Input 8

    [9] => Input 9

    [10] => Input 10

    [11] => Input 11

    [12] => Input 12

    [13] => Input 13

    [14] => Input 14

    [15] => Input 15

    [16] => Input 16

    [17] => Input 17

    [18] => Input 18

    [19] => Input 19

    [20] => Input 20

    [1001] => XLR

    [1101] => AES/EBU

    [1201] => RCA

    [2001] => MP1

    [2002] => MP2

)