BlackMagic Design ATEM Mini remote access methods

Access, configure, record, stream and make changes to an Blackmagic Design ATEM Mini and ATEM Mini Extreme (Pro or Pro ISO) remotely without using the proprietary software.

ATEM Mini Pro

The ATEM Mini switches can be manipulated any many different ways. There is the official Blackmagic Design proprietary Windows/Mac OS only ATEM Switcher software and that uses the proprietary, undocumented, UDP protocol that is used to do just about everything possible on the various video switchers. Unfortunately that piece of software is available for Windows and Mac OS only, strange enough as it is also made with Qt, so a Linux build should be a walk in the park. And the UDP protocol is closed and undocumented officially. Fortunately it has been reverse engineered and there are plenty of various libraries (C++/Qt, C#, Arduino, etc) available so custom applications are possible.

Fortunately the ATEM Mini video mixer devices can also be accessed with a couple of simple TCP protocols too. These can all be accessed manually for example using telnet or easily from programs. For some of these you might even find ready made libraries for easy access.

The protocols available are the following:

  • Videhub routing protocol on port 9990
  • Configuration protocol on port 9977
  • Blackmagic ATEM Ethernet Protocol 1.0 on port 9993.
  • FTP is also available on the models that include recording, these are the Pro and Pro ISO models.

Note: All of these protocols, even the UDP one, are open without any kind of authentication. Always make sure your switcher(s) are on a private trusted network!

Although these protocols are somewhat limited in functionality, they do provide the basics for switching of inputs/outputs, monitoring of inputs/outputs, recording and also streaming. For example you can easily start a video stream to a custom RTMP endpoint, something you actually can't do from the proprietary software without editing the Streaming settings XML file. It is also very easy to switch or monitor inputs, so for example you could use something like a networked Arduino, ESP32 or similar MCU to access the switcher in various ways (Say Tally display, input switching according to some sensor, go wild!)

Videohub Routing protocol

The basic input to output routing can be changed and monitored using the videohub routing protocol on port 9990. This is a very simple protocol, a bit verbose perhaps, but still very easy to use for both routing inputs to outputs but also for monitoring changes in the routing.

The monitoring can be used various purposes, for example custom tally devices. Or the routing for custom input/output switching devices, say rotary encoders, motion detection, buttons, etc.

Example connection using the Videohub protocol and various examples on output routing.

Videohub Routing protocol examples

Operation Input/Output
Initial connection message
telnet 192.168.1.99 9990
Trying 192.168.1.99...
Connected to 192.168.1.99.
Escape character is '^]'.
PROTOCOL PREAMBLE:
Version: 2.7

VIDEOHUB DEVICE:
Device present: true
Model name: ATEM Mini Pro
Friendly name: ATEM Mini Pro
Unique ID: xxxxxxxxxxxxxxxxxxxxxxxxxxx
Video inputs: 14
Video outputs: 3

INPUT LABELS:
0 Black
1 Camera 1
2 Camera 2
3 Camera 3
4 Camera 4
5 Color Bars
6 Color 1
7 Color 2
8 Media Player 1
9 Media Player 1 Key
10 Multi View
11 Program
12 Preview
13 Camera 1 Direct

VIDEO INPUT STATUS:
0 Internal
1 HDMI
2 HDMI
3 HDMI
4 HDMI
5 Internal
6 Internal
7 Internal
8 Internal
9 Internal
10 Internal
11 Internal
12 Internal
13 HDMI

OUTPUT LABELS:
0 Output
1 Program
2 Preview

CONFIGURATION:
Video Mode: 1080p30

VIDEO OUTPUT ROUTING:
0 10
1 1
2 1

END PRELUDE:

 

Change video output mode to 1080p60

Send:

CONFIGURATION:
Video Mode: 1080p60
Change video output mode to 1080p30

Send:

CONFIGURATION:
Video Mode: 1080p30
Switch video Output to Camera 1

Send:

VIDEO OUTPUT ROUTING:
0 1
Switch video Output to Multiview

Send:

VIDEO OUTPUT ROUTING:
0 10
Switch preview to Camera 2

Send:

VIDEO OUTPUT ROUTING:
2 2
Switch program output to Camera 4

Send:

VIDEO OUTPUT ROUTING:
1 4
Keepalive PING

Send

PING:

 

Send the commands and an empty line, the device will respond with an ACK if the command was understood.

ATEM Ethernet protocol

The ATEM Ethernet protocol is on port 9993 and is very close to the Hyperdeck protocol (No, you can't use ATEM Mini as a Hyperdeck). From this interface you can control streaming and recording and query basic device details.

Especially the streaming commands are handy as you can start streaming directly to a custom streaming endpoint, with custom bitrates, without going trough the Streaming XML file.

Blackmagic ATEM Ethernet Protocol 1.0 examples
Operation Input/Output
Initial connection message
telnet 192.168.1.99 9993
Trying 192.168.1.99...
Connected to 192.168.1.99.
Escape character is '^]'.
500 connection info:
protocol version: 1.0
model: ATEM Mini Pro
friendly name: ATEM Mini Pro
unique id: xxxxxxxxxxxxxxxxxxxxxxxxxxxxx

 

Help

Send: ?\n

201 help:
Blackmagic ATEM Ethernet Protocol 1.0
-------------------------------------------

Available commands:
    help                                       return this help
    commands                                   return commands in XML format
    device info                                return device information
    quit                                       disconnect ethernet control
    ping                                       check device is responding
    record                                     record from current input
    record: name: {name}                       record named clip (supports UTF-8 name)
    record spill                               spill current recording to next slot
                                               use current slot id to spill to same slot
    stop                                       stop playback or recording
    slot info                                  query active slot
    slot info: slot id: {n}                    query slot {n}
    slot select: slot id: {n}                  switch to specified slot
    stream start: url: {url} key: {key}        start video streaming using specified url and key (bitrate selected automatically)
    stream start: url: {url} key: {key} bitrate: {bitrate} start video streaming using specified url, key and bitrate (in bps)
    stream stop                                stop video streaming
    configuration                              query configuration settings
    configuration: record prefix: {name}       set the record prefix name (supports UTF-8 name)
    watchdog: period: {period in seconds}      client connection timeout

 

Start video stream to custom RTMP endpoint

Send:

stream start: url: rtmp://your.own.server/live key: SECRETVIDEO

Configuration protocol

The configuration protocol is on port 9977, and can be used to setting some of  the settings available in the ATEM Setup program. The input button cut behaviour (direct or with preview), keep/drop chroma/PictureInPicture keys on input change and the button backlight intensity. Strangely enough you can also get the streaming and recording status from this interface, but you need to poll for them, the device won't send any changes on status updates.

Configuration protocol examples
Operation Input/Output
Initial connection message
telnet 192.168.1.99 9977
Trying 192.168.1.99...
Connected to 192.168.1.99.
Escape character is '^]'.
PROTOCOL PREAMBLE:
Version: 1.0

ATEM SWITCHER DEVICE:
Model name: ATEM Mini Pro
Unique ID: 598de294c8e949168d127c1819aaee0d
Label: ATEM Mini Pro
Host name: ATEM-AVB-7c2e0d11f1b1

ATEM MINI PANEL SETTINGS:
Switching mode: 2
Drop picture in picture key: 1
Drop chroma key: 1
Button led backlight level: 45

RECORD AND STREAM:
Is streaming: 0
Is recording: 0

END PRELUDE:

 

Get record and stream status

Send:

RECORD AND STREAM:\n\n

Device responds with:

ACK

RECORD AND STREAM:
Is streaming: 0
Is recording: 0
Send PING

Send:

PING:\n\n

Device should respond with:

ACK

Set and configuration option,

for example button backlight level.

The other options work exactly the same way.

Send:

ATEM MINI PANEL SETTINGS:\n
Button led backlight level: 75\n\n

The device will respond with the settings:

ACK

ATEM MINI PANEL SETTINGS:
Switching mode: 2
Drop picture in picture key: 1
Drop chroma key: 1
Button led backlight level: 75

 

File Transfer Protocol aka FTP

The ATEM Mini/Extreme Pro and Pro ISO models supports ftp access to attached storage. The base model ATEM Mini without recording capabilities obviously does not.

You can easily transfer your recordings from the USB storage device without unplugging it and you can even do it while a recording is active!

FTP sessions example
FTP Download session
# ftp 192.168.1.99
Connected to 192.168.1.99.
220 Hello, Blackmagic FTP Server
Name (192.168.1.99:xxxxx): anonymous
331 User name okay, need password.
Password:
230 User logged in, proceed.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
200 PORT command successful.
150 Directory okay; about to open data connection.
drwxrwxrwx 3 root root                0 Jan  1  1970 ATEMVideoR
226 Directory send completed.
ftp> cd ATEMVideoR
250 directory changed to /ATEMVideoR
ftp> ls
200 PORT command successful.
150 Directory okay; about to open data connection.
drwxrwxrwx 3 root root           131072 Jul  8 11:42 System Volume Information
-rw-rw-rw- 1 root root          1209676 Jul 19 18:07 testitesti.mp4
-rw-rw-rw- 1 root root             4096 Jul 19 18:07 ._testitesti.mp4
drwxrwxrwx 3 root root           131072 Jul  8 11:55 $RECYCLE.BIN
226 Directory send completed.
ftp> bin
200 Command successful.
ftp> get testitesti.mp4
local: testitesti.mp4 remote: testitesti.mp4
200 PORT command successful.
150 File status okay; about to open data connection.
250 Requested file action okay, completed.
1209676 bytes received in 0.03 secs (37.0813 MB/s)
ftp> close
221 Goodbye.
ftp>

 

 

Browsers used to have support for ftp built in, unfortunately they have started to remove those so you do need to use good old ftp client. The simplest is the above cli ftp client that should be available on almost any OS. If you prefer a GUI then you can try one of these: