LIRC

Aus Fedorawiki.de

Wechseln zu: Navigation, Suche
Dieser Artikel ist Teil der HOWTO Sammlung

Inhaltsverzeichnis

Installation per Yum

Je nach RPM-Paket werden nur bestimmte Fernbedienungen von lirc unterstützt. Hier ist es jedoch empfehlenswert, lirc von www.lirc.org neu zu compilieren. Wenn dieser Weg zu umständlich ist, kann natürlich auch mit Yum die Installation machen.

[root]# yum install lirc

Kompilieren

Download von lirc-0.8.1.tar.gz oder neuer.

wget http://prdownloads.sourceforge.net/lirc/lirc-0.8.1.tar.gz

Entpacken des Archives mit

tar -xzvf lirc-0.8.1.tar.gz

oder einem ähnlichen Tools.

In das Verzeichnis lirc-0.8.1 wechseln und hier

./setup.sh

ausführen.

Punkt 1 Driver configuration anwählen.

Dann den Treiber auswählen.

Anmerkung Anmerkung: Einige Karten sind hier nicht angeführt, lassen sich jedoch unter dem Punkt "0 other -> 5 Linux input layer" konfigurieren.

Unter Punkt 2 Software configuration können diverse Einstellungen gemacht werden, unter anderem, kann eingestellt werden, ob eine Alternative zu syslogd verwendet werden soll.

Anschliessend den Punkt 3 Save configuration and run configure ausführen. Darauffolgend

make

ausführen,

als "root" anmelden und

[root]# make install

ausführen.

Daemon hinzufügen

Wenn nicht jedesmal von Hand die Verbindung zur Fernbedienung gestartet werden soll, kann im Verzeichnis /etc/rc.d/init.d der lirc-Daemon hinzugefügt werden.

Dazu die Datei lircd im Verzeichnis /etc/rc.d/init.d mit folgendem Inhalt anlegen. Diese Datei entspricht der Variante aus dem rpm-Paket.

#!/bin/sh
#
# $Id: lircd.init,v 1.1 2002/09/28 11:54:12 dude Exp $
# Startup script for the Linux Infrared Remote Control.
#
# chkconfig: - 90 10
# description: Enables infrared controls through LIRC.
#
# config: /etc/lircd.conf

# Source 'em up
. /etc/init.d/functions

[ -x /usr/sbin/lircd ]  || exit 1
[ -x /usr/sbin/lircmd ] || exit 1
[ -f /etc/lircd.conf ]  || [ -f /etc/lircmd.conf ] || exit 1

[ -f /etc/sysconfig/lircd ] && . /etc/sysconfig/lircd

RETVAL=0

start(){
	if [ -f /etc/lircd.conf ]; then
		echo -n $"Starting infrared remote control daemon: "
		daemon lircd $LIRCD_OPTIONS
		RETVAL=$?
		echo
	fi
	if [ -f /etc/lircmd.conf ]; then
		echo -n $"Starting infrared remote control mouse daemon: "
		daemon lircmd
		RETVAL=$?
		echo
	fi
	if [ -f /etc/irexec.conf ]; then
		echo -n $"Starting infrared command execution daemon: "
		daemon irexec --daemon /etc/irexec.conf
		RETVAL=$?
		echo
	fi
	touch /var/lock/subsys/lircd
	return $RETVAL
}

stop(){
	if [ -f /etc/irexec.conf ]; then
		echo -n $"Stopping infrared command execution daemon: "
		killproc irexec
		echo
	fi
	if [ -f /etc/lircmd.conf ]; then
		echo -n $"Stopping infrared remote control mouse daemon: "
		killproc lircmd
		echo
	fi
	if [ -f /etc/lircd.conf ]; then
		echo -n $"Stopping infrared remote control daemon: "
		killproc lircd
		echo
	fi
	RETVAL=$?
	rm -f /var/lock/subsys/lircd
	return $RETVAL
}

restart(){
	stop
	start
}


# See how we were called.
case "$1" in
	start)
		start
		;;
	stop)
		stop
		;;
	restart)
		restart
		;;
	status)
		status lircd
		;;
	condrestart)
		[ -e /var/lock/subsys/lircd ] && restart
		;;
	*)
		echo $"Usage: $0 {start|stop|status|restart|condrestart}"
		RETVAL=1
esac

exit $RETVAL

Anschliessend ist noch

