Skip to content

Instantly share code, notes, and snippets.

Last active January 5, 2023 01:35
Star You must be signed in to star a gist
What would you like to do?
Getting lirc to work with Raspberry Pi 3 (Raspbian Stretch)
Notes to make IR shield (made by LinkSprite) work in Raspberry Pi 3 (bought from Amazon [1]).
The vendor has some documentation [2] but that is not complete and sufficient for Raspbian Stretch.
Following are the changes that I made to make it work.
$ sudo apt-get update
$ sudo apt-get install lirc
# Add the following lines to /etc/modules file
lirc_rpi gpio_in_pin=18 gpio_out_pin=17
# Add the following lines to /etc/lirc/hardware.conf file
LIRCD_ARGS="--uinput --listen"
# Update the following line in /boot/config.txt
# Update the following lines in /etc/lirc/lirc_options.conf
driver = default
device = /dev/lirc0
$ sudo /etc/init.d/lircd stop
$ sudo /etc/init.d/lircd start
# Check status to make lirc is running
$ sudo /etc/init.d/lircd status
# Reboot before testing
$ reboot
# To test if lirc driver is working
$ sudo /etc/init.d/lircd stop
$ mode2 -d /dev/lirc0
<press a key in remote and you should see multple lines like below>
pulse 560
space 1706
pulse 535
# to record a custom remote/register a remote device
$ sudo /etc/init.d/lircd stop
$ sudo irrecord -d /dev/lirc0 ~/lircd.conf
# follow the instruction prompted by the above command carefully
# at the end ~/lircd.conf file will be generated
# backup the original lircd.conf
$ sudo mv /etc/lirc/lircd.conf /etc/lirc/lircd_original.conf
$ sudo cp ~/lircd.conf /etc/lirc/lircd.conf
$ sudo /etc/init.d/lircd start
# you can test if the recorded remote works by
$ irsend SEND_ONCE <device-name> KEY_POWER
$ irsend SEND_ONCE <device-name> KEY_VOLUMEUP
Copy link

Great! Worked at my old Pi A (Stretch) too.

Copy link

drstil commented Apr 17, 2019

Thank you for this nice reference!

I'm using a Raspberry PI 3 and set up everything as written above. I'm using a TSOP34836 IR receiver. When I start receiving data with "mode2 -d /dev/lirc0" I got a lot of data input:
pulse 405
space 362
pulse 10150
pulse 383
even if the IR receiver is completely covered or even if the receiver ist not connected at all. Seems that there is unspecific input.
I just tested and set ground at GPIO 18, then input is changing, there are now only pulses but no spaces anymore. So it seems that the correct GPIO is set.
Still tested another GPIO and same result.

Do you have any idea what could be wrong or what I cloud try? Do you need more information?

Thank you for your help and best!

Just tested another GPIO ports and finally GPIO 20 and 21 were working without any unspecific signal. Still don't understand why, maybe PCM_CLK on GPIO 18?

Copy link

drstil commented Apr 19, 2019

I tried without settings in /etc/modules and it did also work. Any idea for what you need the settings in /etc/modules, cloud we ignore them?

Copy link

Thanks a lot to everyone for the info above. Having struggled to get lirc working.

The solution mcblacky posted did the trick for me.

One thing I had problems with was after restarting the Pi the solution stopped working.

Irw only responded to some of the keys on my keyboard.
Only working after I stopped and started lirc. Restart didn’t work either.

Where I now have the following commands in my rc.local file for my solution to work after a boot:

sleep 30s
systemctl stop lircd.socket lircd.service
sleep 30s
systemctl start lircd.socket lircd.service

Why would lirc need to be stopped and started before working?


Copy link

knowblesse commented Jul 27, 2019

######### For users using kernel version 4.19+ ###########
This code does not work for higher kernel version. (Mine : kernel version : 4.19.58, lirc version : 0.10.1-5.2)
as "m1r05l4v" commented above, for users who has higher kernel versions, please refer the other doc

