LIRC Infrared Remote Control: Difference between revisions

From WickyWiki
mNo edit summary
mNo edit summary
 
Line 29: Line 29:
For lower voltages on serial port (like laptop):
For lower voltages on serial port (like laptop):


[[File:lirc_home_brew_ir_receiver_schematic-laptop.gif|thumbnail|home brew ir receiver schematic laptop]]
[[File:lirc_home_brew_ir_receiver_schematic-laptop.gif|home brew ir receiver schematic laptop]]


Best performance schematic:
Best performance schematic:


[[File:lirc_home_brew_ir_receiver_schematic.gif|thumbnail|home brew ir receiver schematic]]
[[File:lirc_home_brew_ir_receiver_schematic.gif|home brew ir receiver schematic]]


Reconfigure:
Reconfigure:

Latest revision as of 08:21, 16 August 2014


Sources

Install

sudo apt-get install lirc

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

Configure

I use a "Home-brew (16x50 UART compatible serial port)" / tty0

For lower voltages on serial port (like laptop):

home brew ir receiver schematic laptop

Best performance schematic:

home brew ir receiver schematic

Reconfigure:

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=""

...

Setup serial port for use with LIRC:

sudo setserial /dev/ttyS0 uart none

Restart LIRC services:

sudo service lirc restart

Test raw remote output:

sudo mode2 --device=/dev/lirc0

Note: never have had the 'home brew' transmitter working.

Mapping the signals to keys

Record buttons:

irrecord --list-namespace
sudo irrecord --disable-namespace --device=/dev/lirc0 lircremote.conf

Recording keys does not work very well, you better try to find the conf file for your remote on the internet and place its contents in '/etc/lirc/lircd.conf'.

sudo gedit /etc/lirc/lircd.conf

Test remote keys pressed:

sudo irw /dev/lircd

Configure commands

Configure events, this file is used by the irexec daemon:

gedit ~/.lircrc

Start irexec deamon, you could make this start automatically:

irexec -d

Notifications

I use this for notifications with remote events.

sudo apt-get install libnotify-bin
notify-send -t 6000 -i ~/Scripts/lirc.ico "Remote"

Problem with automatically starting at boot

Note: don't change anything if you don't have this problem

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

Example event script

Example ".lircrc":

Note: not all supporting scripts are provided.


#
# Uses by 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 most software you need to enable the lirc remote plugin
#
# In this file:
# - banshee
# - vlc
# - totem
# - rhythmbox
# - general mode


# 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 there seems to be a bug so the following does not 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

	#volume up
	begin
        prog = irexec
        button = dcc_counter_reset
        config = banshee --set-volume=`banshee --query-volume | sed 's/.*: /10+/'|bc`
		repeat = 0
	end
	
	#volume down
	begin
        prog = irexec
        button = dcc_time
        config = banshee --set-volume=`banshee --query-volume | sed 's/.*: /-10+/'|bc`
		repeat = 0
	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/lirc-menu.sh &
end


#0
begin
	prog = irexec
	button = dcc_0
	config = ~/Scripts/lirc/lirc-mode-0-*.sh &
	#mode=unchanged
end

#1
begin
	prog = irexec
	button = dcc_1
	config = ~/Scripts/lirc/lirc-mode-1-*.sh &
	#mode = banshee
	mode = rhythmbox
end

#2
begin
	prog = irexec
	button = dcc_2
	config = ~/Scripts/lirc/lirc-mode-2-*.sh &
	mode = totem
end

#3
begin
	prog = irexec
	button = dcc_3
	config =  ~/Scripts/lirc/lirc-mode-3-*.sh &
	mode = vlc
end

#4 toggle media server
begin
	prog = irexec
	button = dcc_4
	config =  ~/Scripts/lirc/lirc-mode-4-*.sh &
	#mode=unchanged
end

#5 toggle remote desktop
begin
	prog = irexec
	button = dcc_5
	config =  ~/Scripts/lirc/lirc-mode-5-*.sh &
	#mode=unchanged
end

#6 random quote
begin
	prog = irexec
	button = dcc_6
	config =  ~/Scripts/lirc/lirc-mode-6-*.sh &
	#mode=unchanged
end

#7 monitor off
begin
	prog = irexec
	button = dcc_7
	config = ~/Scripts/lirc/lirc-mode-7-*.sh &
	#mode=unchanged
end 

#8 rsync backup notify
begin
	prog = irexec
	button = dcc_8
	config = ~/Scripts/lirc/lirc-mode-8-*.sh &
	#mode=unchanged
end

#9 toggle metacity
begin
	prog = irexec
	button = dcc_9
	config = ~/Scripts/lirc/lirc-mode-9-*.sh &
	#mode=unchanged
end