LIRC

Aus VDR Wiki
Wechseln zu: Navigation, Suche

Inhaltsverzeichnis

Beschreibung

LIRC - (L)inux (I)nfrared (R)emote (C)ontrol

Mit dem LIRC Projekt ist es möglich, seinen Computer über nahezu jede Fernbedienung zu steuern. Hierzu ist ein LIRC-fähiges Empfangsmodul nötig, dass man für ca. 15 EURO fertig kaufen oder aber sich nach der Anleitung (siehe Links) selbst zusammenlöten kann.

Hardwareanforderungen

  • LIRC kompatibler Empfaenger

Schaltbild

Mehrere LIRC Empfänger: Es ist möglich, zwei Infrarot Empfänger mit LIRC an einem COM-Port zu betreiben. Beide Empfänger werden dann parallel geschaltet.


                 o +12V
                 |
                 -
                | | 10k
                | |
                 -
Ausgang 1        |   Eingang
o----------|<----*----o
                 |
Ausgang 2        |
o----------|<----

Masse                Masse
o---------------------o

Softwareanforderungen

  • dialog (nur fuer Konfiguration ueber das Menu setup.sh)
  • setserial
  • Kernel-Quellen sollten installiert sein.
  • Die Kernel der 2.6er Serie werden noch nicht vollständig unterstützt. Versuchen sie in diesem Fall die CVS-Version von LIRC.

Installation

Entpacken.

cd $SOURCEDIR
tar jxvf lirc-<VERSION>.tar.bz2
cd lirc-<VERSION>

Einfach setup.sh aufrufen.

Und den Anweisungen folgen.

Alternativ kann man configure auch von Hand aufrufen. Diese ist nicht so verwirrend und du kannst den lircd genauer an Deine Erfordernisse anpassen z.B.

./configure --help

gibt alle Möglichen Optionen aus

--enable-debug etwas mehr Output beim Start oder 
--with-driver=dein_Treiber. 

Hier gleich die von lirc-0.7.1pre4 gelisteten Treiber: none, any, act200l, adaptec, animax, atilibusb, atiusb, audio, avermedia, avermedia_vdomate, avermedia98, bestbuy, bestbuy2, breakoutbox, bte, caraca, chronos, comX, creative_infracd, dsp, cph03x, cph06x,creative, devinput, dvico, ea65, exaudio, flyvideo, gvbctv5pci, hauppauge, hauppauge_dvb, hercules_smarttv_stereo,igorplugusb, imon, irdeo, irdeo_remote,irman, irreal, it87, knc_one, kworld,leadtek_0007, leadtek_0010, leadtek_pvr2000,livedrive_midi, livedrive_seq, logitech,lptX, mceusb, mediafocusI, mouseremote, mouseremote_ps2, mp3anywhere, packard_bell, parallel, pcmak, pcmak_usb, pctv, pixelview_bt878, pixelview_pak, pixelview_pro, provideo, realmagic, remotemaster, sa1100, sasem, serial, silitek, sir, slinke, streamzap, tekram, tekram_bt829, tira, tvbox, udp, uirt2, uirt2_raw.

anschließend:

./configure --with-driver=serial

für den seriellen Treiber,