In case some run into same problems with new Stretch and LIRC 0.9.4c. This is how I have made work

Above LIRC setup was not working for me.
Im using Stretch and LICR 0.9.4.c

Some helpful tips I have found in first post
but on this
I found solution

I run setup as explained and it worked.
for example
instead of mode2 -d /dev/lirc0 for me worked sudo mode2 --driver default --device /dev/lirc0
after that II pointed remote and get pulse on the list.

Also to record the buttons I have done as per bellow because irrecord didnt work for me with command
sudo irrecord -d /dev/lirc0 ~/lircd.conf
I got

Could not open new config file /home/user/lircd.conf
Could not init hardware (lircd running ? --> close it, check permissions)

in order to solve this I used sudo irrecord --driver default --device /dev/lirc0 ~/lircd.conf

so steps are

sudo /etc/init.d/lircd stop
sudo irrecord --driver default --device /dev/lirc0 ~/lircd.conf

follow steps
sudo /etc/init.d/lircd start

Check your remote with command

here it should recognise your buttons and file name
and to send command

Copy link

mst94 commented Jul 29, 2019

hello, my kernel is 4.19.58 on raspbian 10 buster.
I have some troubles with irrecord.
I have tried it with 2 remotes, but both do not work, the following problems occure:

  1. After hit the remote until 2 lines are filled with dots, the message appears:
    "Got gap (121879)}"
    and furthermore: "Cannot find any gap, using an arbitrary 50 ms one" ... and so one

  2. Then I create my names for the keys. This works well.

  3. Then the toogle mask creating failes: "Cannot find any toggle mask"

The created configuration file has except for the name, gap and frequency everywhere 0 or 0x0. For the created key-codes as well, so it is useless.

Does somebody have a glue?

Thanks a lot

Copy link

essieM commented Jul 31, 2019

I'm having the exact same issue as you @mst94. Any luck with finding a solution?

Copy link

mst94 commented Jul 31, 2019

I'm having the exact same issue as you @mst94. Any luck with finding a solution?

Hi, unfortunately I am still searching for a solution to this problem... I will post a solution here when I am lucky!

Copy link

mst94 commented Aug 3, 2019

I'm having the exact same issue as you @mst94. Any luck with finding a solution?

Removing LIRC and reinstalling it with this guide made it working!

I hope it will work for you as well.

Copy link

essieM commented Aug 5, 2019

Thanks @mst94. I was able to get it working as well..

Copy link

Ogg3l commented Oct 10, 2019

I have the same issue. Which raspberry pi Version and which Kernel Version do you use? I tried to Set it up with the tutorial. Maybe the ir receiver is the Problem? Which ir receiver do you use?

Copy link

mst94 commented Oct 16, 2019

I have the same issue. Which raspberry pi Version and which Kernel Version do you use? I tried to Set it up with the tutorial. Maybe the ir receiver is the Problem? Which ir receiver do you use?

Hi, take a look above: "Kernel is 4.19.58 on raspbian 10 buster".

I am using "TSOP31238 Integrated IR receiver 38kHz 45° VISHAY TELEFUNKEN", ordered from Amazon.

Copy link

todlo commented Jan 28, 2020

for anyone on buster who was, like me, struggling and failing with this, see:

tl;dr, lirc_dev isn't included in kernel 4.19, so it's recommended to use gpio-ir... but then irrecord (among others) doesn't work, so there's a patch that this absolute lifesaver has provided (linked in the above), which you can roll into your own patched, compiled & installed version of lirc.

Copy link

ephdtrg commented Feb 6, 2020

Can confirm, patching lirc with both guides provided by @mst94 and @todlo fixed all issues, codes are recognized correctly now, thank you guys.
Tested on RPi 4 with kernel 4.19.75 rasbpian buster and lirc 0.10.1-5.2 (patched).

Copy link

I am getting an error when trying to execute the command:

irsend SEND_ONCE vanLights KEY_POWER.

I get this output:

transmission failed
Error running command: Input/output error

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment