Page 1 of 1

What is this IR signal format?

Posted: Sat Sep 18, 2021 8:57 pm
by jzef
I have a very old MegaPilot LPT device and software.
The program saves the recorded IR codes in ASCII format in the Windows registry. In hex it looks like this:

Code: Select all

8583F2F6828580F68088F3F682F0F68886F682F2F68388F682F0F683F3F682F0F683F5F682F0F683F3
F682F0F683F5F682F5F68388F682F0F683F3F682F0F683F5F682F0F68884F682F0F68886F682F2F688
82F682F0F68884F682F0F68886F682F0F68884F682F0F68886F682F2F68388F682F0F68884F682F0F6
83F5F682F0F68884F682F0F683F5F682F5F68388F682F0F683F3F682F0F683F5F682F0F68884F682F0
F683F5F682F5F68882F682F0F683F2F682F0F68886F682F0F68884F682F0F68886F682F0F68884F682
F0F6F48782
Is it some known format that can be converted with some program e.g. IrScrutinizer or IRScope?

Posted: Tue Sep 21, 2021 9:33 am
by jzef
This is IR code from POWER button NEC Addr=01 Cmd=01

Maybe someone knows how to convert Addr, Cmd to this format - 210 bytes HEX ?

Posted: Tue Sep 21, 2021 11:04 am
by 3FG
The string can be split up in the following way:

Code: Select all

 85 83 F2 F6 82 
 85 80 F6 80 88 F3 F6 82 
 
 F0 F6 88 86 F6 82 
 F2 F6 83 88 F6 82 
 F0 F6 83 F3 F6 82 
 F0 F6 83 F5 F6 82 
 F0 F6 83 F3 F6 82 
 F0 F6 83 F5 F6 82 
 F5 F6 83 88 F6 82 
 F0 F6 83 F3 F6 82 
 
 F0 F6 83 F5 F6 82 
 F0 F6 88 84 F6 82 
 F0 F6 88 86 F6 82 
 F2 F6 88 82 F6 82 
 F0 F6 88 84 F6 82 
 F0 F6 88 86 F6 82 
 F0 F6 88 84 F6 82 
 F0 F6 88 86 F6 82 
 
 F2 F6 83 88 F6 82 
 F0 F6 88 84 F6 82 
 F0 F6 83 F5 F6 82 
 F0 F6 88 84 F6 82 
 F0 F6 83 F5 F6 82 
 F5 F6 83 88 F6 82 
 F0 F6 83 F3 F6 82 
 F0 F6 83 F5 F6 82 
 
 F0 F6 88 84 F6 82 
 F0 F6 83 F5 F6 82 
 F5 F6 88 82 F6 82 
 F0 F6 83 F2 F6 82 
 F0 F6 88 86 F6 82 
 F0 F6 88 84 F6 82 
 F0 F6 88 86 F6 82 
 F0 F6 88 84 F6 82 
 
 F0 F6 F4 87 82
where the last two bytes of each line is F6 82. Skipping the first two and the last lines, there are 4 sections of 8 lines each, apparently corresponding to the 32 bit format of NEC. Note that in the 32 bits, the third column is made up of either 88 or 83, and the values for the second byte are the complement of the first. Similarly for 3rd and 4th. Just looking at the third column bytes, I would guess this signal is device 1 and command 10.

Every byte begins with either 0xF or 0x8, so that nibble must be a flag of some kind.

If the 4th byte is 88, then the third byte is 83.

As a general comment, it is helpful to have more than one known signal, and also to have the command value different than the device number.

Posted: Tue Sep 21, 2021 11:42 am
by The Robman
It's very difficult with just one sample to work with. Ideally, you'd want to see the same signal learned several different times, so we can see what sort of variance to expect in identical signals (ie, learning error tolerance). Then we'd want to see several different samples, like CMDs 2,3,4,5 or maybe Addr 2,3,4,5.

To help you try to solve this yourself, here's the binary string that you should try to find in that hex:
10000000 01111111 10000000 01111111

From a timing point of view, the 1's and 0's are like this:
1 = +550 -1650
0 = +550 -550

Posted: Tue Sep 21, 2021 1:18 pm
by jzef
3FG wrote:The string can be split up in the following way
Very thx :)
Yes, now this look clearly. Probably the first two sections are the encoded device address Addr and the next two are the command Cmd (button address)
Image
3FG wrote:Every byte begins with either 0xF or 0x8, so that nibble must be a flag of some kind.

If the 4th byte is 88, then the third byte is 83.
Yes, in fact you are right - it shows now.
3FG wrote:As a general comment, it is helpful to have more than one known signal, and also to have the command value different than the device number.
OK, I'll teach the MegaPilot two other buttons a couple of times and I'll post the results here.

