LIRC

Aus VDR Wiki
(Unterschied zwischen Versionen)
Wechseln zu: Navigation, Suche
(Konfiguration)
 
(95 dazwischenliegende Versionen von 54 Benutzern werden nicht angezeigt)
Zeile 2: Zeile 2:
 
LIRC - ('''L''')inux ('''I''')nfrared ('''R''')emote ('''C''')ontrol
 
LIRC - ('''L''')inux ('''I''')nfrared ('''R''')emote ('''C''')ontrol
  
Mit dem LIRC Projekt ist es möglich, einen Computer (PC) über nahezu jede [[Fernbedienung]] zu steuern. Hierzu ist ein LIRC-fähiges Empfangsmodul nötig das man für ca. 15 EURO fertig kaufen oder aber nach Anleitung (siehe Links) selbst zusammenlöten kann.
+
Mit dem LIRC Projekt ist es möglich, einen Computer (PC) über nahezu jede [[Fernbedienung]] zu steuern. Hierzu ist ein LIRC-fähiges Empfangsmodul nötig, das man ab ca. 5 Euro (zzgl. Versand) fertig kaufen oder aber nach Anleitung (siehe Links) selbst zusammenlöten kann.
  
 
==Hardwareanforderungen==
 
==Hardwareanforderungen==
* LIRC kompatibler Empfänger
+
* LIRC kompatibler Empfänger  
 +
 
 +
:* Standardversion für externe COM-Schnittstelle
 +
[[Bild:Schaltplan.png]]
 +
::Spannungsversorgung erfolgt via RTS der COM-Schnittstelle (+/-12 V), damit keine negative Spannung am Eingang des 5-Volt-Spannungsreglers 78L05 anliegt, ist die Diode 1N4148 eingebaut.
 +
 
 +
 
 +
:* Modifizierte Version für interne COM-Schnittstelle
 +
[[Bild:Locostlirc.jpg]]
 +
::In dieser Version wird die Versorgungsspannung (+5 V) intern am Mainboard abgegriffen (z. B. interner USB-Port), daher entfällt der Spannungsregler und die Diode.
 +
 
 +
 
 +
Manche Mainboards liefern an RTS unter Belastung weniger als +10 V. Sollte dies der Fall sein, so funktioniert möglicherweise die Standardversion nicht mehr, da der 78L05 eine Eingangsspannung von mindestens +8 V benötigt, um zuverlässig zu arbeiten. Zusätzlich fallen an der Diode nochmals 0,7 Volt ab. In diesen Fall sollte man auf die modifizierte Version zurückgreifen.
 +
 
 +
Mit dem generischen LIRC-Modul 'devinput' kann LIRC auch mit Fernbedienung und IR-Empfänger von DVB-Karten, aber auch die normale Tastatur verwendet werden. Es ist aber sinnvoller Geräte die per Kernelinterface /dev/input ansprechbar sind, das [[Remote-plugin]] zu verwenden.
  
 
==Schaltbild==
 
==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.
+
Mehrere LIRC-Empfänger: Es ist möglich, zwei Infrarotempfänger mit LIRC an einem COM-Port zu betreiben. Beide Empfänger werden dann parallel geschaltet:
 
<pre>
 
<pre>
  
                 o +12V
+
                 o +12 V
 
                 |
 
                 |
 
                 -
 
                 -
                 | | 10k
+
                 | | 10 kOhm
 
                 | |
 
                 | |
 
                 -
 
                 -
Zeile 21: Zeile 35:
 
                 |
 
                 |
 
Ausgang 2        |
 
Ausgang 2        |
o----------|<----
+
o----------|<-----
  
 
Masse                Masse
 
Masse                Masse
 
o---------------------o
 
o---------------------o
 
</pre>
 
</pre>
 +
 +
==Fertige Empfänger==
 +
Bei www.pollin.de gibt es die [[Pollin-Infrarot-Maus | Infrarot-Maus]]. Bestellnummer: 571 047, Preis: 6,95 €
 +
 +
Auch gut als Grundlage für Erweiterungen geeignet.
  
 
==Softwareanforderungen==
 
==Softwareanforderungen==
* dialog (nur fuer Konfiguration ueber das Menu '''setup.sh''')
+
* dialog (nur für die Konfiguration über das Menu '''setup.sh''')
 
* setserial
 
* setserial
 
