Page 1 of 1

GVG protocol implementation

PostPosted: Mon Jun 10, 2019 6:04 pm
by plek243
Hello,

I want to do some simple remote control of an ATEM Television Studio HD, without the use of a PC or Mac. I got a few functions working like selecting sources for program and preview, and auto transition with the T-bar.

But what I also need is the ability to select the media players, and the ability to select the source for the aux channel. Is this possible in any way or form?

I know there is also the option for the skaarhoj arduino library, but I really prefer something that is supported by BMD, so I don't have to worry about future software upgrades.

Peter

Re: GVG protocol implementation

PostPosted: Tue Jun 11, 2019 1:13 am
by Baz
The ATEM GVG interface is very basic and there is no direct access to media players etc via the GVG protocol.

I sell ATEM controllers that use the ATEM GVG interface (RS422 serial 9pin connector) and can be seen here:






Re: GVG protocol implementation

PostPosted: Wed Jun 12, 2019 6:53 pm
by cishoy
plek243 wrote:Hello,

I want to do some simple remote control of an ATEM Television Studio HD, without the use of a PC or Mac. I got a few functions working like selecting sources for program and preview, and auto transition with the T-bar.

But what I also need is the ability to select the media players, and the ability to select the source for the aux channel. Is this possible in any way or form?

I know there is also the option for the skaarhoj arduino library, but I really prefer something that is supported by BMD, so I don't have to worry about future software upgrades.

Peter


I am also looking to control the ATEM 4 M/E using the RS-422 serial port with a control system. I am just looking for simple source to destination commands. I just joined the forum, and I've been searching for the GVP100 document. Are these the same commands you found to work? Care to share what worked for you?

Re: GVG protocol implementation

PostPosted: Wed Jun 12, 2019 7:02 pm
by plek243
Baz wrote:The ATEM GVG interface is very basic and there is no direct access to media players etc via the GVG protocol.

Oh that's disappointing. Seems almost a bit silly from BMD to implement a protocol and then not add these things. This should be easy for them to do, and I'm pretty sure many people would appreciate it.

Now they leave it up to the hackers community which should not be necessary imho.

Re: GVG protocol implementation

PostPosted: Wed Jun 12, 2019 7:41 pm
by plek243
cishoy wrote:
I am also looking to control the ATEM 4 M/E using the RS-422 serial port with a control system. I am just looking for simple source to destination commands. I just joined the forum, and I've been searching for the GVP100 document. Are these the same commands you found to work? Care to share what worked for you?


I can share:

First of all connect to the RS422 port with 38400, 8bits, 1 stop bit, Odd parity.
Then each command starts with a <break>: a break means pulling the line to a zero level for longer than a frame duration. In my crude test I just manually reversed RX+ and RX- for a second or so with a switch.

Then there are a few commands that worked for me like:
Set Program to input 1: 0x30 0x03 0x01 0xC1 0x01
Set Program to input 2: 0x30 0x03 0x01 0xC1 0x02

Set Preview to input 1: 0x30 0x03 0x01 0xC2 0x01
Set Preview to input 2: 0x30 0x03 0x01 0xC2 0x02

Read current Program source: 0x30 0x02 0x01 0x41

Perform auto-transition on the T-bar: 0x30 0x03 0x01 0xfb 0x0b

It's hard to find this info from BMD, but competing brands use the same protocol, even if it is on RS232, and do have proper documentation.

Also worth mentioning: When the TV Studio HD (v7.5.2) boots, it spits out some data at what seems to bee 115200bps. But this has nothing to do with GVG100, so just ignore that.

Re: GVG protocol implementation

PostPosted: Wed Jun 12, 2019 10:18 pm
by cishoy
Thanks Peter! I will give these commands a try. Also, I found some info on the commands to send a break through a serial port, so I will let you know if that works.

Re: GVG protocol implementation

PostPosted: Fri Jan 31, 2020 4:43 pm
by HansImGlueck
Hello,

I'm trying to establish a serial RS-422 connection to an ATEM 1 M/E Production Studio 4K. For my tests I use an rather old Windows XP PC, which has a serial port. For conversion from RS-232 to RS-422 I have an dataMate DM7015 converter. The latter was used several years ago to control a Sony VTR from within AVID MediaComposer.
On the Windows XP machine I have HTerm 0.8.1beta running. Connecting HTerm to the serial port 1 makes the power led of the dataMate-converter light up. Pressing the RTS button in HTerm lets the data-led light up.
In HTerm under input control I've selected HEX as Type, but when I type e.g. 30 03 01 FB 0B to perform an auto-transition, nothing happens.
The connection settings are 38.400 - 8 - 1 - odd as Peter mentioned before.

Any ideas? Later on I want to control this mixer (and a Panasonic AV-HS300 as well) via Arduino.

Kind regards,
Martin

Re: GVG protocol implementation

PostPosted: Fri Jan 31, 2020 6:07 pm
by plek243
Hello Martin,

It is crucial to send a 'serial break' before sending the command (30 03 01 FB 0B). A serial break is keeping the TX line high for longer than the time of a normal frame.(see http://ltxfaq.custhelp.com/app/answers/detail/a_id/736/~/what-is-a-serial-break%3F)

Sending a break requires special measures and can be challenging when doing it with a PC. Maybe it can be done with the DM7015, I don't know that converter. I manually simulated a break with a switch that toggled exchanged the A and B lines in the direction of the mixer. But that only works to proof the principle.

With an arduino this should be much easier. Just connect the arduino with something like a SN75179BP.
Example to send a break here: (I don't know if it works)
https://forum.arduino.cc/index.php?topic=39579.0

I hope this helps for you.

Peter

Re: GVG protocol implementation

PostPosted: Fri Feb 05, 2021 6:17 pm
by Kirill Ageev
I had successfully connected the Arduino Mega to ATEM via RS422.
Mega is used because you need two hardware UARTs - one for USB connection to PC (sketch upload and debug) and second is connected to ATEM via two MAX485 converters, one for TX, another for RX. Software serial does not work well because of odd parity setting.

That's how it works:
Code: Select all
...............
   //lets push the command
      gvg100break();      Serial1.write(0x30);
      /* write program
        Serial1.write(0x03); //byte count
        Serial1.write(0x00); //effects address
        Serial1.write(0xC1); //bus C1 - A; C2 - B; C3 - K1; C4 - K2;
        Serial1.write(0x02); //xpt#
      */
      // read program
      Serial1.write(0x02); //byte count
      Serial1.write(0x00); //effects address
      Serial1.write(0x41); //bus 41 - A; 42 - B; 43 - K1; 44 - K2
...............   

void gvg100break() {
  Serial1.end();
  Serial1.begin(19200, SERIAL_8O1); //or maybe SERIAL_8N1 works too
  Serial1.write(0x00);
  Serial1.end();
  Serial1.begin(38400, SERIAL_8O1);
}

I would be grateful if someone has the ATEM GVG implementation manual. Sadly, the TIF posted in this forum several years ago is no longer available.

Re: GVG protocol implementation

PostPosted: Thu Feb 11, 2021 3:08 am
by Ian Morrish