# ###############################################################################
# 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
$ sudo armbian-config
# 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):
$ irw
# 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…

