Announcing the Release of IRLib2

We are pleased to announce a new version of IRLib library for receiving, decoded, and sending infrared signals using an Arduino. This represents months of work and is a major restructuring of the code to make it easier to include only those protocols that your application actually uses. Unfortunately the restructuring is so significant that it is not backwards compatible with our original IRLib1. It is however relatively easy to update your applications to use the new libraries. We will continue to leave IRLib 1.x in its original repository on GitHub. We have created a new repository for IRLib2. There will be no new updates to the original version of the code. Because we have changed the name to IRLib2 it is possible to have both versions available in your Arduino libraries folder at the same time without conflict.

Also included is a new feature called “auto resume” which ensures that you can continue receiving a second frame of data while processing the first frame.

The users manual has been expanded to 117 pages and not only includes the complete reference to all classes, methods, and variables that we had before, it also contains a new tutorial section which thoroughly explains all of the sample sketches. And finally we have the long-awaited tutorial on how to create new protocols for the library. You will also want to check out Appendix A which explains the changes between IRLib1 and IRLib2 as well as my rationale for the restructuring and the need to make it no longer backwards compatible.

The users manual is available in Microsoft Word, Adobe PDF, and EPUB formats in the GitHub repository. We will no longer be maintaining online HTML version of the documentation because it was too difficult to split into individual webpages and maintain it for this blog. However the supplied formats should be sufficient for all users.

Although we have thoroughly tested the code, it technically is version beta 0.1. If no major bugs are reported in a month or two we will upgrade it to official version 2.0 release.

We can’t wait to see what all of you will do with IRLib2. Please let us know how you are using the code.

14 thoughts on “Announcing the Release of IRLib2

  1. Hi Chris – thank you so much for this: I have been hoping for an update for a while. Just fyi – there is, as yet, no manual folder on the repository.

    Thanks again.

  2. Newbie question – where can I find what Arduino devices are supported by IRLib2? Specifically, what about ESP8266 and RFduino?


    • IRLib does not support ESP8266 as of yet. I’ve never heard of RFduino. Obviously it’s not supported either. I buy all of my hardware at They do sell ESP8266 boards. I recommend their “Feather” boards. I have the support the 8266 in the near future but I will work on Arduino Zero and other ARM M0+ based systems first.

  3. I’m just starting a new project so I will use IRlib2. I note that the “dump.ino” example does not work with my NECx Toshiba remote control. No IR signals are received. It does work with the comboDump example however. Thanks.

  4. Thanks for this lib and for the detailed documentation. It really helps.
    Let me second here a few enhancements requests already made on various forums and blogs :
    – ESP8266 support. I am new to arduino and chose NodeMCU for it’s unbeatable price-performance ratio.
    – support for multiple receivers.
    – support for sending inverted signal without modulation. (Useful to drive straight input logic pin instead of IR led).
    Some people have done these mods on some IRremote forks.
    Thanks for considering.

  5. I’m perfectly believing I’ve screwed something up here, but…

    My Arduino IDE 1.7.11 does not compile the dump.ino example.

    When dump.ino is compiling, I get the error:
    D:\Users\Jason\Dropbox\Documents\Arduino\libraries\IRLib2/IRLibDecodeBase.h:13:28: fatal error: IRLibProtocols.h: No such file or directory

    I put the “IRLib*” directories all inside the Arduino/libraries directory, and from the IDE when I do “Sketch / Import Library” I can see them in the list, so the IDE knows they’re there, but it seems to be confused by libraries calling other libraries (IRLibProtocols.h is in the IRLibPRotocols directory, while everything else #included to that point were all in the IRLib2 directory)

  6. Well, I found my problem. Recording it here in case anyone else in the future stumbles over this.

    I had downloaded the IDE not from without realizing it, and ended up with a version that didn’t like libraries in libraries.

    Uninstalled it, downloaded and installed from, and it works.

    • I’m not sure I understand your question. It is possible to do both send and receive in the same sketch. Note that when you send a signal you have to reinitialize the receiver. Take a look at the “record” sample sketch as well as the documentation.

  7. Hi friend, you made lot of good job. But I have some specific problem. If I use next TIMER for multiplexing (TIMER1 on Arduino Nano) with more then 20 instruction within ISR (freq=200hz). Decoding IR is usually impossible :(. It is depends on class IRLibRecv or IRLibRecvPCI. I do not understand that, because TIMER 2 and also PCI have bigger priority.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.