Jump to content

simple Barco IP control


Recommended Posts

Hi all,


First of all, sorry for the topic but i really am in a bit of trouble.


Since i have no coding experience, I dont know where to start when I need to activate PIP function on a Barco HDX-W20 FLEX projector.


I have to activate PIPs on 4 projectors simultaneously, as i know the Watchout so it should be the tool for that.


I have gone through the barco protocol manual, but as i mentioned, no coding experience and that doesnt get me far.

Any clues where to start are appreciated.


with regards 



Link to comment
Share on other sites

Looks like a pretty convoluted protocol, originally devised to be sent over a serial line, and then just repurposed over Ethernet, while still keeping the (now redundant) checksum calculation, as well as byte "escape" sequences for bytes that aren't allowed within commands (i.e., to avoid framing issues on a serial data line). At least that seems to be the case, unless I'm overlooking something in here.


Implementing it as WATCHOUT network command strings should be doable, but not trivial.



Link to comment
Share on other sites

I  had the opportunity to work on the Barco HDX-W18 replacing Christie LX-1500's used for a 360-degree water-screen show last year, but via RS-232. However, we did not use PiP commands, only power, shutter, and projector response to their status, lamp hours queries, etc.


I would try the following -

1. Via the Projector's Menu, first discover and note down the IP Address of each projector and set the DEVICE address of ALL projectors to 0 (Pg. 11-12 of Command Catalog)


2. In Watchout > Output Window > create 4 String Outputs > use the IP addresses so discovered, and Port 43680 which is the TCP port the Barco listens to for incoming commands (Note If TCP has a simultaneous send problem to all 4 projectors through the same port, try UDP)


3. In Watchout, drag each String Output to the timeline. Line them up over 4 layers so that the data is sent simultaneously. If this does not work, try staggering them by 0.05 - 0.1 time differences. Else try UDP.


4. The data string to send is in hex, as follows -

0xfe 0x00 0x8f 0x88 0x01 0x31 0x01 0x4a 0xff


0xfe is the Barco start byte as specified by Barco

0x00 is the Device Address

0x8f 0x88 0x01 are the 'Select PIP Window as Prefix, Write' commands (Pg. 104 of Command Catalog)

0x31 is the 'Set Source' command (Pg. 105)

0x01 is the 'Input 1 as Source' command (Pg. 105); 0x02 = Input 2; 0x03 = Input 3; 0x04 = Input 4

0x4a is the Checksum for Input 1; 0x4b = Checksum for Input 2; 0x4c = Checksum for Input 3; 0x4d = Checksum for Input 4

(My hex maths is not good, so I worked in decimal. I manually converted hex to decimal base 10, added the figures, subtracted 256 from the sum, and converted the remainder back to hex to obtain 4a. 256 is the decimal of hex 100).

0xff is the End byte per Barco



1. You may have to change all '0x' above to '$' AND leave out all spaces in Watchout's 'Data to send' window, i.e.

0xfe 0x00 0x8f 0x88 0x01 0x31 0x01 0x4a 0xff



2. You may also have to append 0x0D or $0D to the end of the above string. Try with / without. (That is the number 0, not the letter O), ie



For size and position of the PIP, easier if you fix these via the Barco on-board Menu. If through Watchout, it could be a combination of Commands 3.203 (pg 105-106) with 3.236 (pg 116).


Hope that works! I don't have that ultra expensive projector to test the codes.

Thomas Leong

Link to comment
Share on other sites

I copied the control codes I use to control the shutter and power below.

These have always worked for me, and I can confirm they will work on the flex.

Use Thomas' guidelines, and this format. You don't have to append with a carriage return, and you should use $ instead of 0x.


Barco IP Port# 43680 Shuter Open $fe$00$22$42$00$64$ff Shuter Close $fe$00$23$42$00$65$ff Lamp On $fe$00$00$03$02$76$1a$01$96$ff Lamp Off $fe$00$00$03$02$76$1a$00$95$ff
Link to comment
Share on other sites

Weird how some companies cling to protocols originally developed for use over slow serial data lines back in the 90s. (Just guessing by the looks of things.) Me thinks it shouldn't have been too hard for them to provide an compatible, readable  alternative protocol for use over IP. When running at Ethernet speed, cramming as much as possible into raw hex byte sequences with a checksum makes no sense. I would assume they have the computing horsepower in those projectors to deal with ASCII strings.


Having such a readable version wouldn't stop them from also supporting the binary protocol, should they need to do so for backward compatibility. Internally, both dialects could map onto the same implementation, so there wouldn't be any significant overhead. I guess just the savings in support issues would pay for the developer.





Link to comment
Share on other sites

Hi all,


I can now confirm that the shutter and lamp control worked as charm with the Flexes. And the Thomas quidelines made possible to change the PIP window source. But the PIP must be enabled first.. Many thanks for you guys for the help.


But as activation of the PIP window - it seems to me that i have to activate layout configuration and it has a name as a Cstring. The manual has the string syntax on page 10

do i understand correctly - if my layout name is "custom_1" the Cstring syntax would be : ’c’ ’u’ ’s’ ’t’ ’o’ ’m’ ’_’ ’1’ $00


the manual for setting the layout is on page 112-113 - ill try to make something out, maybe someone can check my syntax


and the command should be something like this:


$fe$00$20$90’c’ ’u’ ’s’ ’t’ ’o’ ’m’ ’_’ ’1’ $00$??$ff


$fe is the Barco start byte as specified by Barco
$00 is the Device Address
$20 set adj
$90 adj layout
’c’ ’u’ ’s’ ’t’ ’o’ ’m’ ’_’ ’1’ $00 layout file name as C-string
$??/checksum calculation missing/
$ff End Byte Barco
Am I in the correct path?
with great gratitude for all of you
Link to comment
Share on other sites



I think you are on the right path.


To calculate the checksum -

1. Print out this reference chart from: http://ascii.cl/htmlcodes.htm

It gives you the full ASCII - Hex up to at least ASCII 255


2. Using the table, convert all hex to their Decimal values and add up from the Device Address through to all the Command codes. In your example above, it would be 00 + 20 + 90 + 00 in Hex, 0 + 32 + 144 + 0 in Decimal, which = 176 in Decimal.


3. Since modulo is essentially the 'Remainder' value, and Barco uses modulo 100 (hex) or modulo 256 (decimal), the value 176 is less than 256, so 176 is the Remainder = Checksum. (There are no negatives in the case of Checksum for the Barco). Converting 176 to Hex using the table = B0


For any other resultant value > 256, subtracting 256 from such value gives you the Remainder in Decimal, which you then convert back to Hex with the table to obtain your checksum.


Hope that's clear!


Link to comment
Share on other sites

Mmm...the table reference I gave seems to be missing Decimal 0 - 31 which you can get/add to the printout from the 'ASCII codes' tab on the left of the page given.


Also, additional to what I've just posted, it would seem that simple low valued Hex numbers can be shortcut to 'a Decimal addition' to get the Checksum in Hex.

Examples, re Shutter there are 2 ways with Barco -


Shutter Close: $20 + $42 +$00 = $62 (Command 3.258 - set Shutter Position, write)

Shutter Open: $20 + $42 + $01 = $63 (Command 3.258 - set Shutter Position, write)


or using Cowboyclint's codes which are Commands 3.31 (pg 24 - Decrement Shutter, write) and 3.161 (pg 89 - Increment Shutter, write) -

Shutter Close: $23 + $42 + $00 = $65

Shutter Open: $22 + $42+ $00 = $64


BUT, this does not work for all values. Best to double-check via the 'Hex-Decimal-Hex' route unless one's Hex maths is good.



Link to comment
Share on other sites

It most likely should not be


   ’c’ ’u’ ’s’ ’t’ ’o’ ’m’ ’_’ ’1’ $00


unless the device expects to see all those quote characters. It should probably be 




But the real PITA will be to get that pesky (and for IP comms totally redundant) checksum correct.


The engineers are perfectly happy…



Tell them they should design their protocol for their customers, not their engineers. ;-).



Link to comment
Share on other sites

(disclosure: I work at Barco...I also feel your pain!  :) )


Agreed, the 'classic' Barco protocol is going on 20+ years, it is definitely showing its' age.


