PJLink Troubleshooting
-
@Woland just to confirm - the port in the Isadora PJLink actor is set to 4352. Using the test application or Telnet, I can turn the projector on and off using this port. Isadora gives me the "initial response not PJLINK" error message. When I change the IP address in the actor to one of my Epson projectors, everything works. Let me know if I can do anything to troubleshoot, I'm happy to invest some time getting this to work. The installation will only be launched in September so it would be wonderful to find a solution until then. Alternatively I'm considering writing a shell or Python script to automate power on/off, but it would be amazing to have everything within Isadora. Thank you!
-
From the manual for the Optoma ZH406ST:
This projector supports all commands of PJLink Class1 (Version 1.00).
http://pjlink.jbmia.or.jp/english/That being said, could you please:
- Try this test file with your two projectors PJLink Test.izz.zip.
- Let me know the model number of your Epson projectors
- Let me know the IP address of your Optoma and Epson projectors
-
@woland Sorry again for the delay. I tried your test file and it gives me the exact same result.
My Epson projectors work with Class 1 commands but not with Class 2. The Optoma gives me the "initial response not PJLINK" error on any command or query sent with the PJLink actor.
The Epson projectors I tested with are EB 700U and EB 2265U. All works perfectly on these.
Regarding IP adresses, initially I had all projectors on a 192.168.0.X network with DHCP. Currently I have them on separate network adapters due to the requirements of the installation, so the Epson 700U is set to a static IP of 192.168.1.2 and the Optoma ZH406ST is set to 192.168.2.2. Things continue to work for the Optoma with the PJ Link test application, but not with Isadora.
I did notice that the Optoma's network functionality seems generelly less mature and stable compared to the Epsons. It took me a few minutes and restarts to make it remember the static IP I set it to.
Thank you!
-
Update: Seems like other people are having problems with some projector brands' PJLink implementations. Apparently Optoma, Benq and some NEC projectors don't return valid standard class PJLink replies. So it might not be an Isadora-specific problem. Strange though that the official PJLink test app works despite this. Does this mean PJLink from Isadora categorically doesn't work with these brands due to their non-standard implementation? Is there any way to ignore the incorrect response, since the actual functionality does seem to work when the commands are sent from the test app or Telnet?
References:
- "Known Issues" note on https://www.sigmasix.ch/projec...
- https://forums.openlp.org/disc...
-
So we beta tested the PJ Link application before, and we tested it with the Test application and a few projects that I and others had lying around that where PJ Link enabled. Like you can imagine, we haven't tested out every single projector in the market. But if a projector is not sending PJLink commands in the order / described as in the protocol documenation then you can hardly say that Isadora is the fault ;) This is a Projector error. Regarding why it works with the Test application, it seems that they are not validating the response from the Projector to verify that it is as described in the protocol documenation. Could Mark add a way to still make it work with your projector, I think so. Some kind of hidden input field with an option to disable verifaction would already go a long way for your use-case / projectors.
Could you log the above ? It is kinda a bug-report / feature request.
-
I am happy to make an update to the Send PJLink actor, but I'm going to need some documentation on the replies that are actually being sent. Unfortunately, I don't have access to the models of projectors you mention, and so it's sort of impossible for me to try this and find out what's happening.
I guess I need to implement some way to write out the transactions.
(Sidenote: @Maki it is the convention in this forum to add your primary operating system and hardware to your signature line. Could you please add that? Having it there would have saved me from asking the next question.)
Are you running on macOS or Windows?
Best Wishes,
Mark -
Thank you! That's amazing. I can provide our Optoma projector for testing (based in Vienna), or give remote access to the computer connected to it. Or run tests and report the results.
Regarding OS, I work with both Mac and Windows. This particular project will be run from a Windows PC. Will add this to my signature. Conventions are important :)
-
Here's a special version of the PJLink actor that will output a "log" of the communications with your projector.
1) Set up all the parameters to talk to your projector, make sure it's at least trying.
2) Leave the scene and come back to clear the log output
3) Attempt to send a message to the projector
4) Click the 'log' output and copy all the text inside
5) Paste that text in your response to this messageNOTE: THIS IS NOT THE NORMAL RELEASE VERSION OF THIS PLUGIN! INSTALL THIS ONLY IF YOU NEED TO DEBUG COMMUNICATIONS WITH YOUR PROJECTOR!
Here's the plugin:
send-pjlink-mac-debug-output-v3.zip
You need to install this plugin at /Library/Application Support/TroikaTronix/IsadoraPlugins_x64/ -- move the existing Send PJLink actor somewhere else, and install this special version instead.
Best Wishes,
Mark -
Thank you! I tried using the custom PJLink actor, unfortunately I don't see the log output. I tested on a Mac with a fresh install of Isadora 3.0.7. (so no risk of mixing up the custom actor with the regular one). Also tried Windows but it seems the custom actor is not working there. Is the log output supposed to be part of the actor (next to "response", "error" and "recv response")? Or should I look somewhere else?
-
Sorry, my bad. I uploaded the wrong plugin. Please download the file send-pjlink-mac-debug-output.zip from the post above and install it as instructed. This plugin is macOS only. There is no Windows equivalent at this time.
You'll see that it has the log output as shown here.
Best Wishes,
Mark -
Hey,
I downloaded the PJLink actor and connected the Optoma ZH406ST to the network.
Log when sent "Power On"
Process 0x7faa21556520: cmd '%1POWR' - param = '1'
get host name
create socket
connect to socket
wait for connection response
get response
shutdown socket
close socket
close socket err = 0
Log when sent "Power Off"Process 0x7f8d793c5740: cmd '%1POWR' - param = '0'
get host name
create socket
connect to socket
wait for connection response
get response
shutdown socket
close socket
close socket err = 0If you need any other commands sent just let me know.
Mat
-
Well, shoot. It didn't print out the actual message sent back from the projector so I can see what is wrong with it.
I've made an update to ensure that information is in the log and tested it with the emulator. So please try again. Sorry for making you do it twice.
Best Wishes,
Mark -
No problem. Thx for your help!
Power Off:
Process 0x7fc324ef2960: cmd '%1POWR' - param = '0'
get host name
create socket
connect to socket
wait for connection response
received initial response: >>>pjlink 0
<<<
initial response doesn't start with PJLINK
shutdown socket
close socket
close socket err =
Power On:
Process 0x7fc32261e320: cmd '%1POWR' - param = '1'
get host name
create socket
connect to socket
wait for connection response
received initial response: >>>pjlink 0
<<<
initial response doesn't start with PJLINK
shutdown socket
close socket
close socket err = 0Mat
-
Is the request terminated because PJLINK is not in caps ?
-
@juriaan said:
Is the request terminated because PJLINK is not in caps ?
Yep. That's it. I'll change the code so that it does not care about capitalization.
Best Wishes,
Mark -
@iink said:
No problem. Thx for your help!
OK. Hopefully this will solve it. This is still with the log enabled. Once we prove it works, I'll remove that.
send-pjlink-mac-debug-output-v3.zip
Best Wishes,
Mark -
Well done! Works. I could turn the Optoma on/off
Process 0x7feb5c28dd20: cmd '%1POWR' - param = '1'
get host name
create socket
connect to socket
wait for connection response
received initial response: >>>pjlink 0
<<<
STARTUP SUCCESS
send pjlink command = %1POWR 1
wait for response
received response: >>>%1powr=OK
<<<
ensure response starts with %1
check that response command matches sent command
shutdown socket
close socket
close socket err = 0 -
I'm back from some time off the grid, it's wonderful to see the problem has been resolved in the meantime! Heartfelt thanks! Isadora rocks, the software and the people behind it!
Would it be possible to get a version of the plugin with the log disabled, and also a Windows version? Our final piece will run on Windows.
We'll make sure to post images + video of the piece as soon as it's up. It's a permanent interactive public art installation in the 6th district in Vienna.
Thank you!
-
Mark's going to be unavailable for a little while, but I'll bring this up to him as soon as he's back.
-
Hi there Maki, I also created a custom PJLINK actor that can be found for Isadora 2.6.1. It still works for Isadora 3, and that way you may still use PJLINK if we don't hear back from Mark in time.
Could you let me know what your timeframe is that you need a solution ?
Cheers!