# ###############################################################################
# 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…