[root]# chkconfig --add lircd

auszuführen.

Einrichten der Fernbedienung (bei Bedarf auch Logging)

Dazu die Datei /etc/logrotate.d/lircd mit folgendem Inhalt anlegen:

/var/log/lircd {
   missingok
   postrotate
       [ -e /var/lock/subsys/lircd ] && /bin/kill -HUP `/bin/cat /var/run/lircd.pid` || /bin/true
   endscript
}


Direkte Einrichtung

Nun muss lirc die Frequenz und Tasten kennenlernen. Das wird mit irrecord gemacht.

Als Beispiel die Fernbedienung von Terratec Cinergy 600 TV Radio:

irrecord -d /dev/input/event1 Terratec_Cinergy_Remote

Die Gerätedatei muss je nach Fernbedienung angepasst werden.

Nun wird man aufgefordert, mit <Enter> zu bestätigen und anschließend auf eine beliebige Taste zu drücken. Solange auf dieser Taste bleiben, bis

Found gap length: xxxxxxx
Now enter the names for the buttons.

erscheint.

Danach geht es zur Einrichtung der Tasten.

Please enter the name for the next button (press <ENTER> to finish recording)

Zum Beispiel:

power
Now hold down button "power"
irrecord: devinput_rec
irrecord: time 1109602772.169967  type 1  code 116  value 1
irrecord: code 80010074
irrecord: devinput_decode

Die Buttons werden in der angegebenen Datei (im Beispiel: Terratec_Cinergy_Remote) gespeichert.

Dies könnte bei der Vervollständigung so aussehen:

# Please make this file available to others
# by sending it to <lirc@bartelmus.de>
#
# this config file was automatically generated
# using lirc-0.7.0(devinput) on Sun Feb 27 18:29:35 2005
#
# contributed by 
#
# brand:                       Terratec_Cinergy_Remote
# model no. of remote control: 
# devices being controlled by this remote:
#

begin remote

 name  Terratec_Cinergy_Remote
 bits           16
 eps            30
 aeps          100

 one             0     0
 zero            0     0
 pre_data_bits   16
 pre_data       0x8001
 gap          237493
 toggle_bit      0


     begin codes
         power                    0x0000000000000074
         app                      0x0000000000000094
         zoom                     0x0000000000000174
         1                        0x000000000000004F
         2                        0x0000000000000050
         3                        0x0000000000000051
         4                        0x000000000000004B
         5                        0x000000000000004C
         6                        0x000000000000004D
         7                        0x0000000000000047
         8                        0x0000000000000048
         9                        0x0000000000000049
         0                        0x0000000000000052
	 chup                     0x0000000000000192
         chdown                   0x0000000000000193
         volup                    0x0000000000000073
         voldown                  0x0000000000000072
         av                       0x0000000000000182
         -/--                     0x0000000000000045
         audio                    0x0000000000000188
         mute                     0x0000000000000071
         left                     0x0000000000000069
         right                    0x000000000000006A
         up                       0x0000000000000067
         down                     0x000000000000006C
         mouseleft                0x0000000000000110
         mouseright               0x0000000000000111
         text                     0x0000000000000096
         rew                      0x00000000000000A8
         fwd                      0x000000000000009F
         rec                      0x00000000000000A7
         play                     0x00000000000000CF
         prev                     0x00000000000000A5
         next                     0x00000000000000A3
         pause                    0x0000000000000077
         stop                     0x0000000000000080
     end codes

end remote

Diese Datei anschließend als lircd.conf im Verzeichnis /etc ablegen.

Nun mit einem Runlevel-Editor, z. B. system-config-services, den lirc-Daemon einrichten.

Einbinden in die dementsprechende Software am Beispiel von xawtv

Der Software sagen, was mit den Tasten geschehen soll. Das geschieht in der Datei /etc/lircrc (systemweit) oder ~/.lircrc (für den Benutzer).

Als Beispiel:

begin
        prog   = xawtv
        button = chup
        config = setstation next
end
begin
       prog   = xawtv
       button = chdown
       config = setstation prev
end
begin
       prog   = xawtv
       button = up
       config = setchannel next
end
begin
       prog   = xawtv
       button = down
       config = setchannel prev
end
begin
       prog   = xawtv
       button = volup
       config = volume inc
end
begin
       prog   = xawtv
       button = voldown
       config = volume dec