bzw. serial durch den Gewünschten Treiber ersetzen, wenn das der Treiber für Deine Hardware ist! Dazu muss man herausfinden welche Hardware man genau hat, und welchen Port die IR-Fernbedienung denn wirklich benutzt! Aber das kann man herausfinden. Am besten als root in einer Shell ein cat auf den vermuteten Port setzen. Wobei die unterschiedliche Hardware auch die verschiedensten Ports benutzen. Eine serielle Fernbedienung wird bestimmt /dev/ttyS0..4 benutzen. Dann an der Fernbedienung ein paar Tasten drücken, wenn der richtige Port erwischt wurde erscheinen auf der Shell kryptische Zeichen. Meine audigy .. EX (die mit dem 5 1/4 Zoll Frontbedienteil nutzt Midi! Also muss man die verschiedenen midi ports ausprobieren! Bei mir brachte ein cat /dev/snd/midiC0D1 ( ich nutze alsa) die gewünschten Ergebnisse. Gratulation das ist schon mal ein Erfolg. Du weist jetzt das ein Signal an einem bestimmten device und damit in der Shell ankommt und wichtig, das die Fernbdienung ordungsgemäß arbeitet. Dieses device nutzt der lircd später als input!!! Für den ersten build, wenn man sich noch nicht absolut sicher ist, welche Treiber mit deiner Fernbedienung wirklich funzt, empfiehlt sich.

./configure --with-driver=any Dann kann mann die Treiberoption beim starten des lircd angeben mit: lircd -H dein_Treiber (die gleichen Optionen wie bei configure).

Jetzt noch ein einfaches.

make

Ein Eintrag in der /etc/modprobe.conf kann sinnvoll sein.

alias char-major-61 lirc_serial

Um die Kernel-Module und Programme zu installieren.

make install
setserial /dev/ttyS0 uart none

Für die Audigy sollte kann mann eine zusätzliche Option enable_ir=1 beim Laden des Modul snd-emu10k1 angeben. Ob dies aber wirklich nötig ist habe ich noch nicht überprüft.



Konfiguration

Um den lirc-daemon starten zu können, benötigen wir eine lircd.conf(Beispiel für die DBox2), diese ist unter /etc abzulegen.

Man kann sich aber auch spasseshalber einen funktionierenden Befehl zusammen basteln und später die ermittelten Optionen in die entsprechenden Config-files einzufügen. Das hat den Vorteil. daß man sicher zu einem Ergebniss kommt, auch mit deiner verfügbaren Hardware. Meist ist nur Aufgrund der voneinander abhängigen Einstellungen in den config-dateien ein Mißerfolg programmiert. Der selbsthergestellte lircd befindet sich per Vorgabe in /usr/local/sbin, also

/usr/local/sbin/lircd --help gibt erstmal die unterstützten Optionen. Anmerkung: die vollständige Pfadangabe ist wichtig da sonst eine andere Version z.B. durch Paketinstallation ausgeführt wird.

/usr/local/sbin/lircd -d /dev/snd/midi... hier /den Pfad von dem ermittelten device eingeben

--driver=driver hier deinen vermuteten Treiber angeben, oder kurz -d seriall ; -d livedrive_midi. Der erste Versuch muss aber nicht unbedingt richtig sein, bei meiner audigy war nicht creative sondern livedrive_middi der richtige Treiber.

Dann die Option

--nodaemon oder kurz -n um den lircd auf der Shell beobachten zu können.

und

-p 0666 um allen Schwierigkeiten in Richtung fehlender Berechtigungen zum Lesen des Input-devices zu Umgehen

und dann noch eine Option auf die ich nur Zufall gestossen bin

/home/ich/download/RM-900 Das ist die Datei die bestimmt in welche Zeichen der kryptische Salat umgewandelt wird.

Der lircd sollte dann folgende Zeile ausgeben: parsing rm900 remote  ;). Eine zu deiner Hardware passende Datei kannst du unter href:http://lirc.sourceforge.net/remotes/ downloaden. Notfalls kann man auch die Datei öffnen um den enthaltenden Kommentaren Hinweise auf die richtige Datei zu entnehmen. Verwende bitte den Pfad zu deiner heruntergeladenen Datei.

Und um ganz sicher zu gehen

-o /dev/lircd Das bestimmt das device in welches der lircd schreibt. Der lircd wandelt eigentlich nur die kryptischen Zeichenfolgen welcher er vom Input liest in lesbare Zeichenketten um und gibt diese an das Output-device aus.

Zusammen sieht das für mich wie folgt aus:

/usr/local/sbin/lircd -H livedrive_midi -d /dev/snd/midiC0D1 -n -p 0666 -o /dev/lircd /home/rak64/download/RM-900

Das ist ein enorm langer Befehl. Aber er sollte funtionieren, wenn nicht: einfach kill (Ctrl +C) plus pkill lircd und die Optionen anpassen bis sich Erfolg einstellt. Den Erfolg kontolliert man, indem man eine zweite Shell öffnet und irw eingibt oder auch, um die selbsthergestellte Datei zu treffen /usr/local/bin/irw ein. Der lircd antwortet mit : registering local client und accepted new client on /dev/lircd Wenn die Optionen nicht zutreffen sind, gibt irw folgende Fehlermeldung aus: connect: Connection refused Nun am Besten den kompletten funktionierenden Befehl aufschreiben. Das Editieren der Optionen dürfte jetzt kein riesiges Problem mehr darstellen. Mit Rumprobieren wie beschrieben müsste eigentlich jeder, auch der nicht-Guru seine IR-Fernbedienung zum Laufen kriegen (ich habe anderthalb Wochen trainiert um hierher zu kommen). Wie gesagt, lirc funktioniert super, man muss nur die erforderlichen Optionen ermitteln!

Um die Fernbedienung per Hand anzulernen müssen Sie folgende Schritte vornehmen.

1. Prozess lircd anhalten

    killall lircd

oder pkill lircd

2. Löschen von /etc/lircd.conf (Datei beinhaltet Konfiguration Fernbedienung)

rm /etc/lircd.conf

3. Neue lircd.conf erstellen

irrecord /etc/lircd.conf

Die hierbei wichtigen Tasten sind.

Up
Down
Menu
Ok
Back
Left
Right
Red
Green
Yellow
Blue
0...9
Power
Volume+
Volume-
Mute

Zu finden in der remote.conf. Der Speicherort der remote.conf kann je nach eingesetzter Distribution variieren und beinhaltet alle aus LIRC entnommen Tasten und deren Aktion.

