Verify and Debug Linux Infrared Remote Control (LIRC) Daemon Configurations

About: Systems Administrator and Software Programmer.


After training LIRC daemon to recognise the signals of my infrared (IR) remote control unit and configuring LIRC client to respond accordingly, sometimes stuff didn't happen as expected when you click on the IR remote control unit.

irw program can be used to verify and debug why LIRC clients don't respond as expected. The program "irw" is a type of LIRC client and it is provided by LIRC package.


This instructable will show how to use irw program to verify and debug why LIRC clients don't respond as expected.

Target Readers

Anyone with a Raspberry Pi running on RaspbianOS

Step 1: Verify the Mapping of Button Click to LIRC Event

Open terminal emulator in Raspberry Pi

$sudo service lirc start

Point the infrared remote control unit at the Raspberry Pi.

Click a button or buttons.

irw will display IR codes and its mapped LIRC events as shown in the screenshot

Open another terminal emulator in Raspberry Pi

Open the LIRC daemon configuration as shown in the screenshot

vi /etc/lirc/lircd.conf

Compare the entries in /etc/lirc/lircd.conf with the output of program irw

The program irw will display the LIRC event (KEY_STOP, KEY_RESTART) that corresponds to the IR code sent by the remote control unit, /etc/.lirc/lircd

Verify that this LIRC event matches what you or the LIRC client is expecting.



    • Warm and Fuzzy Contest

      Warm and Fuzzy Contest
    • Sweet Treats Challenge

      Sweet Treats Challenge
    • Paper Contest

      Paper Contest



    3 years ago on Introduction

    Hi Mirza,

    Not sure if you can help me to debug a problem that I have after installing
    lirc in my Raspbery pi. I checked your above. It works fine. When I press a key
    from remote it output some as follow.

    0000000000ff4ab5 00 key_0 /home/pi/lircd.conf

    which I think is correct.

    Fyi, I configured lirc following this url.

    I want to use IR by a python program I created.

    The python code is as follows


    import lirc

    sockid = lirc.init("ir_test3, blocking = False)

    codeir = lirc.nextcode()

    print codeir # test point 1

    if codeir:

    if codeir[0] == 'ONE':

    print ONE # test point 2


    the lircrc is as follows



    button = key_1

    program = ir_test3

    config = ONE



    I ran the ir_test3 python and then I expected if I press key_1 of the remote
    it to goto lircrc and look for key_1 and come back to ir_test3 and print ONE.

    But it prints [] which I assume NULL. That is from test point 1 of ir_test3.
    It never goes to test point 2

    Could you please help to troubleshoot what went wrong.?


    Ziath Nazoordeen