Controlling JVC projector through TCP/IP using hex commands

I have a JVC D-ILA DLAX500R. I would like to be able to turn it on and off and see what state it is in. I do not need to use other commands because I do not switch inputs.

The user guide says it uses a handshake where you:

The PC or Controller should first request a TCP/IP connection using the standard
TCP/IP Three-Way Handshake to the projector on Port 20554

When a network connection request is received, the projector will respond immediately
with “PJ_OK” to confirm that it is available.

In order to maintain the network connection, the external controller must then respond
to the projector within 5 seconds with “PJREQ”.

The projector will then respond immediately with “PJACK” to acknowledge that it is
ready to accept a command.

The command can now be sent. This command can be any of the hex commands
shown on pages 3-13 or any of the Acknowledgement Response Requests on pages
15-18. The command must be sent within 5 seconds of receiving “PJACK” from the
projector, otherwise the projector will close the network connection.

Power - Off: 21 89 01 50 57 30 0A
Power - On: 21 89 01 50 57 31 0A

I didn’t see a code to ask for the state but I might have missed it not knowing exactly what to look for. Here’s the guide:

The user guide recommends using a program called Hercules ( to test the codes. I downloaded this to my windows laptop and successfully controlled the projector. I found that if I “make the connection”, wait 3 seconds, hit “PJREQ”, wait 3 seconds, then hit the “Command”, it seems to work well. I think the three successive commands with a 3 second pause between will make this difficult.

Does anybody know how to use this information to make it work in Home Assistant?

I hope I’m posting this in the right place. I have been working on setting up Home Assistant for 2 months and I’ve learned a ton, but I started from the bottom so please be patient with me. I was one of the ones that had to learn what DHCP and DNS servers were. I have no coding experience. I’m using HASSIO on a Raspberry pi using an SD Card.

Thanks in advance.

Bump. I’ll be happy to make a $20 donation to the worthy charity of your choice (in addition to the HA guys) for your help. Thanks

I’m in the exact same boat. Did you ever get this solved? I’d add $20 to the pot…

To my knowledge, there’s no TCP/IP component available. However, someone else had a similar need (control relays via TCP/IP) and the solution was to use linux’s nc command (netcat) via Home Assistant command_line switch component.

I’m still trying to get this figured out. Currently I’m using the Web 2-way plug in for control4 to send an http command to have Control4 turn on and off the projector. If I figure out how to cut the Control4 part out of it, I will post on here. I can do it using the Hercules app (not on HA), so I feel confident that it can be done, I’m just not knowledgeable enough in this area. Hopefully, you can beat me to it though :slight_smile:

If you have control4, let me know and I can show you what I did.

Hey mate, I’ve got a DLA-X5900 and I’ve got a working module with on/off and lens memory commands. I believe your projector should use the same commands for on/off. I didn’t see the need for the other commands, so I left them out, but should be able to add them, it’s relatively straightforward.

I have tested on hassbian, not sure what you are running, but I will get the module added to PyPi and upload the custom component to github in the next couple of days. If I forget, just reply and I’ll get on to it.

Hey guys I am trying to achieve the same thing with a TCP based thermostat. Any ideas how HASS can emulate the three way handshake?

You can write a python or bash script that communicates with the device using the socket module (python) or netcat (bash).

Great, do you know of any examples of this in HASS or elsewhere?

I don’t know of any specific examples that do the three way handshake. For a thermostat you’d probably want to write a custom component, so you’d have a python file with a class that communicates with that component and another file with the homeassistant component code. When I upload the code for the JVC projector, you’ll be able to see how to write the code that communicates with the device, as well as how to interface that code with a remote component, however if you need a different component you’ll have to go through the ones in the homeassistant source to get an idea of how to do it.

Perhaps if you make your own post, others might be able to weigh in with alternative solutions.

Thank you, I don’t have any coding knowledge so I look forward to your JVC projector component (any comments in the code would be great :sweat_smile: ) I have made my own post so we’ll see if there’s any other options.

1 Like

Why don’t you use a RM Mini 3 to emulate your remote control?

It is $20,- (the amount you would spend to charity)

It is quick, easy and cheap.

Whilst it is definitely an option, I am not a big fan of IR control for automation. With serial/IP control, the projector is able to report its state to the controller.

Since the IP control is available and works quite well, I see no reason to default to IR.

@johnnypink1, @andydmack , I’ve made a post for my remote.jvcprojector component here.

Looks great - but unfortunately I’m using Hassio and can’t install your module using PIP. Is there a way to install on Hassio?

I will look into deploying it as an add on.

Thanks for the reply. My retina detached so I’m laid up for a week after surgery. I’ll give it a try when I’m back on my feet. Didn’t want you to think I was ignoring your efforts :slight_smile:

1 Like

I have added a Dockerfile based on examples, so it might work as a addon. I don’t have to test, so if you get the time, please try to install it and let me know if the logs throw up any errors.

I tried to install it as an add-on in hassio and I got this:

“Integration jvcprojector not found when trying to verify its remote platform.”

Any ideas on anything I should try? Thanks

It is most likely an error with my configuration of the add-on. I will get running on a spare sd card in the next couple of days so I can do some testing.