Posted: Tue Sep 21, 2021 2:44 pm
by jzef
OK, these are three instances of the same button Addr = 01 Cmd = 08 (EPG):
Image

P.S. I arranged it by hand :roll:
Maybe I can somehow automate in linux terminal with awk, cut ???

Posted: Tue Sep 21, 2021 9:17 pm
by The Robman
At first glance, it looks like all the data in the 32-bit portion is identical, meaning that every bit must be important. Normally, when we "raw data" for learns, there's a lot of variation between captures because timings are approximate.

Posted: Tue Sep 21, 2021 11:32 pm
by jzef
This is menu button 01 0a:

Code: Select all

F3 F7 F2 F6 82
89 F5 F6 80 F3 F4 F6 85

83 F6 F0 80 F6 82
F7 F6 82 81 F6 85
83 F6 83 F5 F6 85
83 F6 83 F4 F6 85
83 F6 83 F5 F6 85
83 F6 83 F4 F6 82
F7 F6 82 81 F6 85
83 F6 83 F5 F6 85

83 F6 83 F4 F6 85
83 F6 F0 81 F6 85
83 F6 F0 80 F6 82
F7 F6 F0 82 F6 85
83 F6 F0 81 F6 85
83 F6 F0 80 F6 85
83 F6 F0 81 F6 85
83 F6 F0 83 F6 82

F7 F6 82 81 F6 85
83 F6 83 F5 F6 85
83 F6 83 F4 F6 85
83 F6 F0 80 F6 85
83 F6 83 F4 F6 82
F7 F6 82 81 F6 85
83 F6 83 F5 F6 85
83 F6 83 F4 F6 85

83 F6 F0 81 F6 85
83 F6 F0 80 F6 82
F7 F6 F0 82 F6 85
83 F6 83 F5 F6 85
83 F6 F0 80 F6 85
83 F6 F0 81 F6 85
83 F6 F0 83 F6 85
83 F6 F0 81 F6 85

83 F6 F7 F3 81

Posted: Sun Sep 26, 2021 5:01 am
by jzef
I recorded more buttons and made a bash script displaying the data as it showed 3FG:

Code: Select all

hexdump -C button.bin | awk '{
if(NR ==1) {printf "%s %s %s %s %s\n%s %s %s %s %s %s %s %s\n\n%s %s %s ", $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16, $17}
if(NR ==2) {printf "%s %s %s\n%s %s %s %s %s %s\n%s %s %s %s %s %s\n%s ", $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16, $17}
if(NR ==3) {printf "%s %s %s %s %s\n%s %s %s %s %s %s\n%s %s %s %s %s ", $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16, $17}
if(NR ==4) {printf "%s\n%s %s %s %s %s %s\n%s %s %s %s %s %s\n\n%s %s %s ", $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16, $17}
if(NR ==5) {printf "%s %s %s\n%s %s %s %s %s %s\n%s %s %s %s %s %s\n%s ", $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16, $17}
if(NR ==6) {printf "%s %s %s %s %s\n%s %s %s %s %s %s\n%s %s %s %s %s ", $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16, $17}
if(NR ==7) {printf "%s\n%s %s %s %s %s %s\n%s %s %s %s %s %s\n\n%s %s %s ", $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16, $17}
if(NR ==8) {printf "%s %s %s\n%s %s %s %s %s %s\n%s %s %s %s %s %s\n%s ", $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16, $17}
if(NR ==9) {printf "%s %s %s %s %s\n%s %s %s %s %s %s\n%s %s %s %s %s ", $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16, $17}
if(NR ==10) {printf "%s\n%s %s %s %s %s %s\n%s %s %s %s %s %s\n\n%s %s %s ", $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16, $17}
if(NR ==11) {printf "%s %s %s\n%s %s %s %s %s %s\n%s %s %s %s %s %s\n%s ", $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16, $17}
if(NR ==12) {printf "%s %s %s %s %s\n%s %s %s %s %s %s\n%s %s %s %s %s ", $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16, $17}
if(NR ==13) {printf "%s\n%s %s %s %s %s %s\n%s %s %s %s %s %s\n\n%s %s %s ", $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16, $17}
if(NR ==14) {printf "%s %s\n", $2, $3}

}'
buttons.zip

Posted: Sun Sep 26, 2021 8:47 am
by The Robman
When I click on that click it takes me to some scary site which requires registration, etc. Please load a copy to our Diagnosis Area instead.

https://www.hifi-remote.com/forums/viewt ... p?t=102759

Posted: Sun Sep 26, 2021 11:20 am
by jzef
OK, sorry. Here is the file: buttons.zip

Log files are in Linux format, so under Windows it is best to open them in WordPad.