Hack Controller Code
Hack Controller Code
cheesecakelabs.com
What is IR?
6112, 7364, 564, 1632, 672, 1536, 628, 1564, 568, 1628, 564,
1628, 676, 1508, 684, 1536, 564, 1624, 572, 548, 652, 496, 604,
520, 568, 556, 600, 540, 660, 468, 568, 552, 600, 520, 652, 1568,
564, 1624, 568, 1628, 644, 1548, 648, 1564, 564, 1624, 568, 1620,
652, 1568, 628, 492, 600, 524, 564, 552, 656, 492, 568, 552, 568,
552, 680, 468, 568, 556, 596, 520, 680, 468, 564, 1628, 568, 1628,
648, 1544, 648, 1560, 600, 1592, 568, 1620, 652, 1564, 604, 1588,
568, 556, 676, 440, 632, 516, 572, 552, 596, 520, 656, 492, 632,
1 of 3 18/2/19 17:23
How I hacked my air conditioner controller | Ch... about:reader?url=https://cheesecakelabs.com/b...
1560, 600, 520, 680, 1536, 568, 548, 720, 1484, 644, 496, 600,
520, 568, 1624, 632, 492, 676, 1532, 604, 520, 600, 1588, 656,
492, 600, 1588, 572, 1616, 684, 464, 564, 1628, 572, 1624, 632,
1552, 656, 1564, 564, 1624, 568, 552, 660, 1552, 576, 1620, 568,
560, 632, 504, 576, 544, 572, 552, 568, 580, 596, 1592, 568, 552,
572, 576, 632, 488, 568, 1620, 572, 548, 656, 1556, 572, 556, 568,
1620, 656, 488, 568, 556, 568, 1620, 688, 460, 564, 1628, 568,
556, 680, 1512, 620, 520, 568, 1620, 572, 1616, 684, 7296, 572
By now, I’m sure you figured that by itself, IR packets are not
human-readable. Each value in reading 1 represents the interval in
µs that the IR led turned on. Since IR works by sending On/Off µs
pulses, let’s divide the raw reading into pairs to make the data more
readable, I have decided to split in pairs after observing the raw
reading and seeing that the packet follow the sequence 5XX and
16XX or 5XX(X can be any decimal value), an example of that is
the second and third reading in Table 1. By dividing in pairs, the
final data packet is going to much shorter and easier to understand.
I have simplified the pairs table to help the reader understand
better.
6112 7364
564 1632
548 652
496 604
Table 1.: Pairs from the data packet
I’ve chosen the value 1000 as the threshold for whether the pair is
a 0(low) or it’s a 1(high), I decided to use this value after observing
the data packet, almost every second value of each pair is either
16XX or 5XX, thus using 1000 as the threshold is a reasonable
value for the logic applied here, it’s an experiential value and you
might have to tweak it a little, depending on your remote controller.
The first pair of values and the last doesn’t really match the
threshold definition, we are going to remove them for now.
111111110000000011111111000000000011111111000000101010010101011011111011000001000101010010
0xff00ff003fc0a956fb0454ab
Ta-da! We now have the values for turning the air conditioner on.
Since this entire hexadecimal contains the whole state for the air
conditioner we need more readings.
2 of 3 18/2/19 17:23
How I hacked my air conditioner controller | Ch... about:reader?url=https://cheesecakelabs.com/b...
identified.
The 17th and 19th digit in the hexadecimal sequence indicates the
temperature we are setting. To obtain other commands we need to
do the same thing, for instance, if we were to obtain the command
to change the fan speed, we need to read the command for setting
the fan speed to 1 and then the command for setting the fan speed
to 2 and then compare using the same approach above. Keep in
mind that you shouldn’t change anything else in the controller
except the command you are trying to reverse engineer, otherwise
you’ll end up with wrong commands.
Conclusion
References
https://www.quora.com/How-do-an-IR-transmitter-and-receiver-
work
https://github.com/Nixsm/arduino-ac-remote
3 of 3 18/2/19 17:23