GPIO howto?

Can someone explain to me how GPIO with CasparCG works? What hardware is usually used, and how is the software configured/implemented? I’d look at the wiki, but it seems it no longer exists.

Specifically, what I’m hoping/trying to do:

  • close contact #1, run a given command (ie. ‘clear 1’)
  • close contact #2, run another given command (ie. ‘play 1-10 myfile’)
  • close contact #3, run a few commands (ie. ‘play 1-10 someotherfile’, ‘mixer 1-10 opacity 0.5’, ‘play 1-11 [html] “http://myserver/myfile.html”’)

I know I could write a custom client using hardware/software of my choice, but I suspect there’s already a solution for this, and would rather avoid reinventing the wheel.



The CasparCG client has GPIO built in, and it appears like it is set up to connect a GPIO board to a serial port on the computer. I have not investigated beyond that, but there does appear to be code for that. Hopefully someone else on here can comment before I have to read the relevant source code to figure it out…

The GPIO feature in the Client uses an Arduino interface - you can find the sketch here:

  • GPI triggers playlist events: Load, Play, Stop, etc. and is configurable in the settings (triggers events on the currently selected item, it must also have “Allow GPI” enabled)
  • GPO can be triggered from the playlist the same way as other items

Or IOCore device

I wrote a small GPIO windows client that can run beside the Caspar client.

It uses a cheap USB GPIO Module from Numato (8-Port, 24$), no drivers needed.
check windows system control for the USB COMPORT. You can test the software without the Interface.

you can prepare 8 caspar commands, they are triggered from the interface.

Exe and Source files here.
Exe and Source
please put the .dll in the same folder as the executable.

in the folder is a schematic diagram for my interface (2 channels used only), it was drawed last year, the interface was a bit cheaper then :frowning:


X-Keys + JustMacros are not an option to you?

Please, my friend. Can you tell me if when using this code and executing the play command, at the end of the video execution the code positions the caspar in the next video in the list. Thanks