GVG protocol implementation

Ask software engineering and SDK questions for developers working on Mac OS X, Windows or Linux.
  • Author
  • Message
Offline

plek243

  • Posts: 5
  • Joined: Tue Jun 04, 2019 11:42 am
  • Real Name: Peter Lekkerkerker

GVG protocol implementation

PostMon Jun 10, 2019 6:04 pm

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
Offline
User avatar

Baz

  • Posts: 622
  • Joined: Wed Aug 22, 2012 5:06 am
  • Location: Sydney, Australia

Re: GVG protocol implementation

PostTue Jun 11, 2019 1:13 am

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:






MISC
U/S Express, SmartviewDuo, SmartScopeDuo, Teranex 2D, Web Pres, 5/7 Vid Assists
VIDEOHUB
Smart 12x12
12x24
72x144
HYPERDECK
Studio, Shuttle, Studio Mini
ATEM
2me4K, 2me, TVS, TVS HD, CamConvs, StudioConvs, Studio Cams, Micro Studio Cam
Offline

cishoy

  • Posts: 2
  • Joined: Wed Jun 12, 2019 6:10 pm
  • Real Name: Chris Ishoy

Re: GVG protocol implementation

PostWed Jun 12, 2019 6:53 pm

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?
Offline

plek243

  • Posts: 5
  • Joined: Tue Jun 04, 2019 11:42 am
  • Real Name: Peter Lekkerkerker

Re: GVG protocol implementation

PostWed Jun 12, 2019 7:02 pm

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.
Offline

plek243

  • Posts: 5
  • Joined: Tue Jun 04, 2019 11:42 am
  • Real Name: Peter Lekkerkerker

Re: GVG protocol implementation

PostWed Jun 12, 2019 7:41 pm

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.
Offline

cishoy

  • Posts: 2
  • Joined: Wed Jun 12, 2019 6:10 pm
  • Real Name: Chris Ishoy

Re: GVG protocol implementation

PostWed Jun 12, 2019 10:18 pm

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.
Offline

HansImGlueck

  • Posts: 1
  • Joined: Mon Apr 16, 2018 8:41 pm
  • Real Name: Martin Constien

Re: GVG protocol implementation

PostFri Jan 31, 2020 4:43 pm

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
Offline

plek243

  • Posts: 5
  • Joined: Tue Jun 04, 2019 11:42 am
  • Real Name: Peter Lekkerkerker

Re: GVG protocol implementation

PostFri Jan 31, 2020 6:07 pm

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
Offline

Kirill Ageev

  • Posts: 17
  • Joined: Sat Sep 10, 2016 7:08 am
  • Location: Kyiv, Ukraine

Re: GVG protocol implementation

PostFri Feb 05, 2021 6:17 pm

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.
Offline

Ian Morrish

  • Posts: 580
  • Joined: Sun Jan 18, 2015 9:24 pm
  • Location: New Zealand

Re: GVG protocol implementation

PostThu Feb 11, 2021 3:08 am

Regards,
Ian Morrish
Video Integrated Scripting Environment
(Windows PowerShell with ATEM driver + more)
https://ianmorrish.wordpress.com

Return to Software Developers

Who is online

Users browsing this forum: No registered users and 14 guests