Skip to content

Instantly share code, notes, and snippets.

Embed
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_dev
lirc_rpi gpio_in_pin=18 gpio_out_pin=17
# Add the following lines to /etc/lirc/hardware.conf file
LIRCD_ARGS="--uinput --listen"
LOAD_MODULES=true
DRIVER="default"
DEVICE="/dev/lirc0"
MODULES="lirc_rpi"
# Update the following line in /boot/config.txt
dtoverlay=lirc-rpi,gpio_in_pin=18,gpio_out_pin=17
# 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
[1] https://www.amazon.com/Infrared-Shield-for-Raspberry-Pi/dp/B00K2IICKK/ref=pd_sbs_328_1?_encoding=UTF8&psc=1&refRID=1QPY33VFCGETBJ17K8QE
[2] http://learn.linksprite.com/raspberry-pi/shield/infrared-transceiver-on-raspberry-pi-lirc-software-installation-and-configuration/
@johanvanl
Copy link

johanvanl commented Apr 23, 2019

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?

Thanks

@knowblesse
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 https://raspberrypi.stackexchange.com/questions/81876/raspberry-pi-3-not-lirc-not-running-working
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.

RECORD
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
then
sudo /etc/init.d/lircd start

Check your remote with command
irw

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

@mst94
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

@essieM
Copy link

essieM commented Jul 31, 2019

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

@mst94
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!

@mst94
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! https://github.com/AnaviTechnology/anavi-docs/blob/master/anavi-infrared-phat/anavi-infrared-phat.md#setting-up-lirc

I hope it will work for you as well.

@essieM
Copy link

essieM commented Aug 5, 2019

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

@Ogg3l
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?

@mst94
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.

@todlo
Copy link

todlo commented Jan 28, 2020

for anyone on buster who was, like me, struggling and failing with this, see: https://www.raspberrypi.org/forums/viewtopic.php?f=28&t=235256

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.

@ephdtrg
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).

@blanhamMines
Copy link

blanhamMines commented Aug 14, 2020

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