Epson IR files

I have been searching the internet for a few days now to find the infrared codes for the Epson Powerlite W49 projector. I have looked on the ProntoIR converted files and this GitHub folder but have not found any file for this projector. I have used the learn remote app on my Flipper to attempt to replay these infrared codes which read one code the moment the button is pressed but if I retry while still holding the button I get a completely different code.

(Sorry if I’m missing something I just got into the Flipper Zero)

1 Like

It’s possible the remote sends two different codes depending on whether you press a button or hold a button. Have you tried the other Epson projector IR files in the IRDB? If any of the buttons in those work we can begin to put together a file for your projector. Maybe one is fully compatible.

I have tried many other ir files from different repositories to no avail.
The one remote that has worked was the universal projector remote but it seems to recognize the signal only once for an extended period of time.

1 Like

I don’t know how dedicated you are to figuring these codes out but brute force is an option. I went through just over 65000 codes twice to figure out the codes to my TV. It’s a pain but I have added them to the IRDB so they are now available to everyone. If you want to give it a try I’ll help you through the process.
Here is my thread to get an idea of what it takes.
https://forum.flipperzero.one/t/brute-force-fire-tv-ir-codes/

I may turn to bruteforcing but I do know that one of the codes that the remote would give me would be for the power button. The recorded information was

type: parsed
protocol: NECext
Address: 83 55 00 00
Command: 90 6F 00 00

I don’t know if this information can narrow the field a bit but I hope it can.
After some more research I also found that each remote needs to select an ID to control the correct projector.

1 Like

Yes that helps. First notice we now have the protocols and address. Luckily we have a code of the type Parsed. Now it’s only the “Command” field we must brute force. Looking at the command you will notice the second half is 00 00. That’s good because chances are we only need to worry about the first half.

When we look at the first part I will remove the space.
906F which if I convert to decimal = 36975

The minimum number in that field is 0000 which = 0
The maximum number in that field is FFFF which = 65535

What we want to do is iterate over those numbers 0 - 65535. For the next step I need to know which firmware you use on your Flipper. I’ll generate some brute force files using a python script I wrote but it has to be tailored to your firmware version. I’ll have to warn you it’s a long process to brute force the codes.

You will replace the Universal TV ir file with the files I created. You will then run each file and note whether the project responds to code in that file. You will also note approximately what percentage the Flipper says it is at in the IR file and what command you think it activated. You don’t have to be perfect with the percentage.

Then we will break the files that worked into smaller files. We continue to do that till we find the correct code.

1 Like

I’ve also just found one button that consistently works, the recorded button is this:

type: parsed
protocol: NECext
address: 83 55 00 00
command: 31 CE 00 00

The forum won’t put my message through saying it’s awaiting approval. I am on the latest version of the un-leashed firmware.

I’ll create the code tonight. I want to see if I can optimized it a little more so you don’t have to work as hard as I did.

1 Like

I just figured it out today. The remote it turns out sends two codes one after the other as you press and hold the buttons down. What I had to do was delete most of the data from the universal projector file and replace the original addresses and commands with the two that the remote put out. Sadly I will have to edit the firmware code if I want it to have all the buttons on the remote but the code looks something like this now.

Filetype: IR library file
Version: 1

Last Updated 26th Dec, 2022

Last Checked 26th Dec, 2022

ON

name: POWER
type: parsed
protocol: NECext
address: 81 03 00 00
command: F0 0F 00 00

name: POWER
type: parsed
protocol: NECext
address: 83 55 00 00
command: 90 6F 00 00

name: MUTE
type: parsed
protocol: NECext
address: 81 03 00 00
command: F0 0F 00 00

name: MUTE
type: parsed
protocol: NECext
address: 83 55 00 00
command: 92 6D 00 00

I’ll see if I can manipulate something. I wish those codes were in the raw format. It’s easier to change that way.

I guess another question I would have would be is there an easier way to make the flipper zero run through a few infrared commands without having to edit the universal IR remotes? I’ve looked around a bit but haven’t seen anything of the sort.

If you are using infrared - saved Remotes, you can just add a new f.ir file, with a button for each desired code.
In your example above, you need to rename one POWER to something like POWER1.

The main difference in that case:

  • The Universal Remote will send a bunch of codes
  • The Saved Remote will send one code per Button

If we can figure out the RAW format for those codes I think you can just paste the codes end to end as one button.

Is there a way to force the infrared app to read the infrared signals in a RAW format?

1 Like

Not that I’m aware of. I’m wondering if there is a way to convert to raw somehow like playing it on the flipper and capturing the result with another device. Then convert it to Flippers RAW format.

EDIT:
There might be a way. Recompile the firmware without NECext. Then it will default to RAW.

1 Like

See if this works.

epsonc1.ir (1.4 KB)

Here is a file with the IR Codes, you’ve mentioned so far: Flipper-IRDB/Epson_EB-695Wi.ir at main · logickworkshop/Flipper-IRDB · GitHub

One Level above are some similar files with more or Less Buttons: Flipper-IRDB/Projectors/Epson at main · logickworkshop/Flipper-IRDB · GitHub

The IR signal is a series of high and low. At the moment I have no Laptop/desktop around, to see if the other Hex values are just inversing, so the projector interpret the signal, even if it is not the right one.
Shouldn’t happen, because we have a protocol with start and stop bits, but in the end the values are interpreted waves with a approximated timing. So I am not wondering, if the tolerances are bigger than expected. But in the end the true value makes the reversing easier.

I’ll try this asap. Also the mute button in my program actually sends the freeze signal for the projectors.

The projector will not respond more than once to the codes in this file. It has to receive the 0FF0 code to actually accept another code.