Having now worked for several projector manufacturers in my career, I admittedly get to see a little bit more under the hood and frankly it is quite a marvel to see how well the multiple embedded systems found inside a typical projector work together. There are a lot of things going on inside these projectors and they generally don't all speak the same language. The good news with the HDX is that anything that can be done in the OSD can generally be accomplished via protocol.  The bad news is that the classic Barco protocol is very 'bare-metal' and the protocol document currently lacks command examples and responses to make it more bearable for control system programmers (be glad you dont need to extract lamp hours for a touchpanel, it is quite an exercise in ninja programming-fu to do something that should be easy and common! :huh: )   All that being said, there are efforts underway to improve the readability of the protocol document and adding more examples of commands and responses in order to make the protocol a bit more friendly to we mere mortal humans.  :ph34r:


To help with the modulo checksum:

A commonly overlooked tool for working with hex-based control protocols is the good-old Windows Calculator in Windows 7! (not sure about 8). 

I use this all the time to help me when I am working with control systems and programming tools.

By starting up Windows Calculator and navigating to: View > Programmer (or Alt + 3) you see you can easily flip back and forth between hex and decimal notation!

So for those of us that aren't computers we can easily calculate checksums. In hex mode, use the hex numbers in your command to add up the checksum.


Then, for the modulo checksum, take the result and press 'mod' and 100 and then = to confirm you have the right result.


Hope this helps. 


-Bill Gillette



Link to comment
Share on other sites

Thanks Bill for the tip re Windows Calculator. Works a treat...even with Win 8.1. Now I know who I can turn to when I have a problem with the Barco.


I have had "to extract lamp hours" from 5 units of HDX-W18. I was using ISEO show control which fortunately allowed me to split the 2-digit hex codes and work on them in order to obtain the lamp hours. Having said that, the client, located in another country, has not yet replied as to whether my exercise was successful. Presently I think he is continuing to use Barco's toolset to read his lamp hours till we can update his master show control program.


Thomas Leong

Link to comment
Share on other sites

  • 4 months later...

On this same topic, does anyone know the control sting for change of input?  I have Barco CLM-10+ that I have had very good success with shutter open and close control strings and I would like to change inputs via Watchout.  I was looking at the control strings above for setting PIP and my head exploded.  thanks

Link to comment
Share on other sites

It would seem that one has to make sure you are addressing the input selection to the correct window for it to work.

And it would seem that there are only 2 windows for the CLM: 0x00 for main, and 0x01 for PIP.

Therefore, try this -


0xfe 0x00 0x8f 0x88 0x00 0x01 0x18 0xff


In Watchout, it is -



and maybe -

$fe$00$8f$88$00$01$18$ff$0D if the carriage return is required.


where -

$fe is the Start byte

$00 is the projector address (check with the onboard CLM menu for projector address; or use the menu to set it to 0

$8f$88$00 is the prefix 'layout window selection' per 2.49 of the CLM manual (and where $00 is the main window selected)

$01 is input 1 selected; else change it to $02 for input 2 selected

$18 is the checksum byte (modulo 100 of the sum of 8f + 88 + 00 + 01, i.e. to work in Decimal, convert each hex byte to decimal, sum and subtract 256, and convert the remainder to hex)

$ff is the stop byte


Hope that works!

Link to comment
Share on other sites

  • 9 months later...

Hi all,


We would like to send a command string to the Barco E2 from Watchout.     (Take)


I must say the strings are new for me.


The E2 manual says the sting is "ATRN 100" (Transision over 100 frames) or "ATRN 0" (Cut)


The E2 server  is on the same network and in the same network range.

I am sending over TCP protocol and over the port 9878.

A friend of mine managed to do it with widgit disigner with folowing string...   TCPSnd,1,ATRN 0[CR LF]


Does anybody know the exact sting to send from watchout?


I can't find it.


All input is appreciated!

Thanks for your help!


Grtgns  Jan

Link to comment
Share on other sites

  • 8 months later...

Hi Jan,

I am also trying to control the E2 from Watchout.

Did you manage to figure it out?

I'm not having much luck finding the correct syntax.

I can control it with a telnet session using:

PRESET -r 1 (this recalls preset 1)


PRESET -a 1 (this recalls preset 1 and auto transitions the preset to program).


but can't get it working in WO.

Any advice would be greatly appreciate.



Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Create New...