* [http://www.kernel.org Kernel-Quellen] sollten installiert sein.
 
* [http://www.kernel.org Kernel-Quellen] sollten installiert sein.
* Die Kernel der 2.6er Serie werden noch nicht vollständig unterstützt. Versuchen sie in diesem Fall die [http://www.lirc.org/cvs.html CVS-Version] von LIRC.
+
* Die jeweils aktuellen Kernel der 2.6er Serie werden eventuell noch nicht vollständig unterstützt. Versuchen sie in diesem Fall, die [http://www.lirc.org/cvs.html CVS-Version] von LIRC.
  
 
==Installation==
 
==Installation==
Entpacken.
 
  
cd $SOURCEDIR
+
===Kurzfassung===
tar jxvf lirc-<VERSION>.tar.bz2
+
cd lirc-<VERSION>
+
  
Einfach setup.sh aufrufen.
+
Kurzfassung, die den größten Teil aller Installationen abdecken sollte (com1)
  
Und den Anweisungen folgen.
+
Vorhandene lircd.conf nach /etc kopieren
  
Alternativ kann configure von Hand aufrufen werden. Diese ist nicht so verwirrend und lirc kann den persönlichen Erfordernissen angepasst werden.
+
lirc Paket entpacken und in das Verzeichnis wechseln
  
Z.B.:
+
./configure --with-driver=serial
   
+
  make
./configure --help
+
make install
 +
setserial /dev/ttyS0 uart none
 +
modprobe lirc_serial
 +
irrecord /etc/lircd.conf                    # oder Download per wget http://lirc.sourceforge.net/remotes/... -O /etc/lircd.conf
 +
lircd
 +
irw /dev/lircd                              # Fernbedienung testen
  
gibt alle Möglichen Optionen aus
+
In der CVS Version wird lircd folgendermaßen installiert
  
  --enable-debug etwas mehr Output beim Start oder
+
  cvs -d:pserver:anonymous@lirc.cvs.sourceforge.net:/cvsroot/lirc login
 +
# Passwort-Abfrage einfach mit Return-Taste übergehen
 +
cvs -z8 -d:pserver:anonymous@lirc.cvs.sourceforge.net:/cvsroot/lirc co lirc
 +
cd lirc
 +
cvs update  #Aktualisierung der Quellen nach dem ersten Durchlauf nur hierüber nötig
 +
./autogen.sh
 +
./setup.sh
 +
make
  
--with-driver=dein_Treiber.
+
===Ausführlich===
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:
+
Entpacken:
  
  ./configure --with-driver=serial
+
  cd $SOURCEDIR
 +
tar jxvf lirc-<VERSION>.tar.bz2
 +
cd lirc-<VERSION>
  
für den seriellen Treiber,
+
Einfach setup.sh aufrufen
 +
setup.sh
 +
und den Anweisungen folgen.
  
bzw. serial durch den Gewünschten Treiber ersetzen, wenn das der Treiber für die richtige Hardware ist. Dazu muss herausgefunden werden, welche Hardware genutzt wird und _welchen_ Port die IR-Fernbedienung benutzt. Es empfiehlt sich, als root in einer Shell ein cat auf den vermuteten Port setzen, wobei unterschiedliche Hardware entsprechend verschiedenste Ports benutzen. Eine serielle Fernbedienung wird bestimmt /dev/ttyS0..4 benutzen.  
+
Alternativ kann configure von Hand aufgerufen werden. Diese ist nicht so verwirrend und lirc kann den persönlichen Erfordernissen angepasst werden. Z. B.:
Dann an der Fernbedienung ein paar Tasten drücken, wenn der richtige Port erwischt wurde erscheinen auf der Shell kryptische Zeichen.
+
./configure --help
Meine audigy .. EX (Ausführung mit 5 1/4 Zoll Frontbedienteil) nutzt Midi, d.h. man muß die verschiedenen midi ports ausprobieren. Bei mir brachte ein
+
gibt alle möglichen Optionen aus.
 +
./configure --enable-debug      #etwas mehr Output beim Start
 +
oder
 +
  ./configure --with-driver=<dein_Treiber>
  
cat  /dev/snd/midiC0D1
+
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.
  
( ich nutze alsa) die gewünschten Ergebnisse. Ist man so weit gekommen, so ist dieser Erfolg eine kleine Gratulation wert, da nun gewährleistet ist das ein IR-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!
+
Anschließend, wenn man den seriellen Treiber wählt:
Für den ersten build, wenn man sich noch nicht absolut sicher ist, welche Treiber mit deiner Fernbedienung wirklich funktioniert, empfiehlt sich:
+
./configure --with-driver=serial
  
./configure --with-driver=any
+
Ansonsten serial durch den richtigen Treiber für die Hardware ersetzen. Dazu muss herausgefunden werden, welche Hardware genutzt wird und '''welchen''' Port die IR-Fernbedienung benutzt. Es empfiehlt sich, als root in einer Shell ein cat auf den vermuteten Port zu setzen, wobei unterschiedliche Hardware entsprechend verschiedenste Ports benutzen. Eine serielle Fernbedienung wird bestimmt /dev/ttyS0..4 benutzen.
 +
Dann auf der Fernbedienung ein paar Tasten drücken. Wenn der richtige Port erwischt wurde, erscheinen auf der Shell kryptische Zeichen. Beachte, dass die Ausgabe gepuffert sein kann! Unter Umständen muss man einige dutzende Male auf die Fernbedienung drücken, bis der Ausgabepuffer voll ist und die Zeichen auf der Konsole angezeigt werden.
  
Dann kann mann die Treiberoption beim starten des lircd angeben:´
+
Meine audigy .. EX (Ausführung mit 5 1/4 Zoll Frontbedienteil) nutzt Midi, d. h., man muss die verschiedenen Midi-Ports ausprobieren. Bei mir brachte ein
  
lircd -H dein_Treiber (die gleichen Optionen wie bei configure).
+
  cat /dev/snd/midiC0D1
   
+
Jetzt noch ein einfaches:
+
  
make
+
(ich nutze Alsa) die gewünschten Ergebnisse. Ist man so weit gekommen, so ist dieser Erfolg eine kleine Gratulation wert, da nun gewährleistet ist, dass ein IR-Signal an einem bestimmten device und damit in der Shell ankommt und wichtig, dass die Fernbedienung ordnungsgemäß arbeitet. Dieses device nutzt der lircd später als Input!
 +
Wenn man sich noch nicht absolut sicher ist, welche Treiber mit der Fernbedienung wirklich funktionieren, empfiehlt sich für den ersten Build folgendes:
 +
./configure --with-driver=any
  
Ein Eintrag in der '''/etc/modprobe.conf''' kann sinnvoll sein:
+
Dann kann man die Treiberoption beim Starten des lircd angeben:
 +
lircd -H <dein_Treiber>          #die gleichen Optionen wie bei configure
  
alias char-major-61 lirc_serial
+
Jetzt noch ein einfaches:
 +
make
  
um die Kernel-Module und Programme zu installieren.
+
Um die Kernel-Module und Programme zu installieren:
 +
make install
  
make install
+
Ein Eintrag in der '''/etc/modprobe.conf''' kann sinnvoll sein:
setserial /dev/ttyS0 uart none
+
alias char-major-61 lirc_serial
 +
options lirc_serial irq=4 io=0x3f8    #hier Standartwerte für COM1, an dem der Empfänger angeschlossen ist
  
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.
+
Bevor beim Booten die Module lirc_serial und lirc_dev geladen werden, muss der UART disabled werden:[http://www.vdr-portal.de/board/thread.php?threadid=79515]
 +
setserial /dev/ttyS0 uart none
 +
 
 +
Für die Audigy kann man die zusätzliche Option enable_ir=1 beim Laden des Moduls snd-emu10k1 angeben. Ob dies aber wirklich nötig, ist habe ich noch nicht überprüft.
  
  
Zeile 98: Zeile 140:
 
<!-- ==Optionen== -->
 
<!-- ==Optionen== -->
 
<!-- ==Patches== -->
 
<!-- ==Patches== -->
 +
 +
===Test der Installation===
 +
Nach der Installation, kann man einen ersten Test bei gestopptem Lirc machen. Wenn man Tasten auf der Fernbedienung drückt muß eine Ausgabe kommen, ansonsten sind die Treiber nicht korrekt installiert.
 +
/etc/init.d/lirc stop
 +
mode2 -d <device>
 +
<device> ist in den meisten Fällen "/dev/lircd" oder "/dev/lirc0" oder "/dev/lirc/0"
  
 
==Konfiguration==
 
==Konfiguration==
Um den '''lirc-daemon''' starten zu können, benötigen wir eine [http://lirc.sourceforge.net/remotes/nokia/DBOX2 lircd.conf](Beispiel für die DBox2), diese ist unter '''/etc''' abzulegen.
+
Um den '''lirc-daemon''' starten zu können, benötigen wir eine [http://lirc.sourceforge.net/remotes/nokia/DBOX2 lircd.conf](Beispiel für die DBox2), diese ist unter '''/etc''' (kann auch '''/etc/lirc''' sein, je nach Distri) 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.
+
Man kann sich aber auch einen funktionierenden Befehl zusammenstellen und später die ermittelten Optionen in die entsprechenden Konfigurationsdateien einfügen. Das hat den Vorteil, daß man sicher zu einem Ergebnis kommt, auch mit der verfügbaren Hardware. Meist ist nur Aufgrund der voneinander abhängigen Einstellungen in den Konfigurationsdateien ein Misserfolg möglich.
Der selbsthergestellte lircd befindet sich per Vorgabe in /usr/local/sbin, also  
+
Der selbst hergestellte 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  --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
+
/usr/local/sbin/lircd -d /dev/snd/midi... hier /den Pfad von dem ermittelten Gerät 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  
+
--driver=driver hier deinen vermuteten Treiber angeben, oder kurz -H serial ; -H livedrive_midi. Der erste Versuch muss aber nicht unbedingt richtig sein, bei meiner audigy war nicht creative sondern  
 
livedrive_midi der richtige Treiber.
 
livedrive_midi der richtige Treiber.
  
Zeile 122: Zeile 170:
 
und dann noch eine Option auf die ich nur Zufall gestossen bin
 
und dann noch eine Option auf die ich nur Zufall gestossen bin
  
  /home/ich/download/RM-900
+
  /etc/lirc/RM-900.conf
 
Das ist die Datei die bestimmt in welche Zeichen der kryptische Salat umgewandelt wird.
 
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.
+
Der lircd sollte dann folgende Zeile ausgeben: parsing rm900 remote . Eine zu deiner Hardware passende Datei kann unter http://lirc.sourceforge.net/remotes/ herunterladen geladen werden. 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
 
Und um ganz sicher zu gehen
Zeile 132: Zeile 180:
 
Zusammen sieht das für mich wie folgt 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
+
/usr/local/sbin/lircd -H livedrive_midi -d /dev/snd/midiC0D1 -n -p 0666 -o /dev/lircd /etc/lirc/RM-900.conf
  
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.  
+
Das ist ein enorm langer Befehl. Aber er sollte funktionieren, 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
+
Den Erfolg kontrolliert man, indem man eine zweite Shell öffnet und  irw eingibt oder auch, um die selbst hergestellte 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
 
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!
+
Nun am Besten den kompletten funktionierenden Befehl aufschreiben. Das Editieren der Optionen dürfte jetzt kein riesiges Problem mehr darstellen. Mit herumprobieren 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!
  
 +
===Neuanlernen der Fernbedienung===
 
Um die Fernbedienung per Hand anzulernen müssen Sie folgende Schritte vornehmen.
 
Um die Fernbedienung per Hand anzulernen müssen Sie folgende Schritte vornehmen.
  
 
1. Prozess lircd anhalten
 
1. Prozess lircd anhalten
  
     killall lircd
+
     /etc/init.d/lirc stop
oder pkill lircd
+
  
2. Löschen von '''/etc/lircd.conf''' (Datei beinhaltet Konfiguration Fernbedienung)
+
2. Löschen oder Umbenennen einer vorhandenen Datei '''/etc/lircd.conf''', diese Datei beinhaltet die LIRC Konfiguration der Fernbedienung.
  
 
  rm /etc/lircd.conf
 
  rm /etc/lircd.conf
  
3. Neue lircd.conf erstellen
+
3. Neue lircd.conf anlernen. (evtl. ist beim folgenden Befehlsaufruf die Option '''-d /dev/lirc0''' nötig, ohne diese wird /dev/lirc verwendet.)
  
  irrecord /etc/lircd.conf
+
  irrecord -n /etc/lircd.conf
  
 
Die hierbei wichtigen Tasten sind.
 
Die hierbei wichtigen Tasten sind.
Zeile 176: Zeile 224:
  
 
  find / -name remote.conf
 
  find / -name remote.conf
 
  
 
4. Prozess lirc starten.
 
4. Prozess lirc starten.
Zeile 186: Zeile 233:
 
  irw
 
  irw
  
'''Ändern des COM Ports.'''
+
6. Lircd direkt überprüfen.
  
Adresse und Interrupt des COM Ports werden direkt eingestellt. '''/etc/modules.conf''' (COM1).<br/>
+
Um den Lircd direkt zu überprüfen, kann der Socket direkt benutzt werden, dort sind dann auch die Befehle, wie Green, Red, etc. direkt zu sehen:
Existiert '''/etc/modprobe.d/lirc''' sind die Aenderungen dort vorzunehmen. <br/>
+
socat UNIX-CONNECT:/dev/lircd STDIO
Ein vorhander setserial eintrag mit ttyS0 ist durch ttyS1 zu ersetzen.
+
 
 +
Anmerkung: Falls irw ordnungsgemäß funktioniert und der VDR fehlerfrei LIRC aufruft, die Fernbedienung aber dennoch nicht im VDR funktioniert, vergewissert Euch, dass /etc/lircd.conf und [[remote.conf]] auch wirklich die gleichen Namen der Tastenbelegungen haben.
 +
 
 +
===Ändern des COM-Ports.===
 +
 
 +
Adresse und Interrupt des seriellen Anschlusses werden direkt in '''/etc/modules.conf''' eingegeben. Wenn '''/etc/modprobe.d/lirc''' existiert, sind die Änderungen dort vorzunehmen.  
 +
 
 +
Für /dev/ttyS0 (COM1 - Standardwerte).
  
 
  alias char-major-61 lirc_serial
 
  alias char-major-61 lirc_serial
 
  ''options lirc_serial irq=4 io=0x3f8''
 
  ''options lirc_serial irq=4 io=0x3f8''
  
Für COM2 (Standardwerte).
+
Für /dev/ttyS1 (COM2 - Standardwerte).
  
 
  alias char-major-61 lirc_serial
 
  alias char-major-61 lirc_serial
 
  ''options lirc_serial'' '''irq=3 io=0x2f8'''
 
  ''options lirc_serial'' '''irq=3 io=0x2f8'''
  
Anschliessend.
+
Ein vorhandener setserial Eintrag mit ttyS0 ist durch ttyS1 zu ersetzen.
 +
 
 +
Anschließend die Abhängigkeiten der Module aktualisieren, dazu
  
 
  depmod
 
  depmod
Zeile 206: Zeile 262:
 
aufrufen, lircd und lirc_serial neu laden.
 
aufrufen, lircd und lirc_serial neu laden.
  
  /etc/init.d/lirc stop
+
  /etc/init.d/lircd stop
 
  rmmod lirc_serial
 
  rmmod lirc_serial
 
  modprobe -v lirc_serial
 
  modprobe -v lirc_serial
Zeile 212: Zeile 268:
  
 
Zum prinzipiellen Überprüfen der Hardware hilft das Programm mode2.
 
Zum prinzipiellen Überprüfen der Hardware hilft das Programm mode2.
Das korreke Device mit übergeben,
+
Das korrekte Device mit übergeben,
 
mode2 funktioniert bereits, bevor lircd läuft. Es ist daher die erste Anlaufstelle zum Debuggen, noch bevor lircd.conf oder remote.conf ins Spiel kommen.
 
mode2 funktioniert bereits, bevor lircd läuft. Es ist daher die erste Anlaufstelle zum Debuggen, noch bevor lircd.conf oder remote.conf ins Spiel kommen.
 
mode2 gibt kontinuierlich die von der Fernbedienung empfangenen Codes (als Pulse/Pause-Zeiten) auf stdout aus.
 
mode2 gibt kontinuierlich die von der Fernbedienung empfangenen Codes (als Pulse/Pause-Zeiten) auf stdout aus.
  
 
  mode2 -d /dev/lirc
 
  mode2 -d /dev/lirc
  mode2 -d /dev/lirc/0
+
  mode2 -d /dev/lirc0
  
 
==Konfiguration der lircrc zum Ausführen von Aktionen==
 
==Konfiguration der lircrc zum Ausführen von Aktionen==
Irexec ist ein nützlicher daemon, mit dem man so ziehmlich alles anstellen kann.
+
Irexec ist ein nützlicher daemon, mit dem man so ziemlich alles anstellen kann.
  
Die Konfigurations-Datei lircrc wird unter '''/etc/[[lircrc]]''' oder unter '''/home/anwendername/.lircrc''' abgespeichert.
+
Die Konfigurations-Datei lircrc wird unter '''/etc/[[lircrc]]''' oder unter '''~/.lircrc''' abgespeichert.
  
 
Aufbau der lircrc.
 
Aufbau der lircrc.
  
 
  begin
 
  begin
  prog  = <Daemon für Skript- und Programm-ausführungen>
+
  prog  = <Daemon für Skript- und Programm-Ausführungen>
  button = <Tasten Name, ist in der [[lircd.conf]] definiert>
+
  button = <Tasten-Name, ist in der [[lircd.conf]] definiert>
 
  config = <Auszuführender Befehl>
 
  config = <Auszuführender Befehl>
 
  mode  = <Modus: Schaltet Modus ein oder aus>
 
  mode  = <Modus: Schaltet Modus ein oder aus>
Zeile 237: Zeile 293:
 
Beispiele.
 
Beispiele.
  
4 x Button Power würde einen reboot einleiten, somit sind doppel-belegungen ("ueber") vdr möglich.
+
4 x Button Power würde einen Reboot einleiten, somit sind Doppel-Belegungen ("über") vdr möglich.
  
 
  begin
 
  begin
Zeile 257: Zeile 313:
 
  end
 
  end
  
Wurde diese Datei erzeugt, kann der dameon gestartet werden, wichtig das dieses nach lirc geschieht (Reihenfolge beachten).
+
Wurde diese Datei erzeugt, kann der daemon gestartet werden, wichtig dass 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/sbin/lircd -- /etc/[[lircd.conf]]
 
  start-stop-daemon --start --verbose --exec /usr/local/bin/irexec -- --daemon /etc/[[lircrc]]
 
  start-stop-daemon --start --verbose --exec /usr/local/bin/irexec -- --daemon /etc/[[lircrc]]
 +
 +
Sollte irexec nicht auf anhieb funktionieren muss man noch die Path Variable ins init Script schreiben.
 +
PATH=$PATH:/usr/local/sbin:/usr/local/bin
  
 
<!-- ==Parameter== -->
 
<!-- ==Parameter== -->
Zeile 313: Zeile 372:
 
<!-- ==Bedienung== -->
 
<!-- ==Bedienung== -->
 
<!-- ==Probleme== -->
 
<!-- ==Probleme== -->
 
==CVS==
 
cvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/lirc login
 
cvs -z8 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/lirc co lirc
 
  
 
==Sonstiges==
 
==Sonstiges==
 
'''Länge des Kabels:'''
 
'''Länge des Kabels:'''
  
Ein Betrieb des LIRC Emfängers ist bei einer Kabellänge von bis zu 25m möglich.
+
Ein Betrieb des LIRC Empfängers ist bei einer Kabellänge von bis zu 25 m möglich.
  
 
'''Mehrere LIRC Empfänger:'''
 
'''Mehrere LIRC Empfänger:'''
Zeile 332: Zeile 387:
 
'''Mehrere PCs zusammenschalten'''
 
'''Mehrere PCs zusammenschalten'''
  
Es ist möglich die empfangengen Fernbedienungscodes an weitere Computer weiterzuleiten.  
+
Es ist möglich, die empfangenen Fernbedienungscodes an weitere Computer weiterzuleiten. Dazu ist der lircd auf dem SenderPC mit der Option ''--listen'' zu starten und auf dem EmpfängerPC mit der Option ''--driver=null --connect=SenderPC''
 +
 
 +
Auf dem EmpfängerPC sind keine Kerneltreiber notwendig. Lediglich lircd wird benötigt. Mit dem Programm irw können Tastendrücke auf der Fernbedienung sowohl auf dem Sender- als auch auf dem Empfänger-PC angezeigt werden.
 +
 
 +
==Snapshot==
 +
cvs -d:pserver:anonymous@lirc.cvs.sourceforge.net:/cvsroot/lirc login
 +
cvs -z8 -d:pserver:anonymous@lirc.cvs.sourceforge.net:/cvsroot/lirc co lirc
 +
 
 +
== Troubleshooting ==
 +
Wenn dmesg die Meldung "lirc_serial: auto-detected active high receiver" zeigt, liegt irgendein Anschluß- oder Hardwareproblem vor.
 +
 
 +
Eine Ursache kann in der Verkabelung des COM Ports selbst liegen. Es gibt hier anscheinend zwei Typen (Pin 5 Typ und Pin 9 Typ) der Verkabelung zwischen COM Port und Sub-D Stecker.
 +
Für LIRC wird der Pin 5 Typ benötigt, hierbei ist Pin 1 des COM Port mit Pin 1 des Sub-D Stecker, Pin 2 mit Pin 2 usw. verbunden.
 +
Beim Pin 9 Typ ist Pin 1 mit Pin 1 verbunden, Pin 2 dann aber mit Pin 6 des Sub-D Steckers. Hat man sich zum Bsp. ein Serial-Port Slotblech (AK 661 bei Reichelt) zum Nachrüsten der seriellen Schnittstelle gekauft, hat man den Pin 9 Typ vorliegen. Dieser kann aber durch Umlöten zum Pin 5 Typ geändert werden.
 +
 
 +
===Checkliste ===
 +
 
 +
und wieder mal die gute alte Checkliste:
 +
 
 +
1. lirc treiber kontrollieren / laden
 +
::lsmod # kontrollieren
 +
::modprobe lirc_serial # laden
 +
::modprobe lirc_dev
 +
::dmesg  # kontrollieren
 +
 
 +
2. Devices kontrollieren
 +
::ls /dev/lirc* -ld
 +
 
 +
3. lirc stoppen
 +
::/etc/init.d/lirc stop
 +
 
 +
4. mode2 -d /dev/lirc0
 +
 
 +
5. irrecord -d /dev/lirc0 ./7552.fb
 +
 
 +
6. /etc/lirc/hardware.conf
 +
::DEVICE=/dev/lirc0 # oder entsprechend
 +
::7552.fb als /etc/lirc/lircd.conf speichern
 +
 
 +
7. lirc starten
 +
::/etc/init.d/lirc start
 +
 
 +
8. config checken
 +
::irw
 +
 
 +
9. vdr starten, fb anlernen
  
Dazu ist der lircd auf den SenderPC mit der option ''--listen'' zu starten und auf dem
+
falls ein Punkt nicht funktionieren sollte, haben die restlichen Punkte keinen Sinn.
  
EmpfängerPC mit der option ''--connect=SenderPC''
+
==Siehe auch==
 +
* [[Remote.conf]]
 +
* [[Anleitung_Lirc_Installation_für_Antec_Fusion_mit_Atric_Empfänger|Anleitung zur Installation von zwei LIRC Empfängern]]
 +
* [[HDTV_Installationsanleitung_Ubuntu#Lirc|LIRC unter Ubuntu einrichten]]
  
 
==Links==
 
==Links==
# [http://www.lirc.org LIRC (L)inux (I)nfrared (R)emote (C)ontrol Projekt Seite]
+
* [http://www.lirc.org LIRC (L)inux (I)nfrared (R)emote (C)ontrol Projekt Seite]
# [http://lirc.sourceforge.net/software/snapshots CVS snapshots]
+
* [http://lirc.sourceforge.net/remotes Index unterstützter Fernbedienungen]
# [http://www.kernel.org Homepage des Linux-Kernels]
+
# [http://lirc.sourceforge.net/remotes Index unterstützter Fernbedienungen]
+
# [http://linvdr.org/projects/vdr/vdr-2 Sehr gute Bauanleitung und Teileliste für einen Empfänger]
+
# [http://www.linux-magazin.de/Artikel/ausgabe/2000/09/Lirc/lirc.html ausführliche Beschreibung mit Theorieteil]
+
# [http://lnx.manoweb.com/lirc/?partType=section&partName=introduction Sehr ausführliche Bauanleitung mit Bezugsquelle für einen fertigen Empfänger]
+
# [http://www.heise.de/ct/00/18/208/default.shtml c't Artikel siehe unten Minimal-Empfänger]
+
# [http://www.irwan.de Wer Handwerklich nicht so begabt ist (~ 10 Euro)]
+
# [http://www.zapway.de Wer Handwerklich nicht so begabt ist (~ 14 Euro)]
+
# [http://www.ktet.fh-muenster.de/Download/Diplomarbeiten/PdaLirc.pdf Diplomarbeit]
+
# [http://knollep.de/Hobbyelektronik/projekte/45/index.htm Kleines Projekte "IR-Verlängerung" über 2 Adern]
+
  
 
[[Kategorie:Hardware]]
 
[[Kategorie:Hardware]]
 
[[Kategorie:Software]]
 
[[Kategorie:Software]]
 +
[[Kategorie:Fernbedienungen]]
  
 
{{i18n|LIRC}}
 
{{i18n|LIRC}}

Aktuelle Version vom 3. August 2013, 08:41 Uhr

Inhaltsverzeichnis

[Bearbeiten] Beschreibung

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

Mit dem LIRC Projekt ist es möglich, einen Computer (PC) über nahezu jede Fernbedienung zu steuern. Hierzu ist ein LIRC-fähiges Empfangsmodul nötig, das man ab ca. 5 Euro (zzgl. Versand) fertig kaufen oder aber nach Anleitung (siehe Links) selbst zusammenlöten kann.

[Bearbeiten] Hardwareanforderungen

  • LIRC kompatibler Empfänger
  • Standardversion für externe COM-Schnittstelle

Schaltplan.png

Spannungsversorgung erfolgt via RTS der COM-Schnittstelle (+/-12 V), damit keine negative Spannung am Eingang des 5-Volt-Spannungsreglers 78L05 anliegt, ist die Diode 1N4148 eingebaut.


  • Modifizierte Version für interne COM-Schnittstelle

Locostlirc.jpg

In dieser Version wird die Versorgungsspannung (+5 V) intern am Mainboard abgegriffen (z. B. interner USB-Port), daher entfällt der Spannungsregler und die Diode.


Manche Mainboards liefern an RTS unter Belastung weniger als +10 V. Sollte dies der Fall sein, so funktioniert möglicherweise die Standardversion nicht mehr, da der 78L05 eine Eingangsspannung von mindestens +8 V benötigt, um zuverlässig zu arbeiten. Zusätzlich fallen an der Diode nochmals 0,7 Volt ab. In diesen Fall sollte man auf die modifizierte Version zurückgreifen.

Mit dem generischen LIRC-Modul 'devinput' kann LIRC auch mit Fernbedienung und IR-Empfänger von DVB-Karten, aber auch die normale Tastatur verwendet werden. Es ist aber sinnvoller Geräte die per Kernelinterface /dev/input ansprechbar sind, das Remote-plugin zu verwenden.

[Bearbeiten] Schaltbild

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


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

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

[Bearbeiten] Fertige Empfänger

Bei www.pollin.de gibt es die Infrarot-Maus. Bestellnummer: 571 047, Preis: 6,95 €

Auch gut als Grundlage für Erweiterungen geeignet.

[Bearbeiten] Softwareanforderungen

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

[Bearbeiten] Installation

[Bearbeiten] Kurzfassung

Kurzfassung, die den größten Teil aller Installationen abdecken sollte (com1)

Vorhandene lircd.conf nach /etc kopieren

lirc Paket entpacken und in das Verzeichnis wechseln

./configure --with-driver=serial
make
make install
setserial /dev/ttyS0 uart none
modprobe lirc_serial
irrecord /etc/lircd.conf                    # oder Download per wget http://lirc.sourceforge.net/remotes/... -O /etc/lircd.conf
lircd
irw /dev/lircd                              # Fernbedienung testen

In der CVS Version wird lircd folgendermaßen installiert

cvs -d:pserver:anonymous@lirc.cvs.sourceforge.net:/cvsroot/lirc login
# Passwort-Abfrage einfach mit Return-Taste übergehen
cvs -z8 -d:pserver:anonymous@lirc.cvs.sourceforge.net:/cvsroot/lirc co lirc 
cd lirc
cvs update   #Aktualisierung der Quellen nach dem ersten Durchlauf nur hierüber nötig
./autogen.sh
./setup.sh
make

[Bearbeiten] Ausführlich

Entpacken:

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

Einfach setup.sh aufrufen

setup.sh

und den Anweisungen folgen.

Alternativ kann configure von Hand aufgerufen werden. Diese ist nicht so verwirrend und lirc kann den persönlichen Erfordernissen angepasst werden. Z. B.:

./configure --help

gibt alle möglichen Optionen aus.

./configure --enable-debug      #etwas mehr Output beim Start

oder

 ./configure --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, wenn man den seriellen Treiber wählt:

./configure --with-driver=serial

Ansonsten serial durch den richtigen Treiber für die Hardware ersetzen. Dazu muss herausgefunden werden, welche Hardware genutzt wird und welchen Port die IR-Fernbedienung benutzt. Es empfiehlt sich, als root in einer Shell ein cat auf den vermuteten Port zu setzen, wobei unterschiedliche Hardware entsprechend verschiedenste Ports benutzen. Eine serielle Fernbedienung wird bestimmt /dev/ttyS0..4 benutzen. Dann auf der Fernbedienung ein paar Tasten drücken. Wenn der richtige Port erwischt wurde, erscheinen auf der Shell kryptische Zeichen. Beachte, dass die Ausgabe gepuffert sein kann! Unter Umständen muss man einige dutzende Male auf die Fernbedienung drücken, bis der Ausgabepuffer voll ist und die Zeichen auf der Konsole angezeigt werden.

Meine audigy .. EX (Ausführung mit 5 1/4 Zoll Frontbedienteil) nutzt Midi, d. h., man muss die verschiedenen Midi-Ports ausprobieren. Bei mir brachte ein

cat /dev/snd/midiC0D1 

(ich nutze Alsa) die gewünschten Ergebnisse. Ist man so weit gekommen, so ist dieser Erfolg eine kleine Gratulation wert, da nun gewährleistet ist, dass ein IR-Signal an einem bestimmten device und damit in der Shell ankommt und wichtig, dass die Fernbedienung ordnungsgemäß arbeitet. Dieses device nutzt der lircd später als Input! Wenn man sich noch nicht absolut sicher ist, welche Treiber mit der Fernbedienung wirklich funktionieren, empfiehlt sich für den ersten Build folgendes:

./configure --with-driver=any

Dann kann man die Treiberoption beim Starten des lircd angeben:

lircd -H <dein_Treiber>          #die gleichen Optionen wie bei configure

Jetzt noch ein einfaches:

make

Um die Kernel-Module und Programme zu installieren:

make install

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

alias char-major-61 lirc_serial
options lirc_serial irq=4 io=0x3f8    #hier Standartwerte für COM1, an dem der Empfänger angeschlossen ist

Bevor beim Booten die Module lirc_serial und lirc_dev geladen werden, muss der UART disabled werden:[1]

setserial /dev/ttyS0 uart none

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



[Bearbeiten] Test der Installation

Nach der Installation, kann man einen ersten Test bei gestopptem Lirc machen. Wenn man Tasten auf der Fernbedienung drückt muß eine Ausgabe kommen, ansonsten sind die Treiber nicht korrekt installiert.

/etc/init.d/lirc stop
mode2 -d <device>

<device> ist in den meisten Fällen "/dev/lircd" oder "/dev/lirc0" oder "/dev/lirc/0"

[Bearbeiten] Konfiguration

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

Man kann sich aber auch einen funktionierenden Befehl zusammenstellen und später die ermittelten Optionen in die entsprechenden Konfigurationsdateien einfügen. Das hat den Vorteil, daß man sicher zu einem Ergebnis kommt, auch mit der verfügbaren Hardware. Meist ist nur Aufgrund der voneinander abhängigen Einstellungen in den Konfigurationsdateien ein Misserfolg möglich. Der selbst hergestellte 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 Gerät eingeben

--driver=driver hier deinen vermuteten Treiber angeben, oder kurz -H serial ; -H livedrive_midi. Der erste Versuch muss aber nicht unbedingt richtig sein, bei meiner audigy war nicht creative sondern livedrive_midi 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

/etc/lirc/RM-900.conf

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 kann unter http://lirc.sourceforge.net/remotes/ herunterladen geladen werden. 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 /etc/lirc/RM-900.conf

Das ist ein enorm langer Befehl. Aber er sollte funktionieren, wenn nicht: einfach kill (Ctrl +C) plus pkill lircd und die Optionen anpassen bis sich Erfolg einstellt. Den Erfolg kontrolliert man, indem man eine zweite Shell öffnet und irw eingibt oder auch, um die selbst hergestellte 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 herumprobieren 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!

[Bearbeiten] Neuanlernen der Fernbedienung

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

1. Prozess lircd anhalten

    /etc/init.d/lirc stop

2. Löschen oder Umbenennen einer vorhandenen Datei /etc/lircd.conf, diese Datei beinhaltet die LIRC Konfiguration der Fernbedienung.

rm /etc/lircd.conf

3. Neue lircd.conf anlernen. (evtl. ist beim folgenden Befehlsaufruf die Option -d /dev/lirc0 nötig, ohne diese wird /dev/lirc verwendet.)

irrecord -n /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

4. Prozess lirc starten.

/etc/init.d/lirc start

5. Fernbedienung überprüfen.

irw

6. Lircd direkt überprüfen.

Um den Lircd direkt zu überprüfen, kann der Socket direkt benutzt werden, dort sind dann auch die Befehle, wie Green, Red, etc. direkt zu sehen:

socat UNIX-CONNECT:/dev/lircd STDIO

Anmerkung: Falls irw ordnungsgemäß funktioniert und der VDR fehlerfrei LIRC aufruft, die Fernbedienung aber dennoch nicht im VDR funktioniert, vergewissert Euch, dass /etc/lircd.conf und remote.conf auch wirklich die gleichen Namen der Tastenbelegungen haben.

[Bearbeiten] Ändern des COM-Ports.

Adresse und Interrupt des seriellen Anschlusses werden direkt in /etc/modules.conf eingegeben. Wenn /etc/modprobe.d/lirc existiert, sind die Änderungen dort vorzunehmen.

Für /dev/ttyS0 (COM1 - Standardwerte).

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

Für /dev/ttyS1 (COM2 - Standardwerte).

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

Ein vorhandener setserial Eintrag mit ttyS0 ist durch ttyS1 zu ersetzen.

Anschließend die Abhängigkeiten der Module aktualisieren, dazu

depmod

aufrufen, lircd und lirc_serial neu laden.

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

Zum prinzipiellen Überprüfen der Hardware hilft das Programm mode2. Das korrekte Device mit übergeben, mode2 funktioniert bereits, bevor lircd läuft. Es ist daher die erste Anlaufstelle zum Debuggen, noch bevor lircd.conf oder remote.conf ins Spiel kommen. mode2 gibt kontinuierlich die von der Fernbedienung empfangenen Codes (als Pulse/Pause-Zeiten) auf stdout aus.

mode2 -d /dev/lirc
mode2 -d /dev/lirc0

[Bearbeiten] Konfiguration der lircrc zum Ausführen von Aktionen

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

Die Konfigurations-Datei lircrc wird unter /etc/lircrc oder unter ~/.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 ("über") 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 daemon gestartet werden, wichtig dass 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

Sollte irexec nicht auf anhieb funktionieren muss man noch die Path Variable ins init Script schreiben.

PATH=$PATH:/usr/local/sbin:/usr/local/bin


[Bearbeiten] Optionen

[Bearbeiten] 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

[Bearbeiten] 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


[Bearbeiten] Sonstiges

Länge des Kabels:

Ein Betrieb des LIRC Empfängers ist bei einer Kabellänge von bis zu 25 m 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 empfangenen Fernbedienungscodes an weitere Computer weiterzuleiten. Dazu ist der lircd auf dem SenderPC mit der Option --listen zu starten und auf dem EmpfängerPC mit der Option --driver=null --connect=SenderPC

Auf dem EmpfängerPC sind keine Kerneltreiber notwendig. Lediglich lircd wird benötigt. Mit dem Programm irw können Tastendrücke auf der Fernbedienung sowohl auf dem Sender- als auch auf dem Empfänger-PC angezeigt werden.

[Bearbeiten] Snapshot

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

[Bearbeiten] Troubleshooting

Wenn dmesg die Meldung "lirc_serial: auto-detected active high receiver" zeigt, liegt irgendein Anschluß- oder Hardwareproblem vor.

Eine Ursache kann in der Verkabelung des COM Ports selbst liegen. Es gibt hier anscheinend zwei Typen (Pin 5 Typ und Pin 9 Typ) der Verkabelung zwischen COM Port und Sub-D Stecker. Für LIRC wird der Pin 5 Typ benötigt, hierbei ist Pin 1 des COM Port mit Pin 1 des Sub-D Stecker, Pin 2 mit Pin 2 usw. verbunden. Beim Pin 9 Typ ist Pin 1 mit Pin 1 verbunden, Pin 2 dann aber mit Pin 6 des Sub-D Steckers. Hat man sich zum Bsp. ein Serial-Port Slotblech (AK 661 bei Reichelt) zum Nachrüsten der seriellen Schnittstelle gekauft, hat man den Pin 9 Typ vorliegen. Dieser kann aber durch Umlöten zum Pin 5 Typ geändert werden.

[Bearbeiten] Checkliste

und wieder mal die gute alte Checkliste:

1. lirc treiber kontrollieren / laden

lsmod # kontrollieren
modprobe lirc_serial # laden
modprobe lirc_dev
dmesg # kontrollieren

2. Devices kontrollieren

ls /dev/lirc* -ld

3. lirc stoppen

/etc/init.d/lirc stop

4. mode2 -d /dev/lirc0

5. irrecord -d /dev/lirc0 ./7552.fb

6. /etc/lirc/hardware.conf

DEVICE=/dev/lirc0 # oder entsprechend
7552.fb als /etc/lirc/lircd.conf speichern

7. lirc starten

/etc/init.d/lirc start

8. config checken

irw

9. vdr starten, fb anlernen

falls ein Punkt nicht funktionieren sollte, haben die restlichen Punkte keinen Sinn.

[Bearbeiten] Siehe auch

[Bearbeiten] Links

In anderen Sprachen