LIRC Infrared Remote Control
Important files:
- /etc/init.d/lirc #loads module and starts deamon
- /dev/lirc0 #lirc device
- /etc/lirc/hardware.conf #lirc device configuration
- /etc/lirc/lircd.conf #lirc remote configuration
- ~\.lircrc #lirc configuration of actions for vlc, totem etc
Install
sudo apt-get install lirc
Configure
I use a "Home-brew (16x50 UART compatible serial port)" / tty0
sudo dpkg-reconfigure lirc
Remote interface:
sudo gedit /etc/lirc/hardware.conf
REMOTE_MODULES="lirc_dev lirc_serial" REMOTE_DEVICE="/dev/lirc0" LOAD_MODULES="true" LIRC_SERIAL_PORT="0x03f8" LIRC_SERIAL_IRQ="4" LIRC_SERIAL_CFLAGS=""
Remote configuration:
Find the conf-file to go with your specific remote on internet:
sudo gedit /etc/lirc/lircd.conf
Configure events, this file is used by the irexec daemon:
gedit ~/.lircrc
Start LIRC services:
sudo service lirc restart
irexec daemon added system -> preferences -> sessions:
irexec -d
Test:
Raw remote interface output:
sudo mode2 -d /dev/lirc0
Remote keys pressed:
sudo irw /dev/lircd
Record buttons:
irrecord --list-namespace sudo irrecord --disable-namespace --device=/dev/lirc0 lircremote.conf
Note: never have had the receiver working, but I didnt need it either,
Notifications
I use this for notifications with remote events. For example, when I press 0 it will Read the current time and show it as a notification.
sudo apt-get install libnotify-bin
notify-send -t 6000 -i ~/Scripts/lirc.ico "Remote"
Problem (old)
Problem to start lirc at boot, modules load fine, daemon fails
remote: lirc: starting LIRC modules [ok] starting remote control daemon(s): LIRC Terminated [fail]
Added "sleep 1" directly after "modprobe":
sudo gedit /etc/init.d/lirc
Note: this was not needed for Urbuntu 11.04
Example event script
Example ".lircrc":
###############################################
###
### needs irexec as daemon (irexec -d)
###
### General mode can be found at the bottom.
### To prevent execution within a mode AND the general section use "flags = quit"
###
###############################################
# run irw in a terminal and press your remote buttons to see what they are
# in this file:
# - banshee
# - vlc
# - totem
# - rhythmbox
# - general
###############################################
### banshee - music player
###############################################
begin banshee
begin
prog = irexec
button = dcc_start
config = banshee --toggle-playing
#config = banshee --pause
#config = banshee --play
delay = 1000
end
begin
prog = irexec
button = dcc_stop
config = banshee --pause
#config = banshee --stop
end
begin
prog = irexec
button = dcc_track_down
config = banshee --previous
end
begin
prog = irexec
button = dcc_track_up
config = banshee --next
end
begin
prog = rhythmbox
button = power
config = quit
flags = mode
end
#20110925 you will need banshee 2.2 or newer for the following to work
begin
prog = irexec
button = dcc_right
config = banshee --set-position=`banshee --query-position | sed 's/.*: /10+/'|bc`
end
begin
prog = irexec
button = dcc_left
config = banshee --set-position=`banshee --query-position | sed 's/.*: /-10+/'|bc`
end
#to obtain xte:
#sudo apt-get install xautomation
#volume up
begin
prog = irexec
button = dcc_counter_reset
config = banshee --set-volume=`banshee --query-volume | sed 's/.*: /10+/'|bc`
#xte 'key XF86AudioRaiseVolume'
repeat = 1
end
#volume down
begin
prog = irexec
button = dcc_time
config = banshee --set-volume=`banshee --query-volume | sed 's/.*: /-10+/'|bc`
#xte 'key XF86AudioLowerVolume'
repeat = 1
end
end banshee
###############################################
### vlc - video player
###############################################
#
# full list of VLC .lirc keys:
# vlc -H --advanced 2>&1 |sed -n '/--key/ {s/^\ *--//; s/^\(.*\) <[^>]*>\ *\(.*\)$/\2 -> \1/; h}; /^.*[^ ].*-> key/ p; /^ -> key/ { n; s/^[ \t\n]*//M; G; s/\n//; p}'
begin vlc
begin
prog = vlc
remote = *
button = dcc_start
repeat = 1
config = key-play-pause
delay = 1000
end
# key-position - shows where you are in the video
begin
prog = vlc
remote = *
button = dcc_stop
repeat = 1
config = key-position
end
begin
prog = vlc
remote = *
button = dcc_right
repeat = 1
#config = key-jump+medium
config = key-jump+short
end
begin
prog = vlc
remote = *
button = dcc_left
repeat = 1
#config = key-jump-medium
config = key-jump-short
end
begin
prog = vlc
remote = *
button = dcc_track_up
repeat = 1
config = key-next
delay = 1000
end
begin
prog = vlc
remote = *
button = dcc_track_down
repeat = 1
config = key-previous
delay = 1000
end
begin
prog = vlc
remote = *
button = dcc_counter_reset
repeat = 1
config = key-vol-up
end
begin
prog = vlc
remote = *
button = dcc_time
repeat = 1
config = key-vol-down
end
begin
prog = vlc
remote = *
button = dcc_rec_mute
repeat = 1
config = key-toggle-fullscreen
delay = 1000
end
begin
prog = vlc
remote = *
button = dcc_record
repeat = 1
config = key-quit
end
# Cycle aspect ratio
begin
prog = vlc
remote = *
button = dcc_append
repeat = 1
config = key-aspect-ratio
delay = 1000
end
# Subtitles
begin
prog = vlc
remote = *
button = dcc_start_mark
repeat = 1
config = key-subtitle-track
delay = 1000
end
# Faster
begin
prog = vlc
button = <remotebutton>
repeat = 3
config = key-faster
end
# Slower
begin
prog = vlc
button = <remotebutton>
repeat = 3
config = key-slower
end
# Snapshots
begin
prog = vlc
button = <remotebutton>
repeat = 3
config = key-snapshot
end
# Audio Syncing
begin
prog = vlc
button = <remotebutton>
repeat = 3
config = key-audiodelay-up
end
# Audio Delay DOWN
begin
prog = vlc
button = <remotebutton>
repeat = 3
config = key-audiodelay-down
end
end vlc
###############################################
### totem - video player
###############################################
begin totem
begin
prog = totem
remote = *
button = dcc_start
repeat = 1
config = pause
config = play
delay = 1000
end
begin
prog = totem
remote = *
button = dcc_stop
repeat = 1
config = pause
end
begin
prog = totem
remote = *
button = dcc_right
repeat = 1
config = seek_forward
end
begin
prog = totem
remote = *
button = dcc_left
repeat = 1
config = seek_backward
end
begin
prog = totem
remote = *
button = dcc_rec_mute
repeat = 1
config = fullscreen
delay = 1000
end
begin
prog = totem
remote = *
button = dcc_counter_reset
repeat = 1
config = volume_up
end
begin
prog = totem
remote = *
button = dcc_time
repeat = 1
config = volume_down
end
begin
prog = totem
remote = *
button = dcc_track_up
repeat = 1
config = next
end
begin
prog = totem
remote = *
button = dcc_track_up
repeat = 1
config = previous
end
begin
prog = totem
remote = *
button = dcc_record
repeat = 1
config = quit
end
end totem
###############################################
### rhythmbox - audio player
###############################################
begin rhythmbox
begin
prog = rhythmbox
button = power
config = quit
flags = mode
end
begin
prog = rhythmbox
button = dcc_start
config = play
config = pause
delay = 1000
end
begin
prog = rhythmbox
button = dcc_stop
config = pause
end
begin
prog = rhythmbox
button =
config = stop
end
begin
prog = rhythmbox
button = dcc_counter_reset
config = volume_up
repeat = 3
end
begin
prog = rhythmbox
button = dcc_time
config = volume_down
repeat = 3
end
begin
prog = rhythmbox
button = dcc_track_up
config = next
end
begin
prog = rhythmbox
button = dcc_track_down
config = previous
end
begin
prog = rhythmbox
button =
config = mute
end
begin
prog = rhythmbox
button =
config = shuffle
end
begin
prog = rhythmbox
button =
config = repeat
end
begin
prog = rhythmbox
button = dcc_right
config = seek_forward
end
begin
prog = rhythmbox
button = dcc_left
config = seek_backward
end
end rhythmbox
###############################################
###
### general mode
###
###############################################
#mode
begin
prog = irexec
button = dcc_mode
config = ~/Scripts/lirc-menu.sh &
end
#0
begin
prog = irexec
button = dcc_0
config = ~/Scripts/lirc-mode-0-*.sh &
#maintain current mode
end
#1
begin
prog = irexec
button = dcc_1
config = ~/Scripts/lirc-mode-1-*.sh &
#mode = rhythmbox
mode = banshee
end
#2
begin
prog = irexec
button = dcc_2
config = ~/Scripts/lirc-mode-2-*.sh &
mode = totem
end
#3
begin
prog = irexec
button = dcc_3
config = ~/Scripts/lirc-mode-3-*.sh &
mode = vlc
end
#4
begin
prog = irexec
button = dcc_4
config = ~/Scripts/lirc-mode-4-*.sh &
end
#5
begin
prog = irexec
button = dcc_5
config = ~/Scripts/lirc-mode-5-*.sh &
end
#6
begin
prog = irexec
button = dcc_6
config = ~/Scripts/lirc-mode-6-*.sh &
end
#7
begin
prog = irexec
button = dcc_7
config = ~/Scripts/lirc-mode-7-*.sh &
end
#8
begin
prog = irexec
button = dcc_8
config = ~/Scripts/lirc-mode-8-*.sh &
end
#9
begin
prog = irexec
button = dcc_9
config = ~/Scripts/lirc-mode-9-*.sh &
end