Reverse engineering the Mitsubishi AC Infrared protocol

This post is the second in a two-part series about Reverse Engineering AC Infrared protocols. This time we look at the Mitsubishi Air Conditioner IR Protocol. The project was undertaken by  two of our users in France (Vincent & Mathieu), with the help of AnalysIR, who  collaborated to reverse engineer this Mitsubishi and previously the Panasonic AC Infrared protocol, both examples of the more challenging AC Infrared protocols. Not only did they identify the individual field codes & checksum but also provided some impressive documentation. Detailed information is available via GitHub which is linked below. This 288 data bit Mitsubishi AC Infrared protocol is composed of two consecutive frames. Both frames are always identical for each signal sent. In common with most AC units the complete settings are sent with every IR signal (temperature, fan, swing etc…). AnalysIR was used to record and turn the signal into HEX/Binary format from which the reverse engineering of the individual fields was tackled.

Mitsubishi AC AnalysIR Screenshot
Mitsubishi AC AnalysIR Screenshot

Two Identical Frames
As can be seen in the image above, each IR signal is made up of 2 identical frames of 144 data bits each (288 total), for a total of 18 bytes in each. (2 x 18 identical bytes of data). The data is wrapped in headers, trailer & gaps as described below.

Mitsubishi AC IR Signal Structure
Mitsubishi AC IR Signal Structure

The image above show the structure of both IR frames of the Mitsubishi AC signal together with timings for marks & spaces in microseconds.

Individual Fields
The 18 data bytes of each signal frame contains the full settings for the Air Conditioner Unit.

Mitsubishi AC IR Signal Fields
Mitsubishi AC IR Signal Fields

Available control fields include, ON/OFF; Mode; Temperature (Celsius); Fan/Vane; Clock; End Clock; Start Clock; Prog Mode. The last byte  is the checksum which is calculated by the sum (addition) of the previous 17 bytes (modulo 256).

It should be a relatively easy task for readers to figure out the signal format based on the 2 images above.

Code Availability
At the time of publication of this article, the code to send these signal using an Arduino has not been uploaded to GitHub – but keep an eye out for updates. In the meantime, it should be possible to adapt the Arduino/IRremote code from part 1, which is already available on GitHub. If you manage to customise the existing Panasonic code then please share it via the IRforum and/or GitHub and we will post a link here. In the meantime you can make use of the automatic ‘C code’ generation feature in AnalysIR, which works with IRremote, IRLib & LIRC to get you started.

Update: The Mitsubishi Air Conditioner code is available via the GitHub link below and we have had favourable reports from users around the world that it works perfectly for them.

GitHub link
Get you own copy of AnalysIR