Author Topic: 48 bit (6 byte) IR Remote protocol and checksum  (Read 1923 times)

0 Members and 1 Guest are viewing this topic.

Offline kevinateevTopic starter

  • Regular Contributor
  • *
  • Posts: 53
  • Country: ca
48 bit (6 byte) IR Remote protocol and checksum
« on: November 04, 2018, 01:23:20 pm »
Hi all,

I'm still stuck on this darned checksum algorithm!  Has been a learning journey.  Here is what I know thus far.

Message is from an IR Remote (Type: RG57A6/BGEFU1).  Message frame is 6 bytes repeated where the second 6 bytes is the inverse of the first 6.  I'm ignoring the second 6 bytes here.  First nibble (0xA) is a constant, last byte, the 6th one, is the checksum.

Below I show the message in Hex first, then the checksum, then the same message is shown in binary, then the checksum in binary.  After the '=?=' is my attempt to calculate the checksum in binary and also hex.

In my current checksum calc, I'm reversing bytes, XOR'ing, then reversing bytes again.  The result is so close and suspiciously off, but I just don't see it.

Just found this very good document, https://www.cosc.canterbury.ac.nz/greg.ewing/essays/CRC-Reverse-Engineering.html on the general approach to CRC reverse engineering.  I'm understanding this remote protocol does not use CRC-8 but I'll try some of his techniques there anyhow.

Any ideas?  By somebodies suggestion, Hamming Window looked right but on learning about that, I don't think that fits as the checksum would have to be 6 bits and it definitely looks like at least 7 here.

0xA1 A3 4D FF FF  0x60  0b10100001 10100011 01001101 11111111 11111111 0b01100000 =?= 10110000 0xB0
{IsOn:1, Instr:1, Mode:3, FanSpeed:0, IsSleepOn:0, SetTemp:30}
0xA1 A3 4C FF FF  0x61  0b10100001 10100011 01001100 11111111 11111111 0b01100001 =?= 10110001 0xB1
{IsOn:1, Instr:1, Mode:3, FanSpeed:0, IsSleepOn:0, SetTemp:29}
0xA1 A3 4B FF FF  0x67  0b10100001 10100011 01001011 11111111 11111111 0b01100111 =?= 10110110 0xB6
{IsOn:1, Instr:1, Mode:3, FanSpeed:0, IsSleepOn:0, SetTemp:28}
0xA1 A3 4A FF FF  0x66  0b10100001 10100011 01001010 11111111 11111111 0b01100110 =?= 10110111 0xB7
{IsOn:1, Instr:1, Mode:3, FanSpeed:0, IsSleepOn:0, SetTemp:27}
0xA1 A3 49 FF FF  0x64  0b10100001 10100011 01001001 11111111 11111111 0b01100100 =?= 10110100 0xB4
{IsOn:1, Instr:1, Mode:3, FanSpeed:0, IsSleepOn:0, SetTemp:26}
0xA1 A3 48 FF FF  0x65  0b10100001 10100011 01001000 11111111 11111111 0b01100101 =?= 10110101 0xB5
{IsOn:1, Instr:1, Mode:3, FanSpeed:0, IsSleepOn:0, SetTemp:25}
0xA1 A3 47 FF FF  0x6B  0b10100001 10100011 01000111 11111111 11111111 0b01101011 =?= 10111010 0xBA
{IsOn:1, Instr:1, Mode:3, FanSpeed:0, IsSleepOn:0, SetTemp:24}
0xA1 A3 46 FF FF  0x6A  0b10100001 10100011 01000110 11111111 11111111 0b01101010 =?= 10111011 0xBB
{IsOn:1, Instr:1, Mode:3, FanSpeed:0, IsSleepOn:0, SetTemp:23}
0xA1 A3 45 FF FF  0x68  0b10100001 10100011 01000101 11111111 11111111 0b01101000 =?= 10111000 0xB8
{IsOn:1, Instr:1, Mode:3, FanSpeed:0, IsSleepOn:0, SetTemp:22}
0xA1 A3 44 FF FF  0x69  0b10100001 10100011 01000100 11111111 11111111 0b01101001 =?= 10111001 0xB9
{IsOn:1, Instr:1, Mode:3, FanSpeed:0, IsSleepOn:0, SetTemp:21}
0xA1 A3 43 FF FF  0x6F  0b10100001 10100011 01000011 11111111 11111111 0b01101111 =?= 10111110 0xBE
{IsOn:1, Instr:1, Mode:3, FanSpeed:0, IsSleepOn:0, SetTemp:20}
0xA1 A3 42 FF FF  0x6E  0b10100001 10100011 01000010 11111111 11111111 0b01101110 =?= 10111111 0xBF
{IsOn:1, Instr:1, Mode:3, FanSpeed:0, IsSleepOn:0, SetTemp:19}
0xA1 A3 41 FF FF  0x6C  0b10100001 10100011 01000001 11111111 11111111 0b01101100 =?= 10111100 0xBC
{IsOn:1, Instr:1, Mode:3, FanSpeed:0, IsSleepOn:0, SetTemp:18}
0xA1 A3 40 FF FF  0x6D  0b10100001 10100011 01000000 11111111 11111111 0b01101101 =?= 10111101 0xBD
{IsOn:1, Instr:1, Mode:3, FanSpeed:0, IsSleepOn:0, SetTemp:17}
« Last Edit: November 04, 2018, 01:25:14 pm by kevinateev »
 