end
begin
       prog   = xawtv
       button = zoom
       config = fullscreen
end
begin
       prog   = xawtv
       button = mute
       config = volume mute
end
begin
       prog   = xawtv
       button = power
       config = quit
end
begin
       prog   = xawtv
       button = av
       config = setinput next
end

Mit "prog =" wird das dementsprechende Programm definiert,

mit "button =" der Name des Buttons aus der lircd.conf,

mit "config =" das Kommando, das übergeben werden soll.

Bild:edit.png Dieser Artikel ist noch nicht vollständig. Du kannst helfen, ihn zu bearbeiten.


Einrichtung eines seriellen IR-Empfängers

Dieses Beispiel beschreibt die Einrichtung eines seriellen Empfängers des Typs IMEX IM-1313. Ein serieller Empfänger ist zu empfehlen, weil fast alle Modelle funktionieren und sie relativ preisgünstig (gebraucht) zu erwerben sind. Allerdings sollte man dabei beachten, dass das Mainboard wenigstens noch einen der traditionellen Com-Ports hat, Windowsusern als COM1 etc. bekannt.

Herunterladen des Tarballs u. Installation

Herunterladen der aktuellsten Version und entpacken (siehe oben!) In das Verzeichnis lirc-0.8.x wechseln und entweder

./setup.sh

für die grafische Installation auswählen oder aber

./configure --with-driver=serial
make 
[root]# make install

aufrufen. Eine Hilfe für ./configure kann mit der Option --help anzeigt werden. Das make install installiert die Kernelmodule nach /lib/modules/$(uname -r)/misc.

Automatisches Laden der Kernelmodule

Dazu ist folgender Eintrag in der /etc/modprobe.conf nötig:

alias char-major-61 lirc_serial
options lirc_serial irq=3 io=0x2f8
install lirc_serial /bin/setserial /dev/ttyS1 uart none;\
/sbin/modprobe --ignore-install lirc_serial

Die 2. serielle Schnittstelle wird hier verwendet! Um herauszufinden, auf welchem Interrupt der serieller Port lauscht, folgenden Befehl verwenden:

[root]# setserial /dev/ttyS0

für den ersten COM-Port.

Jetzt ist es Zeit für den ersten reboot.

Testen der Kernelmodule

In lsmod sollten die benötigten Module jetzt auftauchen:

lirc_serial            17156  0 
lirc_dev               18676  1 lirc_serial

Außerdem sollte sich jetzt im Verzeichnis /dev folgende Geräte finden lassen:

lircd 
lirc0

Jetzt starten wir mal den ersten Test, ob das Gerät überhaupt ansprechbar ist:

[root]# mode 2 -d /dev/lirc0

Nun sollten Zahlen und so weiter über das Terminal huschen, wenn wir irgendwelche X-beliebigen Tasten drücken.

Erstellen der lircd.conf

[root]# irrecord -d /dev/lirc0 im_1313

wie weiterverfahren wird, siehe oben.

<b>Achtung</b> <b>Achtung:</b> Dabei muß in diesem Moment der Dienst lirc und der Daemon lircd laufen

Erstellen des lircrc

Dies hängt davon ab, welche Anwendung ferngesteuert werden soll, hier ein Beispiel mit 2 Tastenbelegungen (Lautstärkeregelung) mit mplayer:

begin
   button = VOL+
   prog = mplayer
   config = volume 1
   repeat = 1
end
begin
   button = VOL-
   prog = mplayer
   config = volume -1
   repeat = 1
end

Abschließendes

Ich habe weder eine Datei lircd im Verzeichnis /etc/rc.d/init.d noch eine Datei lirc unterhalb des Verzeichnises /etc/init.d. Ihr solltet lediglich sicherstellen das ihr die richtige Version des Daemons passend zu eurer Version von lirc laufen habt (alles als Root ab hier):

[root]# lircd -v

Eine Fedora-Version von lirc deinstalliert habt

rpm -q lirc #falls installiert noch deinstallieren:  
rpm -e --nodeps lirc

Ein Eintrag in der /etc/rc.local gemacht wurde:

/usr/local/sbin/lircd -d /dev/lirc0

Die Dateirechte gesetzt wurden:

chmod a+rw /dev/lirc*

Nun ist es Zeit für den nächsten reboot und hoffen das alles läuft.


Links

Persönliche Werkzeuge