Wanted // PJLink App for Mac OSX (Projectors & networks)

I am looking to develop an app for the Mac OSX that can facilitate networked control of PJLink enabled projectors. Most all modern projectors support this. More info here: http://pjlink.jbmia.or.jp/english/

This program should be able to talk to a number of projectors over a local network. (Over the World Wide Web would be great too!)

It should be able to:

  • Turn a projector on or off directly
  • Turn on or to a schedule
  • Adjust Brightness
  • As well as allow selection of video sources
  • All supported in the PJLInk protocol.
  • I would like a simple GUI to be used to enter new projectors, enter IP address, passwords if applicable, as well as the scheduling.
  • It needs to run 24/7.

A program like this already exists, but is only for the PC. It is called Epson EasyMP Monitor. My installation needs to run on a Mac however. Rather than run a Virtual Machine I would like to have a stand alone app run natively on OS X. A VM, plus a Windows license, costs abut $250. So I would like to start around there for the budget on this app. I figure that instead of using the VM path we could open up folks on the Mac to interface with projectors over a network.

The program needs to be open-source and the agreement would allow for my me to host it on my Git Hub while crediting the programmer(s) fully.

The program needs to be standalone. As in an app you double click. One I can put on a thumb drive and share with a friend. No dependencies, no special drivers, libraries, etc.

I have listed some libraries and areas to start in. I would like for it to be written using the OpenFrameworks (C++) library listed but it can use any of the implementations listed - Python, Perl, or Node.js - as long as it will meet the above criteria.

Some of the programmers who have made the Windows implementations stated it was very easy and were able to accomplish this in an afternoon. I do not have these skills, however I understand it is easily possible for those who do. I would like to see if an individual or group could help facilitate this development.

Feel free to reply directly to Casey (at) Sensebellum (dot) com

Here are links to documentation of previous implementations
OpenFrameworks: https://github.com/nullboundary/ofxPJControl
Node.js: https://github.com/sy1vain/node-pjlink

Here are links to documentation of previous implementations
Python: http://blog.flowblok.id.au/2012-11/controlling-projectors-with-pjlink.html
Perl: http://search.cpan.org/dist/Net-PJLink/lib/Net/PJLink.pm#get_power()


Here is a start point, take a look at the code : https://github.com/nullboundary/ofxPJControl

Also did a small app using Qt (using PJLINK but without password management) maybe you could find some good info here too : https://github.com/martialgallorini/gsController

Feel free to contribute to both these projects

Also there is this app i use. Nice and cheap : http://halfdanj.dk/projectorremote/

Gotta love it, thank you very much for the suggestions!

I will most likely try the MIDI path and write a little bit of a timer in Processing.

Frankly, I am not as verbose in OpenFrameworks to implement many of these projects in a fresh manner. However, I do believe that the lower two links could suffice for what I need to do. I will experiment with these a bit over the weekend.

Thank you Gallo,

you are welcome,

keep us informed about your project

Ended up laying with the cheap and easy program you recommended. I like it. Very simple. yet I am not sure if it is connecting properly. And frankly, I am not sure if my projector actually supports the PJlink protocol.

I contacted to the maker of the software and shared this video. Just posting it here for a continuum of progress.


is this an Epson H314B ? if yes, then it is not PJLINK compliant
you need to follow the epson communication protocol and connect to the correct port (PJLNK port is 4352 if i remember) which is probably different from PJLINK port

try to find protocol specifications and connect using telnet then send command

Hi Gallo,

This is an Epson Powerlite 1960, not sure if that matches with your technical descriptor.

I found something like this. Note the PDF in the lower portion. It got pretty technical quickly. But I think this might be along the right train of thought.


Yes. Since they don’t seem to specify the ethernet port i think they may go for the standard telnet port to communicate.

try connecting with opening a terminal and enter the command :

telnet your_IP_address 23

you should be connected

then issue the epson command (with the projector turned on) :


and then


If command is OK you should see video mute and unmute

keep us informed

I will certainly try that.

I have found that this product, called the PowerTail Switch, can be used to remotely turn on AC power. There is a feature in the Epson 1960 that allows for it to turn on immediately if power is cut.

I just turn it on when needed. I looked extensively and there is no cool down feature in the projector so I am fairly confident this is safe.

it seems a bit complicated and well… the hard way ! but hey if it works like this :slight_smile:

I would still recommend the network way using this in a script. For example to turn the projector on in PJLINK :

echo '%1POWR 1\r' |  netcat IP_address Port

Yeah it is a bit round about but I haven’t found many programs that handle the scheduling aspect yet.

I have found one by SigmaSix called Projector Manager. http://www.sigmasix.ch/projectormanager/

It works the best out of the box yet. I just need to set the projector to DHCP mode. The app allows me to turn the projector off, switch sources, etc in DHCP mode (selected in projector menu). But… I am not able to turn it back on… I believe this is because the IP address is reset so it won’t respond.

I tried turning the projector to a static IP mode. But I was not able to find a cocktail of IP addresses, subnets, and masks to get it to be recognized at all. However, I think if this works it could make a reliable connection when starting up.

Your Projector and your computer must be on the same VLAN. Example :

Projector : static IP
IP :

Computer : static IP
IP :

Gateway should not be needed

So sounds like set the computer to be a static IP.

Then also set the Projector to be a static IP.

Both as listed above

And then we might have more connectivity. I will certainly give that a try bright and early in the morning.

So I almost have it. I cannot enter a blank “Gateway Address”. I.e. What should I enter if you say it is not needed?

Thanks for the help!

you can use your computer IP

Interesting. So I put my computer IP as the Gateway address?

I will try that next!

i usually do that when projectors and computer are connected together.
If you are using a router or an internet box, use the router or box IP : usually or or something similar

Thank you for the clarification.