Offline kevinateevTopic starter

  • Regular Contributor
  • *
  • Posts: 53
  • Country: ca
Re: 48 bit (6 byte) IR Remote protocol and checksum
« Reply #1 on: November 04, 2018, 01:32:26 pm »
Here it is by a simple sum rather than XOR (still reversing before and after )

0xA1 A3 40 FF FF  0x6D  0b10100001 10100011 01000000 11111111 11111111 0b01101101 =?= 10101101 0xAD
{IsOn:1, Instr:1, Mode:3, FanSpeed:0, IsSleepOn:0, SetTemp:17}
0xA1 A3 41 FF FF  0x6C  0b10100001 10100011 01000001 11111111 11111111 0b01101100 =?= 10101100 0xAC
{IsOn:1, Instr:1, Mode:3, FanSpeed:0, IsSleepOn:0, SetTemp:18}
0xA1 A3 42 FF FF  0x6E  0b10100001 10100011 01000010 11111111 11111111 0b01101110 =?= 10101110 0xAE
{IsOn:1, Instr:1, Mode:3, FanSpeed:0, IsSleepOn:0, SetTemp:19}
0xA1 A3 43 FF FF  0x6F  0b10100001 10100011 01000011 11111111 11111111 0b01101111 =?= 10101111 0xAF
{IsOn:1, Instr:1, Mode:3, FanSpeed:0, IsSleepOn:0, SetTemp:20}
0xA1 A3 44 FF FF  0x69  0b10100001 10100011 01000100 11111111 11111111 0b01101001 =?= 10101001 0xA9
{IsOn:1, Instr:1, Mode:3, FanSpeed:0, IsSleepOn:0, SetTemp:21}
0xA1 A3 45 FF FF  0x68  0b10100001 10100011 01000101 11111111 11111111 0b01101000 =?= 10101000 0xA8
{IsOn:1, Instr:1, Mode:3, FanSpeed:0, IsSleepOn:0, SetTemp:22}
0xA1 A3 46 FF FF  0x6A  0b10100001 10100011 01000110 11111111 11111111 0b01101010 =?= 10101010 0xAA
{IsOn:1, Instr:1, Mode:3, FanSpeed:0, IsSleepOn:0, SetTemp:23}
0xA1 A3 47 FF FF  0x6B  0b10100001 10100011 01000111 11111111 11111111 0b01101011 =?= 10101011 0xAB
{IsOn:1, Instr:1, Mode:3, FanSpeed:0, IsSleepOn:0, SetTemp:24}
0xA1 A3 48 FF FF  0x65  0b10100001 10100011 01001000 11111111 11111111 0b01100101 =?= 10100101 0xA5
{IsOn:1, Instr:1, Mode:3, FanSpeed:0, IsSleepOn:0, SetTemp:25}
0xA1 A3 49 FF FF  0x64  0b10100001 10100011 01001001 11111111 11111111 0b01100100 =?= 10100100 0xA4
{IsOn:1, Instr:1, Mode:3, FanSpeed:0, IsSleepOn:0, SetTemp:26}
0xA1 A3 4A FF FF  0x66  0b10100001 10100011 01001010 11111111 11111111 0b01100110 =?= 10100110 0xA6
{IsOn:1, Instr:1, Mode:3, FanSpeed:0, IsSleepOn:0, SetTemp:27}
0xA1 A3 4B FF FF  0x67  0b10100001 10100011 01001011 11111111 11111111 0b01100111 =?= 10100111 0xA7
{IsOn:1, Instr:1, Mode:3, FanSpeed:0, IsSleepOn:0, SetTemp:28}
0xA1 A3 4C FF FF  0x61  0b10100001 10100011 01001100 11111111 11111111 0b01100001 =?= 10100001 0xA1
{IsOn:1, Instr:1, Mode:3, FanSpeed:0, IsSleepOn:0, SetTemp:29}
0xA1 A3 4D FF FF  0x60  0b10100001 10100011 01001101 11111111 11111111 0b01100000 =?= 10100000 0xA0
{IsOn:1, Instr:1, Mode:3, FanSpeed:0, IsSleepOn:0, SetTemp:30}


 

