Arduino-IRremote VS IRremoteESP8266

Compare Arduino-IRremote vs IRremoteESP8266 and see what are their differences.


Infrared remote library for Arduino: send and receive infrared signals with multiple protocols (by Arduino-IRremote)


Infrared remote library for ESP8266/ESP32: send and receive infrared signals with multiple protocols. Based on: (by crankyoldgit)
InfluxDB - Power Real-Time Data Analytics at Scale
Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
Arduino-IRremote IRremoteESP8266
33 19
4,336 2,811
1.3% -
7.8 5.4
3 days ago 9 days ago
C++ C++
GNU General Public License v3.0 or later GNU Lesser General Public License v3.0 only
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.


Posts with mentions or reviews of Arduino-IRremote. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-06-20.
  • Connect to wand?
    1 project | /r/MagiQuest | 10 Sep 2023
    However, there are plenty of libraries at this point which can handle the signal to varying degrees (some cant handle cast type but many dont care about that feature, including the game itself). I believe the most up to date currently is:
  • ffffffff error in serial monitor
    1 project | /r/arduino | 8 Jul 2023
    RTFM. : " must use the statement #include instead of #include in your main program..."
  • IRremote SendAndReceive
    1 project | /r/arduino | 6 Jul 2023
    /* * SendAndReceive.cpp * * Demonstrates sending IR codes and receiving it simultaneously * * This file is part of Arduino-IRremote * ************************************************************************************ * MIT License * * Copyright (c) 2021-2023 Armin Joachimsmeyer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is furnished * to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A * PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE * OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * ************************************************************************************ */ #include // select only NEC and the universal decoder for pulse distance protocols #define DECODE_NEC // Includes Apple and Onkyo #define DECODE_DISTANCE_WIDTH // In case NEC is not received correctly. Universal decoder for pulse distance width protocols #define DECODE_SAMSUNG //#define EXCLUDE_UNIVERSAL_PROTOCOLS // Saves up to 1000 bytes program memory. //#define EXCLUDE_EXOTIC_PROTOCOLS // saves around 650 bytes program memory if all other protocols are active //#define NO_LED_FEEDBACK_CODE // saves 92 bytes program memory //#define RECORD_GAP_MICROS 12000 // Default is 5000. Activate it for some LG air conditioner protocols //#define SEND_PWM_BY_TIMER // Disable carrier PWM generation in software and use (restricted) hardware PWM. //#define USE_NO_SEND_PWM // Use no carrier PWM, just simulate an active low receiver signal. Overrides SEND_PWM_BY_TIMER definition //#define DEBUG // Activate this for lots of lovely debug output from the decoders. #include "PinDefinitionsAndMore.h" // Define macros for input and output pin etc. #include #define DELAY_AFTER_SEND 2000 #define DELAY_AFTER_LOOP 5000 void setup() { Serial.begin(9600); #if defined(__AVR_ATmega32U4__) || defined(SERIAL_PORT_USBVIRTUAL) || defined(SERIAL_USB) /*stm32duino*/|| defined(USBCON) /*STM32_stm32*/|| defined(SERIALUSB_PID) || defined(ARDUINO_attiny3217) delay(4000); // To be able to connect Serial monitor after reset or power up and before first print out. Do not wait for an attached Serial Monitor! #endif // Just to know which program is running on my Arduino Serial.println(F("START " __FILE__ " from " __DATE__ "\r\nUsing library version " VERSION_IRREMOTE)); // Start the receiver and if not 3. parameter specified, take LED_BUILTIN pin from the internal boards definition as default feedback LED IrReceiver.begin(IR_RECEIVE_PIN, ENABLE_LED_FEEDBACK); Serial.print(F("Ready to receive IR signals of protocols: ")); printActiveIRProtocols(&Serial); Serial.println(F("at pin " STR(IR_RECEIVE_PIN))); IrSender.begin(); // Start with IR_SEND_PIN as send pin and enable feedback LED at default feedback LED pin Serial.println(F("Send IR signals at pin " STR(IR_SEND_PIN))); #if FLASHEND >= 0x3FFF // For 16k flash or more, like ATtiny1604 // For esp32 we use PWM generation by ledcWrite() for each pin. # if !defined(SEND_PWM_BY_TIMER) && !defined(USE_NO_SEND_PWM) && !defined(ESP32) /* * Print internal software PWM generation info */ IrSender.enableIROut(38); // Call it with 38 kHz to initialize the values printed below Serial.print(F("Send signal mark duration is ")); Serial.print(IrSender.periodOnTimeMicros); Serial.print(F(" us, pulse correction is ")); Serial.print(IrSender.getPulseCorrectionNanos()); Serial.print(F(" ns, total period is ")); Serial.print(IrSender.periodTimeMicros); Serial.println(F(" us")); # endif // infos for receive Serial.print(RECORD_GAP_MICROS); Serial.println(F(" us is the (minimum) gap, after which the start of a new IR packet is assumed")); Serial.print(MARK_EXCESS_MICROS); Serial.println(F(" us are subtracted from all marks and added to all spaces for decoding")); #endif } uint16_t sAddress = 0xB24D; uint16_t sCommand = 0x3FD; uint8_t sRepeats = 1; /* * Send NEC IR protocol */ void send_ir_data() { Serial.print(F("Sending: 0x")); Serial.print(sAddress, HEX); Serial.print(sCommand, HEX); Serial.println(sRepeats, HEX); Serial.flush(); // To avoid disturbing the software PWM generation by serial output interrupts // clip repeats at 4 if (sRepeats > 4) { sRepeats = 4; } // Results for the first loop to: Protocol=NEC Address=0x102 Command=0x34 Raw-Data=0xCB340102 (32 bits) IrSender.sendSamsung48(sAddress, sCommand, sRepeats); } void receive_ir_data() { if (IrReceiver.decode()) { Serial.print(F("Decoded protocol: ")); Serial.print(getProtocolString(IrReceiver.decodedIRData.protocol)); Serial.print(F(", decoded raw data: ")); #if (__INT_WIDTH__ < 32) Serial.print(IrReceiver.decodedIRData.decodedRawData, HEX); #else PrintULL::print(&Serial, IrReceiver.decodedIRData.decodedRawData, HEX); #endif Serial.print(F(", decoded address: ")); Serial.print(IrReceiver.decodedIRData.address, HEX); Serial.print(F(", decoded command: ")); Serial.println(IrReceiver.decodedIRData.command, HEX); IrReceiver.resume(); } } void loop() { /* * Print loop values */ Serial.println(); Serial.print(F("address=0x")); Serial.print(sAddress, HEX); Serial.print(F(" command=0x")); Serial.print(sCommand, HEX); Serial.print(F(" repeats=")); Serial.println(sRepeats); Serial.flush(); send_ir_data(); IrReceiver.restartAfterSend(); // Is a NOP if sending does not require a timer. // wait for the receiver state machine to detect the end of a protocol delay((RECORD_GAP_MICROS / 1000) + 5); receive_ir_data(); delay(2000); // Loop delay }
  • pls need help with school project
    1 project | /r/arduino | 26 Jun 2023
    Maybe your use of decode() is not correct, it seems to have changed in newer versions.
  • How do i build a homemade Infrared Sender?
    2 projects | /r/diyelectronics | 20 Jun 2023
    Use this library
  • IR receiver returns the same code for every button input
    2 projects | /r/arduino | 23 Mar 2023
    if (IrReceiver.decodedIRData.flags & IRDATA_FLAGS_WAS_OVERFLOW) { Serial.println(F("Overflow detected")); Serial.println(F("Try to increase the \"RAW_BUFFER_LENGTH\" value of " STR(RAW_BUFFER_LENGTH) " in " __FILE__)); // see also } else { Serial.println(divider); Serial.print("protocol: "); Serial.print(getProtocolString(IrReceiver.decodedIRData.protocol)); Serial.print(" (0x"); Serial.print(IrReceiver.decodedIRData.protocol, HEX); Serial.println(")"); if (IrReceiver.decodedIRData.protocol != 0) { // Unknown protocol (typically due to a misread) is ignored. Serial.print("address: "); Serial.println(IrReceiver.decodedIRData.address, HEX); Serial.print("command: "); Serial.println(IrReceiver.decodedIRData.command, HEX); Serial.print("data: "); Serial.println(IrReceiver.decodedIRData.decodedRawData, HEX);
  • IRremote only returns ffffffff value
    1 project | /r/arduino | 22 Mar 2023
    GitHub - Arduino-IRremote/Arduino-IRremote: Infrared remote library for Arduino: send and receive infrared signals with multiple protocols
  • MQTT &amp; IR Receiver
    2 projects | /r/esp32 | 3 Feb 2023
    I have tried and, both cause the same error.
  • IRemote Library
    1 project | /r/arduino | 30 Nov 2022
    This is the library:
  • Question about the possibility of automating a humidifier
    1 project | /r/arduino | 26 Nov 2022
    Easy! I've done something similar with a fan & light combo, basically if you use a library such as IRremote and an IR receiver, you can record all the it signals that the remote puts out, IRremote might even be able to automatically decode the signal into a code, but if not then you can record a raw sequence; then using an IR transmitter, you can resend those codes.


Posts with mentions or reviews of IRremoteESP8266. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2024-04-27.
  • Ask HN: What have you built with ESPHome, ESP8266 or similar hardware
    26 projects | | 27 Apr 2024
    Not built, but designed a widget with a rest api on a wifi endpoint on one side and an IR led on the other to automate my dumb a/c unit. There was already a library to emulate the exact IR remote control,

  • I built an offline smart home, and why you should too
    1 project | | 11 Jan 2024
    I am planning to do this soon(TM).

    Probably starting with ESPHome to control my heat pumps over IR.

    The remote works but I forget to turn it off when not in one of the rooms, and it can't do smarts like keeping temperatures in desired bounds.

    An ESP32 running ESPHome with high power IR LED, a presence sensor, temperature sensor, and some pre-built library to control heat pumps[1]. it looks like it should be fairly simple to implement with Home assistant.

    Now if I could only disable the beep from the heat pumps receiving commands.

    I would like to do smarter lighting, but the lack of decent smart light switches that support local control and are also licenced for use in AU are a blocker there.


  • ThermTerm: an open source heat pump controller and home automation terminal, built on ESP32
    2 projects | /r/esp32 | 2 Sep 2023
    ThermTerm solves all the problems I've had with these physical controls, while integrating the heat pumps into Home Assistant via MQTT. Additional sensors pipe temperature, humidity and light data, for statistics and automation. Out of the box, ThermTerm supports Mitsubishi's infrared protocol, since that's the system I have. Thanks to integration with IRRemoteESP8266, you can make ThermTerm work with your own heat pumps by writing a few lines of adaptor code.
  • Mitsubishi aircon control without HA/OH
    2 projects | /r/esp32 | 8 Jun 2023
    This library has the IR codes defined for tons of heat pumps. The only thing about node red is that it uses Java to build the UI on the webserver. If your already familiar with Java then no big deal, but it's just one more syntax to learn lol.
  • ESP32 AC Remote
    3 projects | /r/homeautomation | 25 May 2023
    I used this library with a D1 mini. I then use this to put in my dashboard There are some examples one is a receiver code that you can get your codes, they also have a lot of ACs codes already. There is also an IRServer example that integrates with MQTT and has some stuff to put in your configuration.yaml so you can get it into HA easily I used this for 6 Samsung ACs, LG Dryer, some basic fans with IR. Samsung is the same each command is like all commands in one on, temp, etc. It has all this built in. I think if you have a IR receiver on your esp board and it will sometimes pick up the commands sent by the regular remote so if someone else uses the dumb remote it will update in HA. It's not perfect but it works pretty well. you can get all in one boards on ali express if you search iresp8255 they have transmitters and receivers.
  • MQTT &amp; IR Receiver
    2 projects | /r/esp32 | 3 Feb 2023
    I have tried and, both cause the same error.
  • Struggling to get IR transmitter working
    6 projects | /r/esp8266 | 13 Oct 2022
    First, try to remove the resistor(i was made an ir remote using the top circuit for ir sender). check the components, maybe one of them are dead. Second, check the gpio and config. Third, maybe the problem is the code. Maybe you should try the original IRRemoteESP8266 library first: You should checkout the original esp8266 ir remote library first: checkout my project:
  • Used the Flipper as a tool for this project - hacking a TV-B-Gone into a home automation IR device
    2 projects | /r/flipperzero | 6 Oct 2022
    I was able to finally read one of my remote codes that my other receiver couldn't with the flipper. I then used this library with a D1 mini.
  • My HomeKit AC controller..
    1 project | /r/diyelectronics | 5 Oct 2022
    My AC is fujitsu and I found library to control:
  • About to buy an air-codition - can someone recommend one which is not-so-closed-cloud and can be possibly integrated into HASS?
    2 projects | /r/selfhosted | 27 Jun 2022
    If it has a remote you can try to control it with an ESP32 with an extra infrared led. Check if it is supported by this library. Some coding would be needed.

What are some alternatives?

When comparing Arduino-IRremote and IRremoteESP8266 you can also consider the following projects:

Adafruit_IO_Arduino - Arduino library to access Adafruit IO from WiFi, cellular, and ethernet modules.

esphome - ESPHome is a system to control your ESP8266/ESP32 by simple yet powerful configuration files and control them remotely through Home Automation systems.

FastLED - The FastLED library for colored LED animation on Arduino. Please direct questions/requests for help to the FastLED Reddit community: We'd like to use github "issues" just for tracking library bugs / enhancements.

esphome-panasonic-ac - Open source alternative for Panasonic air condition wifi adapters that works locally without the Comfort Cloud

AGirs - A Girs infrared server for the Arduino

HomeSpan - HomeKit Library for the Arduino-ESP32

ESP32_FFT_VU - A spectrum analyzer VU meter for the ESP32 and a FastLED matrix

Arduino-FOC - Arduino FOC for BLDC and Stepper motors - Arduino Based Field Oriented Control Algorithm Library

ExtremeRacers-Speedometer - In-game speedometer brought to the real world

TFLuna-I2C - Arduino library for the Benewake TFLuna LiDAR distance sensor in the I2C communication mode

StepperDriver - Arduino library for A4988, DRV8825, DRV8834, DRV8880 and generic two-pin (DIR/STEP) stepper motor drivers

Seeed_Arduino_AS5600 - The library comes with AS5600. Through this library, we can realize read the angles 、get magnetic from a magnet underneath the sensor.

InfluxDB - Power Real-Time Data Analytics at Scale
Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives