IRremoteESP8266 is a free, open source automation project written in C++ and released under LGPL-2.1. It has 3,600 GitHub stars, 933 forks and 105 open issues, and was last pushed 25 days ago. On this registry it ranks #34 of 54 tracked projects in Automation, with 5 head-to-head comparisons available.

What is IRremoteESP8266?

What it is

IRremoteESP8266 is an open-source C++ library for the Arduino framework that lets ESP8266 and ESP32 boards send and receive infrared signals. It lives in the embedded home-automation and HVAC-control ecosystem and is based on Arduino-IRremote. It uses common 940 nm infrared LEDs and common infrared receiver modules, including TSOP{17,22,24,36,38,44,48}* demodulators.

The problem it solves is generating and decoding infrared remote-control traffic from microcontrollers instead of relying on a physical remote. It supports multiple protocols, with details in SupportedProtocols.md, and provides Doxygen API documentation. The repository is licensed under LGPL-2.1, and version 2.9.0 includes release notes and upgrade guidance.

Key capabilities

  • The library sends infrared signals from ESP8266 and ESP32 boards using the Arduino framework and common 940 nm infrared LEDs.
  • It receives and decodes signals from common infrared receiver modules such as TSOP{17,22,24,36,38,44,48}* demodulators.
  • It supports multiple infrared protocols, with protocol and device support listed in SupportedProtocols.md.
  • It provides Doxygen-generated API documentation and release notes for version 2.9.0.
  • It documents upgrade paths for pre-v2.0 and pre-v2.5 code, including renamed constants and limited backward-compatibility aliases.

Who uses it and how

  • Home-automation builders use it to control infrared devices such as air conditioners and HVAC equipment from ESP8266 or ESP32 hardware.
  • Embedded developers use it as an Arduino library to transmit known remote-control codes or capture received codes for analysis.
  • Hardware tinkerers use it with 940 nm LEDs and TSOP-style receiver modules to build custom remote-control bridges or test rigs.

Getting started

The README describes installing the official release through Arduino IDE v1.8 or later by searching for IRremoteESP8266 in Manage Libraries, or by manually downloading and extracting the repository. Users upgrading older projects should review the v2.0 and v2.5 upgrade pages before compiling.

When to use it — and when not to

Use it when the target platform is an ESP8266 or ESP32 board running the Arduino framework and the required infrared protocol is already supported. Avoid it when the project needs a different microcontroller family, a non-Arduino framework, or an infrared protocol that is not listed in the supported protocol documentation. The README does not provide a hosted service, Docker deployment, database, storage, or SMTP requirements, so users must manage the hardware, library updates, and compatibility changes.

project readme (upstream, from github) — read inline

IRremoteESP8266 Library

Build Status Code Lint Tests Documentation arduino-library-badge GitLicense

This library enables you to send and receive infra-red signals on an ESP8266 or an ESP32 using the Arduino framework using common 940nm IR LEDs and common IR receiver modules. e.g. TSOP{17,22,24,36,38,44,48}* demodulators etc.

v2.9.0 Now Available

Version 2.9.0 of the library is now available. You can view the Release Notes for all the significant changes.

Upgrading from pre-v2.0

Usage of the library has been slightly changed in v2.0. You will need to change your usage to work with v2.0 and beyond. You can read more about the changes required on our Upgrade to v2.0 page.

Upgrading from pre-v2.5

The library has changed from using constants declared as #define to const with the appropriate naming per the C++ style guide. This may potentially cause old programs to not compile. The most likely externally used #defines have been aliased for limited backward compatibility for projects using the old style. Going forward, only the new kConstantName style will be supported for new protocol additions.

In the unlikely case, it does break your code, then you may have been referencing something you likely should not have. You should be able to quickly determine the new name from the old. e.g. CONSTANT_NAME to kConstantName. Use common sense or examining the library's code if this does affect code.

Supported Protocols

You can find the details of which protocols & devices are supported here.

Troubleshooting

Before reporting an issue or asking for help, please try to follow our Troubleshooting Guide first.

Frequently Asked Questions

Some common answers to common questions and problems are on our F.A.Q. wiki page.

Library API Documentation

This library uses Doxygen to automatically document the library's API. You can find it here.

Installation

Official releases via the Arduino IDE v1.8+ (Windows & Linux)
  1. Click the "Sketch" -> "Include Library" -> "Manage Libraries..." Menu items.
  2. Enter IRremoteESP8266 into the "Filter your search..." top right search box.
  3. Click on the IRremoteESP8266 result of the search.
  4. Select the version you wish to install and click "Install".
Manual Installation for Windows
  1. Click on "Clone or Download" button, then "Download ZIP" on the page.
  2. Extract the contents of the downloaded zip file.
  3. Rename the extracted folder to "IRremoteESP8266".
  4. Move this folder to your libraries directory. (under windows: C:\Users\YOURNAME\Documents\Arduino\libraries\)
  5. Restart your Arduino IDE.
  6. Check out the examples.
Using Git to install the library ( Linux )
cd ~/Arduino/libraries
git clone https://github.com/crankyoldgit/IRremoteESP8266.git
To update to the latest version of the library
cd ~/Arduino/libraries/IRremoteESP8266 && git pull

Contributing

If you want to contribute to this project, consider:

  • Reporting bugs and errors
  • Ask for enhancements
  • Improve our documentation
  • Creating issues and pull requests
  • Tell other people about this library
  • Updated documentation formatting and clarified installation steps (Hacktoberfest contribution by Prerna Utage)

Contributors

Available here

Library History

This library was originally based on Ken Shirriff's work (https://github.com/shirriff/Arduino-IRremote/)

Mark Szabo has updated the IRsend class to work on ESP8266 and Sebastien Warin the receiving & decoding part (IRrecv class).

As of v2.0, the library was almost entirely re-written with the ESP8266's resources in mind.

About This Project

This project allows decoding and encoding of IR signals for controlling Air Conditioners and other devices using ESP8266 or ESP32 boards.

Frequently asked questions

Is IRremoteESP8266 free to use?

IRremoteESP8266 is open source under the LGPL-2.1 licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does IRremoteESP8266 do?

Infrared remote library for ESP8266/ESP32: send and receive infrared signals with multiple protocols. Based on: https://github.com/shirriff/Arduino-IRremote/

What is IRremoteESP8266 written in?

IRremoteESP8266 is primarily written in C++. Its source is publicly available at https://github.com/crankyoldgit/IRremoteESP8266, and it has 3,600 GitHub stars.