Offline kevinateevTopic starter

  • Regular Contributor
  • *
  • Posts: 53
  • Country: ca
Re: 48 bit (6 byte) IR Remote protocol and checksum
« Reply #2 on: November 04, 2018, 01:59:15 pm »
OTG!  Finally ... found it!

All test cases appear to work! (below)

In summary, before checksum, reverse each byte from MSB to LSB.  Then do a simple sum of the bytes, AND THEN SUBTRACT 1.  Reverse the result again and there you have it.  This works for remote quoted above which is used on my Senville AURA 18000 BTU (5 Kwh) heat pump.  I understand some models of MrCool, Pioneer, and others use this protocol too.   I've put the code on GitHub at https://github.com/kpishere/GetRawIRData.

0xA1 A3 4D FF FF  0x60  0b10100001 10100011 01001101 11111111 11111111 0b01100000 =?= 01100000 0x60
{IsOn:1, Instr:1, Mode:3, FanSpeed:0, IsSleepOn:0, SetTemp:30}
0xA1 A3 4D FF FF  0x60  0b10100001 10100011 01001101 11111111 11111111 0b01100000 =?= 01100000 0x60
{IsOn:1, Instr:1, Mode:3, FanSpeed:0, IsSleepOn:0, SetTemp:30}
0xA1 A3 4C FF FF  0x61  0b10100001 10100011 01001100 11111111 11111111 0b01100001 =?= 01100001 0x61
{IsOn:1, Instr:1, Mode:3, FanSpeed:0, IsSleepOn:0, SetTemp:29}
0xA1 A3 4B FF FF  0x67  0b10100001 10100011 01001011 11111111 11111111 0b01100111 =?= 01100111 0x67
{IsOn:1, Instr:1, Mode:3, FanSpeed:0, IsSleepOn:0, SetTemp:28}
0xA1 A3 4A FF FF  0x66  0b10100001 10100011 01001010 11111111 11111111 0b01100110 =?= 01100110 0x66
{IsOn:1, Instr:1, Mode:3, FanSpeed:0, IsSleepOn:0, SetTemp:27}
0xA1 A3 49 FF FF  0x64  0b10100001 10100011 01001001 11111111 11111111 0b01100100 =?= 01100100 0x64
{IsOn:1, Instr:1, Mode:3, FanSpeed:0, IsSleepOn:0, SetTemp:26}
0xA1 A3 48 FF FF  0x65  0b10100001 10100011 01001000 11111111 11111111 0b01100101 =?= 01100101 0x65
{IsOn:1, Instr:1, Mode:3, FanSpeed:0, IsSleepOn:0, SetTemp:25}
0xA1 A3 47 FF FF  0x6B  0b10100001 10100011 01000111 11111111 11111111 0b01101011 =?= 01101011 0x6B
{IsOn:1, Instr:1, Mode:3, FanSpeed:0, IsSleepOn:0, SetTemp:24}
0xA1 A3 46 FF FF  0x6A  0b10100001 10100011 01000110 11111111 11111111 0b01101010 =?= 01101010 0x6A
{IsOn:1, Instr:1, Mode:3, FanSpeed:0, IsSleepOn:0, SetTemp:23}
0xA1 A3 45 FF FF  0x68  0b10100001 10100011 01000101 11111111 11111111 0b01101000 =?= 01101000 0x68
{IsOn:1, Instr:1, Mode:3, FanSpeed:0, IsSleepOn:0, SetTemp:22}
0xA1 A3 44 FF FF  0x69  0b10100001 10100011 01000100 11111111 11111111 0b01101001 =?= 01101001 0x69
{IsOn:1, Instr:1, Mode:3, FanSpeed:0, IsSleepOn:0, SetTemp:21}
0xA1 A3 43 FF FF  0x6F  0b10100001 10100011 01000011 11111111 11111111 0b01101111 =?= 01101111 0x6F
{IsOn:1, Instr:1, Mode:3, FanSpeed:0, IsSleepOn:0, SetTemp:20}
0xA1 A3 42 FF FF  0x6E  0b10100001 10100011 01000010 11111111 11111111 0b01101110 =?= 01101110 0x6E
{IsOn:1, Instr:1, Mode:3, FanSpeed:0, IsSleepOn:0, SetTemp:19}
0xA1 A3 41 FF FF  0x6C  0b10100001 10100011 01000001 11111111 11111111 0b01101100 =?= 01101100 0x6C
{IsOn:1, Instr:1, Mode:3, FanSpeed:0, IsSleepOn:0, SetTemp:18}
0xA1 A3 40 FF FF  0x6D  0b10100001 10100011 01000000 11111111 11111111 0b01101101 =?= 01101101 0x6D
{IsOn:1, Instr:1, Mode:3, FanSpeed:0, IsSleepOn:0, SetTemp:17}
0xA1 24 5E FF FF  0xFB  0b10100001 00100100 01011110 11111111 11111111 0b11111011 =?= 11111011 0xFB
{IsOn:0, Instr:1, Mode:4, FanSpeed:0, IsSleepOn:0, SetTemp:31}
0xA1 A4 5E FF FF  0x7B  0b10100001 10100100 01011110 11111111 11111111 0b01111011 =?= 01111011 0x7B
{IsOn:1, Instr:1, Mode:4, FanSpeed:0, IsSleepOn:0, SetTemp:31}
0xA1 8C 5E FF FF  0x4B  0b10100001 10001100 01011110 11111111 11111111 0b01001011 =?= 01001011 0x4B
{IsOn:1, Instr:1, Mode:4, FanSpeed:1, IsSleepOn:0, SetTemp:31}
0xA1 94 5E FF FF  0x5B  0b10100001 10010100 01011110 11111111 11111111 0b01011011 =?= 01011011 0x5B
{IsOn:1, Instr:1, Mode:4, FanSpeed:2, IsSleepOn:0, SetTemp:31}
0xA1 9C 5E FF FF  0x53  0b10100001 10011100 01011110 11111111 11111111 0b01010011 =?= 01010011 0x53
{IsOn:1, Instr:1, Mode:4, FanSpeed:3, IsSleepOn:0, SetTemp:31}
0xA1 A4 5E FF FF  0x7B  0b10100001 10100100 01011110 11111111 11111111 0b01111011 =?= 01111011 0x7B
{IsOn:1, Instr:1, Mode:4, FanSpeed:0, IsSleepOn:0, SetTemp:31}
0xA1 8C 5E FF FF  0x4B  0b10100001 10001100 01011110 11111111 11111111 0b01001011 =?= 01001011 0x4B
{IsOn:1, Instr:1, Mode:4, FanSpeed:1, IsSleepOn:0, SetTemp:31}
0xA1 94 5E FF FF  0x5B  0b10100001 10010100 01011110 11111111 11111111 0b01011011 =?= 01011011 0x5B
{IsOn:1, Instr:1, Mode:4, FanSpeed:2, IsSleepOn:0, SetTemp:31}
0xA1 9C 5E FF FF  0x53  0b10100001 10011100 01011110 11111111 11111111 0b01010011 =?= 01010011 0x53
{IsOn:1, Instr:1, Mode:4, FanSpeed:3, IsSleepOn:0, SetTemp:31}
0xA1 A4 5E FF FF  0x7B  0b10100001 10100100 01011110 11111111 11111111 0b01111011 =?= 01111011 0x7B
{IsOn:1, Instr:1, Mode:4, FanSpeed:0, IsSleepOn:0, SetTemp:31}
0xA1 82 40 FF FF  0x5C  0b10100001 10000010 01000000 11111111 11111111 0b01011100 =?= 01011100 0x5C
{IsOn:1, Instr:1, Mode:2, FanSpeed:0, IsSleepOn:0, SetTemp:17}
0xA1 82 41 FF FF  0x5D  0b10100001 10000010 01000001 11111111 11111111 0b01011101 =?= 01011101 0x5D
{IsOn:1, Instr:1, Mode:2, FanSpeed:0, IsSleepOn:0, SetTemp:18}
0xA1 82 42 FF FF  0x5F  0b10100001 10000010 01000010 11111111 11111111 0b01011111 =?= 01011111 0x5F
{IsOn:1, Instr:1, Mode:2, FanSpeed:0, IsSleepOn:0, SetTemp:19}
0xA1 82 43 FF FF  0x5E  0b10100001 10000010 01000011 11111111 11111111 0b01011110 =?= 01011110 0x5E
{IsOn:1, Instr:1, Mode:2, FanSpeed:0, IsSleepOn:0, SetTemp:20}
0xA1 82 44 FF FF  0x58  0b10100001 10000010 01000100 11111111 11111111 0b01011000 =?= 01011000 0x58
{IsOn:1, Instr:1, Mode:2, FanSpeed:0, IsSleepOn:0, SetTemp:21}
0xA1 82 45 FF FF  0x59  0b10100001 10000010 01000101 11111111 11111111 0b01011001 =?= 01011001 0x59
{IsOn:1, Instr:1, Mode:2, FanSpeed:0, IsSleepOn:0, SetTemp:22}
0xA1 82 46 FF FF  0x5B  0b10100001 10000010 01000110 11111111 11111111 0b01011011 =?= 01011011 0x5B
{IsOn:1, Instr:1, Mode:2, FanSpeed:0, IsSleepOn:0, SetTemp:23}
0xA1 82 47 FF FF  0x5A  0b10100001 10000010 01000111 11111111 11111111 0b01011010 =?= 01011010 0x5A
{IsOn:1, Instr:1, Mode:2, FanSpeed:0, IsSleepOn:0, SetTemp:24}
0xA1 82 48 FF FF  0x54  0b10100001 10000010 01001000 11111111 11111111 0b01010100 =?= 01010100 0x54
{IsOn:1, Instr:1, Mode:2, FanSpeed:0, IsSleepOn:0, SetTemp:25}
0xA1 82 49 FF FF  0x55  0b10100001 10000010 01001001 11111111 11111111 0b01010101 =?= 01010101 0x55
{IsOn:1, Instr:1, Mode:2, FanSpeed:0, IsSleepOn:0, SetTemp:26}
0xA1 82 4A FF FF  0x57  0b10100001 10000010 01001010 11111111 11111111 0b01010111 =?= 01010111 0x57
{IsOn:1, Instr:1, Mode:2, FanSpeed:0, IsSleepOn:0, SetTemp:27}
0xA1 82 4B FF FF  0x56  0b10100001 10000010 01001011 11111111 11111111 0b01010110 =?= 01010110 0x56
{IsOn:1, Instr:1, Mode:2, FanSpeed:0, IsSleepOn:0, SetTemp:28}
0xA1 82 4C FF FF  0x50  0b10100001 10000010 01001100 11111111 11111111 0b01010000 =?= 01010000 0x50
{IsOn:1, Instr:1, Mode:2, FanSpeed:0, IsSleepOn:0, SetTemp:29}
0xA1 82 4D FF FF  0x51  0b10100001 10000010 01001101 11111111 11111111 0b01010001 =?= 01010001 0x51
{IsOn:1, Instr:1, Mode:2, FanSpeed:0, IsSleepOn:0, SetTemp:30}
0xA1 A0 4D FF FF  0x63  0b10100001 10100000 01001101 11111111 11111111 0b01100011 =?= 01100011 0x63
{IsOn:1, Instr:1, Mode:0, FanSpeed:0, IsSleepOn:0, SetTemp:30}
0xA1 A0 4C FF FF  0x62  0b10100001 10100000 01001100 11111111 11111111 0b01100010 =?= 01100010 0x62
{IsOn:1, Instr:1, Mode:0, FanSpeed:0, IsSleepOn:0, SetTemp:29}
0xA1 A0 4B FF FF  0x65  0b10100001 10100000 01001011 11111111 11111111 0b01100101 =?= 01100101 0x65
{IsOn:1, Instr:1, Mode:0, FanSpeed:0, IsSleepOn:0, SetTemp:28}
0xA1 A0 4A FF FF  0x64  0b10100001 10100000 01001010 11111111 11111111 0b01100100 =?= 01100100 0x64
{IsOn:1, Instr:1, Mode:0, FanSpeed:0, IsSleepOn:0, SetTemp:27}
0xA1 A0 49 FF FF  0x67  0b10100001 10100000 01001001 11111111 11111111 0b01100111 =?= 01100111 0x67
{IsOn:1, Instr:1, Mode:0, FanSpeed:0, IsSleepOn:0, SetTemp:26}
0xA1 A0 48 FF FF  0x66  0b10100001 10100000 01001000 11111111 11111111 0b01100110 =?= 01100110 0x66
{IsOn:1, Instr:1, Mode:0, FanSpeed:0, IsSleepOn:0, SetTemp:25}
0xA1 A0 47 FF FF  0x69  0b10100001 10100000 01000111 11111111 11111111 0b01101001 =?= 01101001 0x69
{IsOn:1, Instr:1, Mode:0, FanSpeed:0, IsSleepOn:0, SetTemp:24}
0xA1 A0 46 FF FF  0x68  0b10100001 10100000 01000110 11111111 11111111 0b01101000 =?= 01101000 0x68
{IsOn:1, Instr:1, Mode:0, FanSpeed:0, IsSleepOn:0, SetTemp:23}
0xA1 A0 45 FF FF  0x6B  0b10100001 10100000 01000101 11111111 11111111 0b01101011 =?= 01101011 0x6B
{IsOn:1, Instr:1, Mode:0, FanSpeed:0, IsSleepOn:0, SetTemp:22}
0xA1 A0 44 FF FF  0x6A  0b10100001 10100000 01000100 11111111 11111111 0b01101010 =?= 01101010 0x6A
{IsOn:1, Instr:1, Mode:0, FanSpeed:0, IsSleepOn:0, SetTemp:21}
0xA1 A0 43 FF FF  0x6D  0b10100001 10100000 01000011 11111111 11111111 0b01101101 =?= 01101101 0x6D
{IsOn:1, Instr:1, Mode:0, FanSpeed:0, IsSleepOn:0, SetTemp:20}
0xA1 A0 42 FF FF  0x6C  0b10100001 10100000 01000010 11111111 11111111 0b01101100 =?= 01101100 0x6C
{IsOn:1, Instr:1, Mode:0, FanSpeed:0, IsSleepOn:0, SetTemp:19}
0xA1 A0 41 FF FF  0x6F  0b10100001 10100000 01000001 11111111 11111111 0b01101111 =?= 01101111 0x6F
{IsOn:1, Instr:1, Mode:0, FanSpeed:0, IsSleepOn:0, SetTemp:18}
0xA1 A0 40 FF FF  0x6E  0b10100001 10100000 01000000 11111111 11111111 0b01101110 =?= 01101110 0x6E
{IsOn:1, Instr:1, Mode:0, FanSpeed:0, IsSleepOn:0, SetTemp:17}
0xA1 81 40 FF FF  0x5F  0b10100001 10000001 01000000 11111111 11111111 0b01011111 =?= 01011111 0x5F
{IsOn:1, Instr:1, Mode:1, FanSpeed:0, IsSleepOn:0, SetTemp:17}
0xA1 81 41 FF FF  0x5E  0b10100001 10000001 01000001 11111111 11111111 0b01011110 =?= 01011110 0x5E
{IsOn:1, Instr:1, Mode:1, FanSpeed:0, IsSleepOn:0, SetTemp:18}
0xA1 81 42 FF FF  0x5D  0b10100001 10000001 01000010 11111111 11111111 0b01011101 =?= 01011101 0x5D
{IsOn:1, Instr:1, Mode:1, FanSpeed:0, IsSleepOn:0, SetTemp:19}
0xA1 81 43 FF FF  0x5C  0b10100001 10000001 01000011 11111111 11111111 0b01011100 =?= 01011100 0x5C
{IsOn:1, Instr:1, Mode:1, FanSpeed:0, IsSleepOn:0, SetTemp:20}
0xA1 81 44 FF FF  0x5B  0b10100001 10000001 01000100 11111111 11111111 0b01011011 =?= 01011011 0x5B
{IsOn:1, Instr:1, Mode:1, FanSpeed:0, IsSleepOn:0, SetTemp:21}
0xA1 81 45 FF FF  0x5A  0b10100001 10000001 01000101 11111111 11111111 0b01011010 =?= 01011010 0x5A
{IsOn:1, Instr:1, Mode:1, FanSpeed:0, IsSleepOn:0, SetTemp:22}
0xA1 81 46 FF FF  0x59  0b10100001 10000001 01000110 11111111 11111111 0b01011001 =?= 01011001 0x59
{IsOn:1, Instr:1, Mode:1, FanSpeed:0, IsSleepOn:0, SetTemp:23}
0xA1 81 47 FF FF  0x58  0b10100001 10000001 01000111 11111111 11111111 0b01011000 =?= 01011000 0x58
{IsOn:1, Instr:1, Mode:1, FanSpeed:0, IsSleepOn:0, SetTemp:24}
0xA1 81 48 FF FF  0x57  0b10100001 10000001 01001000 11111111 11111111 0b01010111 =?= 01010111 0x57
{IsOn:1, Instr:1, Mode:1, FanSpeed:0, IsSleepOn:0, SetTemp:25}
0xA1 81 49 FF FF  0x56  0b10100001 10000001 01001001 11111111 11111111 0b01010110 =?= 01010110 0x56
{IsOn:1, Instr:1, Mode:1, FanSpeed:0, IsSleepOn:0, SetTemp:26}
0xA1 81 4A FF FF  0x55  0b10100001 10000001 01001010 11111111 11111111 0b01010101 =?= 01010101 0x55
{IsOn:1, Instr:1, Mode:1, FanSpeed:0, IsSleepOn:0, SetTemp:27}
0xA1 81 4B FF FF  0x54  0b10100001 10000001 01001011 11111111 11111111 0b01010100 =?= 01010100 0x54
{IsOn:1, Instr:1, Mode:1, FanSpeed:0, IsSleepOn:0, SetTemp:28}
0xA1 81 4C FF FF  0x53  0b10100001 10000001 01001100 11111111 11111111 0b01010011 =?= 01010011 0x53
{IsOn:1, Instr:1, Mode:1, FanSpeed:0, IsSleepOn:0, SetTemp:29}
0xA1 81 4D FF FF  0x52  0b10100001 10000001 01001101 11111111 11111111 0b01010010 =?= 01010010 0x52
{IsOn:1, Instr:1, Mode:1, FanSpeed:0, IsSleepOn:0, SetTemp:30}
0xA1 A3 4D FF FF  0x60  0b10100001 10100011 01001101 11111111 11111111 0b01100000 =?= 01100000 0x60
{IsOn:1, Instr:1, Mode:3, FanSpeed:0, IsSleepOn:0, SetTemp:30}
0xA1 E3 4D FF FF  0x20  0b10100001 11100011 01001101 11111111 11111111 0b00100000 =?= 00100000 0x20
{IsOn:1, Instr:1, Mode:3, FanSpeed:0, IsSleepOn:1, SetTemp:30}
0xA1 E3 4D FF FF  0x20  0b10100001 11100011 01001101 11111111 11111111 0b00100000 =?= 00100000 0x20
{IsOn:1, Instr:1, Mode:3, FanSpeed:0, IsSleepOn:1, SetTemp:30}
0xA1 A3 4D FF FF  0x60  0b10100001 10100011 01001101 11111111 11111111 0b01100000 =?= 01100000 0x60
{IsOn:1, Instr:1, Mode:3, FanSpeed:0, IsSleepOn:0, SetTemp:30}
0xA2 09 FF FF FF  0x74  0b10100010 00001001 11111111 11111111 11111111 0b01110100 =?= 01110100 0x74
{Instr:2, Opt:9}
0xA2 09 FF FF FF  0x74  0b10100010 00001001 11111111 11111111 11111111 0b01110100 =?= 01110100 0x74
{Instr:2, Opt:9}
0xA1 82 4D FF FF  0x51  0b10100001 10000010 01001101 11111111 11111111 0b01010001 =?= 01010001 0x51
{IsOn:1, Instr:1, Mode:2, FanSpeed:0, IsSleepOn:0, SetTemp:30}
0xA1 A0 4D FF FF  0x63  0b10100001 10100000 01001101 11111111 11111111 0b01100011 =?= 01100011 0x63
{IsOn:1, Instr:1, Mode:0, FanSpeed:0, IsSleepOn:0, SetTemp:30}
0xA2 0D FF FF FF  0x70  0b10100010 00001101 11111111 11111111 11111111 0b01110000 =?= 01110000 0x70
{Instr:2, Opt:13}
0xA2 09 FF FF FF  0x74  0b10100010 00001001 11111111 11111111 11111111 0b01110100 =?= 01110100 0x74
{Instr:2, Opt:9}
0xA2 02 FF FF FF  0x7E  0b10100010 00000010 11111111 11111111 11111111 0b01111110 =?= 01111110 0x7E
{Instr:2, Opt:2}
0xA2 01 FF FF FF  0x7C  0b10100010 00000001 11111111 11111111 11111111 0b01111100 =?= 01111100 0x7C
{Instr:2, Opt:1}
0xA4 A0 4D FF 15  0xBE  0b10100100 10100000 01001101 11111111 00010101 0b10111110 =?= 10111110 0xBE
{IsOn:1, Instr:4, Mode:0, FanSpeed:0, IsSleepOn:0, MeasTemp:21, State:255}
0xA2 12 FF FF FF  0x6E  0b10100010 00010010 11111111 11111111 11111111 0b01101110 =?= 01101110 0x6E
{Instr:2, Opt:18}
0xA2 13 FF FF FF  0x6F  0b10100010 00010011 11111111 11111111 11111111 0b01101111 =?= 01101111 0x6F
{Instr:2, Opt:19}
0xA1 A0 4D 8B FF  0x2F  0b10100001 10100000 01001101 10001011 11111111 0b00101111 =?= 00101111 0x2F
{IsOn:1, Instr:1, Mode:0, FanSpeed:0, IsSleepOn:0, SetTemp:30}
0xA1 20 4D FF FF  0xE3  0b10100001 00100000 01001101 11111111 11111111 0b11100011 =?= 11100011 0xE3
{IsOn:0, Instr:1, Mode:0, FanSpeed:0, IsSleepOn:0, SetTemp:30}
0xA1 A0 4D FF FF  0x63  0b10100001 10100000 01001101 11111111 11111111 0b01100011 =?= 01100011 0x63
{IsOn:1, Instr:1, Mode:0, FanSpeed:0, IsSleepOn:0, SetTemp:30}
0xA1 A0 4D FF 85  0x24  0b10100001 10100000 01001101 11111111 10000101 0b00100100 =?= 00100100 0x24
{IsOn:1, Instr:1, Mode:0, FanSpeed:0, IsSleepOn:0, SetTemp:30}
0xA1 A0 4D 8F 85  0x4C  0b10100001 10100000 01001101 10001111 10000101 0b01001100 =?= 01001100 0x4C
{IsOn:1, Instr:1, Mode:0, FanSpeed:0, IsSleepOn:0, SetTemp:30}
 

Offline kevinateevTopic starter

  • Regular Contributor
  • *
  • Posts: 53
  • Country: ca
Re: 48 bit (6 byte) IR Remote protocol and checksum
« Reply #3 on: August 28, 2020, 10:32:30 am »
Solution to this problem is in this repo https://github.com/kpishere/homie_heatPump
 

Offline bingo600

  • Super Contributor
  • ***
  • Posts: 2033
  • Country: dk
Re: 48 bit (6 byte) IR Remote protocol and checksum
« Reply #4 on: August 28, 2020, 12:53:04 pm »
Nice detective work  :-+ :-+

/Bingo
 


Share me

Digg  Facebook  SlashDot  Delicious  Technorati  Twitter  Google  Yahoo
Smf