Example LIRC on a Pi with full-screen Chromium and a silver AppleTV remote
HTML Shell
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


lirc example

The idea here is to control a chromium webpage via a simple remote control (the usecase I am using it for is full-screen TV-like prototypes). More information is in this blog post: https://planb.nicecupoftea.org/2016/12/23/lirc-on-a-raspberry-pi-for-a-silver-apple-remote/

What you need to do

  • Gather hardware
  • Image an SD card for the Pi
  • Install pre-requisites and this repo
  • Make it all run on boot


You will need

With the pi switched off, attach the IR receiver as shown:

i.e. in this gpio diagram: https://www.raspberrypi.org/documentation/usage/gpio-plus-and-raspi2/

  • GPIO 18 ir (1)
  • ground to centre leg (2)
  • 3.3V to ir power (3)

Image a Micro SD card

Download a full Jessie, not lite or NOOBS. I'm asumming 2016-09-23 release and a Pi3. This is on a Mac.

(N is a number, usually 2 for me)

diskutil list
diskutil unmountDisk /dev/diskN
sudo dd bs=1m if=~/Downloads/2016-09-23-raspbian-jessie.img of=/dev/rdiskN

While the SD card is still in your main machine, in config enable lirc module

sudo pico /Volumes/boot/config.txt

Uncomment this to enable the lirc-rpi module


Depending on your version of Jessie, you may need to enable ssh (again before ejecting)

touch /Volumes/boot/ssh

Install prerequisites

Login to the pi

sudo apt-get install lirc #needed ??
sudo apt-get install xdotool

get this repo

git clone git@github.com:bbc/lirc-example.git

if you want to record your own remote

irrecord -d /dev/lirc0 my-remote.lircd

or use the one provided (for an appleTV 2nd gen - silver remote)

sudo cp lirc-example/lirc/my-remote.lircd /etc/lirc/lircd.conf

cp lirc-example/lirc/lircrc > /home/pi/.lircrc
cp -r lirc-example/lirc/keycommands /home/pi/

Autostart Chromium and LIRCD and a tiny server

pico ~/.config/lxsession/LXDE-pi/autostart

make the contents of that file run chromium fullscreen on startup:

@lxpanel --profile LXDE-pi
@pcmanfm --desktop --profile LXDE-pi
@xscreensaver -no-splash

@xset s off
@xset -dpms
@xset s noblank

@/usr/bin/chromium-browser --kiosk --disable-infobars --disable-session-crashed-bubble --no-first-run http://localhost:3000

Make the server and irexec run on boot by adding to rc.local

sudo pico /etc/rc.local

add before exit 0

cd /home/pi/lirc-example/server && /usr/bin/python -m SimpleHTTPServer 3000 &

(sleep 3;
sudo -u pi irexec -d


It should boot into the tiny python server and you should be able to see the javascript keycodes displayed by clicking the remote.