# ###############################################################################
# if Triggerhappy RC service has been previously installed
# it may not be necessary to install Lirc
# ###############################################################################
# STEP 16bis
# OPTIONAL: Remote Control Management with LIRC
# the previous tutorial on remote management by the very easy to use TriggerHappy did not make you happy? so you want a deep control of your RC? read the following…
# Using the integrated IR sensor of the Odroid board to drive your music library with a remote control is possible
# We are going to install a remote control management using LIRC (Linux Infrared Remote Control )
# for the example we use a very common Remote Control using the standard MCE (Media Center Remote Control) format
# reference Remote Control is XPC-RC01 or RC6 Media Center
# do not plug the USB IR sensor included with the remote control, in this example we do not need it as we use the IR sensor integrated on Odroid board
# more info on LIRC is available here: https://lirc.org/
# a snapshot of lirc remotes is available for download here:
# download it, extract it and browse remote images to find the closest one
https://sourceforge.net/p/lirc-remotes/code/ci/master/tree/remotes/
# install LIRC
# Armbian for Odroid boards includes a wizard for LIRC installation,
# launch armbian-config and select Network > Install IR
# to install it manually
$ sudo apt-get install lirc
# modify the driver
$ sudo nano /etc/lirc/lirc_options.conf
[lircd]
nodaemon = False
driver = default
device = /dev/lirc0
output = /var/run/lirc/lircd
pidfile = /var/run/lirc/lircd.pid
plugindir = /usr/lib/aarch64-linux-gnu/lirc/plugins
#plugindir = /usr/lib/x86_64-linux-gnu/lirc/plugins/
permission = 666
allow-simulate = No
repeat-max = 600
[lircmd]
uinput = False
nodaemon = False
[modinit]
code = /sbin/modprobe meson-ir
#code = /sbin/modprobe lirc_serial
[lircd-uinput]
# add-release-events = True
# release-timeout = 50
# release-suffix = _EVUP
# modify the default remote control configuration file
# this one is based on Remote Control ShuttleX conf (PN31) available here
# http://lirc.sourceforge.net/remotes/shuttle/PN31
# Remote Control DB is available here:
# https://sourceforge.net/p/lirc-remotes/code/ci/master/tree/remotes/
# create the remote config file
$ sudo nano /etc/lirc/lircd.conf.d/myremote.lircd.conf
# copy the configuration
#
# this config file was automatically generated
# using WinLIRC 0.6.5 (LIRC 0.6.1pre3) on Mon Aug 25 22:24:07 2003
#
# contributed by lirc @ trollmaster.net
#
# brand: made in china
# model: XPC-RC01 based on PN31 from ShuttleX
# supported devices:
#
begin remote
name CNRemote
bits 9
flags SPACE_ENC
eps 40
aeps 100
header 3021 1469
one 310 266
zero 310 780
ptrail 310
post_data_bits 8
post_data 0xFC
gap 12038
toggle_bit 0
begin codes
KEY_POWER 0x000000000000017B
KEY_TV 0x00000000000001BB
print 0x000000000000013B
KEY_EXIT 0x00000000000001DB
KEY_AUDIO 0x000000000000015B
KEY_IMAGES 0x000000000000019B
KEY_VIDEO 0x000000000000011B
KEY_MENU 0x00000000000001EB
KEY_BACK 0x000000000000014B
KEY_R 0x000000000000018B
KEY_OK 0x0000000000000177
KEY_PREVIOUS 0x000000000000016B
KEY_PLAYPAUSE 0x00000000000001AB
KEY_NEXT 0x000000000000012B
KEY_REWIND 0x0000000000000167
KEY_STOP 0x00000000000001B7
KEY_FASTFORWARD 0x000000000000016F
KEY_VOLUMEUP 0x00000000000001A7
KEY_VOLUMEDOWN 0x0000000000000127
KEY_INFO 0x0000000000000137
KEY_CHANNELUP 0x00000000000001AF
KEY_CHANNELDOWN 0x000000000000012F
KEY_MUTE 0x00000000000001C7
KEY_RECORD 0x00000000000001D7
KEY_BACKSPACE 0x00000000000001CF
KEY_1 0x0000000000000147
KEY_2 0x0000000000000157
KEY_3 0x000000000000014F
KEY_4 0x0000000000000187
KEY_5 0x0000000000000197
KEY_6 0x000000000000018F
KEY_7 0x0000000000000107
KEY_8 0x0000000000000117
KEY_9 0x000000000000010F
KEY_DOT 0x00000000000001FB
KEY_0 0x00000000000001E7
KEY_L 0x00000000000001F7
KEY_UP 0x00000000000001B3
KEY_DOWN 0x000000000000011F
KEY_LEFT 0x00000000000001EF
KEY_RIGHT 0x00000000000001BF
end codes
end remote
# CTRL+O to save
# CTRL+X to exit
# change the default remote control buttons configuration to drive MPD with irexec a special daemon included with LIRC
$ sudo nano /etc/lirc/irexec.lircrc
begin
prog = irexec
button = KEY_PLAY
config = mpc play >/dev/null
flags = quit
end
begin
prog = irexec
button = KEY_STOP
config = mpc stop >/dev/null
flags = quit
end
begin
prog = irexec
button = KEY_PAUSE
config = mpc pause >/dev/null
flags = quit
end
begin
prog = irexec
button = KEY_PLAYPAUSE
config = mpc toggle >/dev/null
flags = quit
end
begin
prog = irexec
button = KEY_NEXT
config = mpc next >/dev/null
flags = quit
end
begin
prog = irexec
button = KEY_PREVIOUS
config = mpc prev >/dev/null
flags = quit
end
begin
prog = irexec
button = KEY_FASTFORWARD
config = mpc seek +10 >/dev/null
flags = quit
end
begin
prog = irexec
button = KEY_FORWARD
config = mpc seek +10 >/dev/null
flags = quit
end
begin
prog = irexec
button = KEY_REWIND
config = mpc seek -10 >/dev/null
flags = quit
end
begin
prog = irexec
button = KEY_3
config = /home/pi/scripts/./playlist3.sh >/dev/null
flags = quit
end
begin
prog = irexec
button = KEY_1
config = /home/pi/scripts/./playlist1.sh >/dev/null
flags = quit
end
begin
prog = irexec
button = KEY_2
config = /home/pi/scripts/./playlist2.sh >/dev/null
flags = quit
end
begin
prog = irexec
button = KEY_6
config = /home/pi/scripts/./lowbass.sh >/dev/null
flags = quit
end
begin
prog = irexec
button = KEY_9
config = /home/pi/scripts/./jbleq.sh >/dev/null
flags = quit
end
begin
prog = irexec
button = KEY_0
config = mpc enable only 1 && mpc play >/dev/null
flags = quit
end
# CTRL+O to save
# CTRL+X to exit
# create a symbolic link to match any version of irexec
$ sudo ln -s /etc/lirc/irexec.lircrc /etc/lirc/lircrc
# we can already enable LIRC service and run irexec manually to catch remote control button and drive MPD
# but it’s better to modify the irexec service to start it at boot
$ sudo nano /lib/systemd/system/irexec.service
[Unit]
Documentation=man:irexec(1)
Documentation=http://lirc.org/html/configure.html
Documentation=http://lirc.org/html/configure.html#lircrc_format
Description=Handle events from IR remotes decoded by lircd(8)
After=network.target
Wants=lircd.service
[Service]
Type=simple
ExecStart=/usr/bin/irexec /etc/lirc/irexec.lircrc
Restart=on-failure
SuccessExitStatus=3 4
RestartForceExitStatus=3 4
[Install]
WantedBy=multi-user.target
# CTRL+O to save
# CTRL+X to exit
# activate LIRC and IREXEC service
$ sudo systemctl daemon-reload
$ sudo systemctl enable lircd
$ sudo systemctl start lircd
$ sudo systemctl enable irexec
$ sudo systemctl start irexec
$ sudo systemctl status irexec
# be sure to stop lircd uinput service to not inject key events to kernel
$ sudo systemctl stop lircd-uinput.service
$ sudo systemctl disable lircd-uinput.service
$ sudo systemctl status lircd-uinput.service
# reboot and chek the status
$ sudo reboot
$ sudo systemctl status lircd
# both services are now activated, enabled and running at startup
# if your remote control do not send the correct key use the dump function to
# identify the correct key and change your cmds in /etc/lirc/irexec.lircrc (see above)
# To dump all events received through your remote control (useful to get the corresponding keys):
# CTRL+C to exit
# Run your MPD Client (MALP Android for example) play an album
# use your remote control to stop, play, go next, prev,…
# Congrats! Your MCE Remote controls the Music Player Daemon!
Click the button NEXT below to continue…