Blackmagic Design ATEM Protocol
mush
Posts: 287
G'day all,
Has anyone done any work with the Blackmagic Design ATEM equipment?
If so would you be willing to share your findings?
I have a TV Studio on my bench that I am supposed to write a control module for but I have not been able to find the protocol spec anywhere.
Cheers
Mush
Has anyone done any work with the Blackmagic Design ATEM equipment?
If so would you be willing to share your findings?
I have a TV Studio on my bench that I am supposed to write a control module for but I have not been able to find the protocol spec anywhere.
Cheers
Mush
0
Comments
http://www.blackmagicdesign.com/au/support/detail?sid=3962&pid=3973&leg=false&os=win
There's a 53MB operators manual and support notes. I think there are details in there.
http://www.blackmagicdesign.com/au/support/sdks
The SDK does not describe the protocol.
Several companies have reversed engineered the protocol using the SDK and/or packet sniffing.
I can and will reverse engineer the protocol if I have to but I'm hoping that I can avoid doing so.
It doesn't seem unreasonable as it appears to be a very popular protocol.
As much as I love the switcher itself, the fact that it doesn't have an integrator friendly API is a deal-breaker.
If you're still interested in going down that path, I'll try to answer any questions you may have.
G'day Nick,
Yes, still very much interested.
Any documentation, code examples etc. that you would be willing to share would be awesome.
I've sent you a PM with my email address.
Cheers
Mush
G'day Nick,
I have a BMD TVS in front of me right now.
Are you able to help with the protocol?
Specifically, establishing and maintaining a connection?
Thanks in advance.
Mush
Boilerplate:
This code is provided without warranty, and I bear no liability for it's use. Blah blah blah...
I tried to control the ATEM-2 M/E using the same code, you provided however it didn't respond on the command sent to the vdev, not even with error response however when I connect at first it gives me the following:
Line 1 (14:02:06):: CIpEvent::OnLine 0:5:1
Line 2 (14:02:06):: BlackMagic ATEM Comm: *** Client Socket ONLINE ***
Line 3 (14:02:06):: CIpEvent::OnLine 0:6:1
Line 4 (14:02:06):: BlackMagic ATEM Comm: *** Server Socket ONLINE ***
Line 5 (14:02:06):: BlackMagic ATEM Comm: Program Source = 0
Line 6 (14:02:06):: BlackMagic ATEM Comm: Preview Source = 110
Line 7 (14:02:06):: BlackMagic ATEM Comm: Program Source = 13
Line 8 (14:02:06):: BlackMagic ATEM Comm: Preview Source = 140
Line 9 (14:02:06):: BlackMagic ATEM Comm: Program Source = 13
Line 10 (14:02:06):: BlackMagic ATEM Comm: Program Source = 0
Line 11 (14:02:06):: BlackMagic ATEM Comm: Preview Source = 110
Line 12 (14:02:06):: BlackMagic ATEM Comm: Program Source = 45
Line 13 (14:02:06):: BlackMagic ATEM Comm: Preview Source = 140
Line 14 (14:02:06):: BlackMagic ATEM Comm: Program Source = 45
Line 15 (14:02:06):: BlackMagic ATEM Comm: Program Source = 0
Line 16 (14:02:06):: BlackMagic ATEM Comm: Preview Source = 110
Line 17 (14:02:06):: BlackMagic ATEM Comm: Program Source = 45
Line 18 (14:02:06):: BlackMagic ATEM Comm: Preview Source = 140
Line 19 (14:02:06):: BlackMagic ATEM Comm: Program Source = 45
Line 20 (14:02:06):: BlackMagic ATEM Comm: Program Source = 0
the same SDK is provided for all switchers so I assumed for at least the inputs from 1-6 we should at least be able to control through your code, have you worked around the ATEM 2 and what do you think I can do to troubleshoot more?
I appreciate your help.
Thank you for your code, I understood that every time you connect to this mixer parts in each command will change, and you need to track through wireshark at least the initiation command in order to get the correct responses.
Would you care to share your code?
Just one thing to keep in mind, it's GPL licensed. If you do build anything on it, don't be a douche and ignore the license, make sure you open up the source of the resulting system.
Nick and others,
has anyone developed a working AMX source code?
An ATEM protocol document is not released yet (since years), and it seems to be changed as in the Nickm sample, he was expecting $31 as byte position #10 instead here I receive $20.
Anyhow, even chaning that byte, the dialog starts and goes fine for some seconds
Besides that, the main problem for me is to understand the meaning of byte position #10 inside the hexadecimal 80 0c message.
Explaining a little better .... I am sniffing packets between ATEM Software Control and ATEM Television Studio
ATEM SOFT.CONTROL -> 10 14 2e 07 00 00 00 00 00 ec 00 00 01 00 00 00 00 00 00 00 (HELLO)
ATEM TVS -> 10 14 2e 07 00 00 00 00 00 20 00 00 02 00 00 33 00 00 00 00 (HELLO RESPONSE: yes, tell me more)
ATEM SOFT.CONTROL -> 80 0c 2e 07 00 00 00 00 00 ab 00 00 (STARTING DIALOG:I am here - PLEASE LOOK AT THE ab)
ATEM TVS -> 30 14 2e 07 00 00 00 00 00 20 00 00 02 00 00 33 00 00 00 00 (HELLO RESPONSE: yes, tell me more - SECOND REQUEST)
ATEM SOFT.CONTROL -> 80 0c 2e 07 00 00 00 00 00 f9 00 00 (STARTING DIALOG:I am here - PLEASE LOOK AT THE f9)
..... ATEM Software and ATEM TVS exchanges data .....
It seems that ab and f9 are strictly depending on the uuid 2e 07
So, what does that byte means? and how can I calculate if the uuid is different ?
Thank you very much
Fabrizio Lorenzini