find / -name remote.conf

Beispiel für ct-vdr 4.5: /var/lib/vdr/remote.conf


4. Prozess lirc starten.

/etc/init.d/lirc start

5. Fernbedienung überprüfen.

irw

Ändern des COM Ports.

Adresse und Interrupt des COM Ports werden direkt eingestellt. /etc/modules.conf (COM1).
Existiert /etc/modprobe.d/lirc sind die Aenderungen dort vorzunehmen.
Ein vorhander setserial eintrag mit ttyS0 ist durch ttyS1 zu ersetzen.

alias char-major-61 lirc_serial
options lirc_serial irq=4 io=0x3f8

Für COM2 (Standardwerte).

alias char-major-61 lirc_serial
options lirc_serial irq=3 io=0x2f8

Anschliessend.

depmod

aufrufen, lircd und lirc_serial neu laden.

/etc/init.d/lirc stop
rmmod lirc_serial
modprobe -v lirc_serial
/etc/init.d/lirc start

Zum prinzipiellen Überprüfen der Hardware hilft das Programm mode2. Es gibt kontinuierlich die von der Fernbedienung empfangenen Codes auf stdout aus.

mode2

Konfiguration der lircrc zum Ausführen von Aktionen

Irexec ist ein nützlicher daemon, mit dem man so ziehmlich alles anstellen kann.

Die Konfigurations-Datei lircrc wird unter /etc/lircrc oder unter /home/anwendername/.lircrc abgespeichert.

Aufbau der lircrc.

begin
	prog   = <Daemon für Skript- und Programm-ausführungen>
	button = <Tasten Name, ist in der lircd.conf definiert>
	config = <Auszuführender Befehl>
	mode   = <Modus: Schaltet Modus ein oder aus>
	repeat = <Wiederholung an oder aus (0 oder 1)>
	remote = <Name des Buttons in der lircd.conf>
end

Beispiele.

4 x Button Power würde einen reboot einleiten, somit sind doppel-belegungen ("ueber") vdr möglich.

begin
	prog   = irexec
	button = Power
	button = Power
	button = Power
	button = Power
	config = reboot
end

1 Key = 2 Funktionen.

begin
	prog   = irexec
	button = Reserve
	config = eject
	config = eject -t
end

Wurde diese Datei erzeugt, kann der dameon gestartet werden, wichtig das dieses nach lirc geschieht. (Reihenfolge beachten)

start-stop-daemon --start --verbose --exec /usr/local/sbin/lircd -- /etc/lircd.conf
start-stop-daemon --start --verbose --exec /usr/local/bin/irexec -- --daemon /etc/lircrc


Optionen

lircd

Parameter (kurz) Parameter (lang) Beschreibung
-h --help display this message
-v --version display version
-n --nodaemon don't fork to background
-p --permission=mode file permissions for /dev/lircd
-H --driver=driver use given driver
-d --device=device read from given device
-l --listen[=port] listen for network connections on port
-c --connect=host[:port] connect to remote lircd server
-o --output=socket output socket filename
-P --pidfile=file daemon pid file
-L --logfile=file daemon log file

irexec

Parameter (kurz) Parameter (lang) Beschreibung
-h --help display usage summary
-v --version display version
-d --daemon run in background
-n --name use this program name


CVS

cvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/lirc login
cvs -z8 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/lirc co lirc

Sonstiges

Länge des Kabels:

Ein Betrieb des LIRC Emfängers ist bei einer Kabellänge von bis zu 25m möglich.

Mehrere LIRC Empfänger:

Es ist möglich, zwei Infrarot Empfänger mit LIRC an einem COM-Port zu betreiben. Beide Empfänger werden dann parallel geschaltet.

Mehrere FBs:

cat lircd.conf(1) lircd.conf(2) > lircd.conf

Mehrere PCs zusammenschalten

Es ist möglich die empfangengen Fernbedienungscodes an weitere Computer weiterzuleiten.

Dazu ist der lircd auf den SenderPC mit der option --listen zu starten und auf dem

EmpfängerPC mit der option --connect=SenderPC

Links

[1] LIRC (L)inux (I)nfrared (R)emote (C)ontrol Projekt Seite
[2] CVS snapshots
[3] Homepage des Linux-Kernels
[4] Index unterstützter Fernbedienungen
[5] Sehr gute Bauanleitung und Teileliste für einen Empfänger
[6] ausführliche Beschreibung mit Theorieteil
[7] Sehr ausführliche Bauanleitung mit Bezugsquelle für einen fertigen Empfänger
[8] c't Artikel siehe unten Minimal-Empfänger
[9] Wer Handwerklich nicht so begabt ist (~ 10 Euro)
[10] Wer Handwerklich nicht so begabt ist (~ 14 Euro)
[11] Diplomarbeit
[12] Kleines Projekte "IR-Verlängerung" über 2 Adern