Squeeze-VDR Teil 5 - Die LIRC-Fernbedienung
Posted by Tobi
Gott bin ich alt - ich kann mich noch an Fernseher ohne Fernbedienung erinnern! Und bis jetzt ist der neue Squeeze-VDR nicht viel besser dran. Dem kann aber schnell Abhilfe geschaffen werden.

Prinzipiell kann fast jede Infrarot-Fernbedienung für den VDR verwendet werden. Neben den Nummerntasten sollte die Fernbedienung lediglich auch Tasten für Menu, Ok, Exit, Pfeiltasten sowie vier Farbtasten haben. Die meisten Universalfernbedienungen genügen diesen Anforderungen. Außnahmen mag es vielleicht bei wirklich exotischen oder Uralt-Modellen geben.
Auf der VDR-Seite brauchst du einen Infrarotempfänger, der via USB oder serieller Schnittstelle angeschlossen wird. Einige DVB-Karten besitzen einen eigenen Infrarotempfänger.
Bei mir kommt ein IR-Empfänger Marke Eigenbau mit einem TSOP173 IR-Empfängermodul zum Einsatz. Wer einen Lötkolben sein eigen nennt, hat sich so einen Empfänger schnell zusammengebaut.
LIRC
Software-seitig sorgt LIRC (Linux Infrared Remote Control) dafür, das Signal des IR-Empfängers zu dekodieren. Das LIRC-Kernel-Modul kapselt dabei den Zugriff auf die Hardware, ein LIRC-Daemon übersetzt die IR-Signale in LIRC-Tasten-Codes und diese wiederum werden im VDR den entsprechenden Funktionen zugewiesen.
Am Anfang steht zunächst die Installation des LIRC-Kernel-Modules und der LIRC-Pakete:
sudo apt-get install module-assistant
sudo m-a a-i lirc
sudo apt-get install lirc setserial
Dann müssen noch einige LIRC-Kernel-Modul-Parameter konfiguriert werden mit sudo nano /etc/modprobe.d/lirc.conf:
options lirc_serial io=0x3f8 irq=4
install lirc_serial /bin/setserial /dev/ttyS0 uart none ; /sbin/modprobe --ignore-install lirc_serial
io=0x3f8 und irq=4 spezifizieren hierbei den RS232-Port COM1 (/dev/ttyS0).
Danach kann LIRC aktiviert werden:
sudo modprobe lirc_serial
Lirc sollte jetzt laufen (nachprüfbar mit lsmod | grep lirc oder dmesg). Wenn das soweit alles geklappt hat, kannst du LIRC nun die einzelnen Tasten beibringen. Starte dazu:
irrecord -n -d /dev/lirc0 /tmp/lircd.conf
... und folge den Anweisungen. Die Tasten benennst du z.B. "Ok", "Menu", "1", ..., "9" u.s.w.
Wenn du damit fertig bist, kopierst du die eben erstellte lircd.conf nach /etc/lirc (sudo cp /tmp/lircd.conf /etc/lirc). Jetzt musst du noch die Datei /etc/lirc/hardware.confeditieren und folgende Zeilen eintragen/ändern:
DEVICE="/dev/lirc0"
MODULES="lirc_serial"
Mit sudo service lirc start kannst du LIRC jetzt starten.
VDR
Nun bleibt nur noch übrig, die Tasten der Fernbedienung den VDR-Funktionen zuzuordnen. Damit der VDR den Lernmodus startet musst du die remote.conf zunächst verschieben und den VDR neu starten:
sudo mv /var/lib/vdr/remote.conf /tmp
sudo service vdr restart
Jetzt folgst wieder den Anweisungen des VDR. Bist du fertig, kannst du die alte remote.conf (mit der Xineliboutput-Tastaturbelegung) an die neue anhängen:
sudo service vdr stop
sudo sh -c "cat /tmp/remote.conf >>/var/lib/vdr/remote.conf"
sudo service vdr start
Und das war's auch schon. Der VDR sollte jetzt mit der Fernbedienung ansprechbar sein.
Verwendest du einen anderen IR-Empfänger, so ändern sich auch die LIRC-Parameter zu dem, was hier gezeigt wurde. Die LIRC-Konfiguration ist sicher nicht gerade einfach, aber Hilfe dazu findest du zuhauf im Netz!
Erstmal vielen Dank für die tolle Anleitung, ich hoffe auf noch viele Fortsetzungen :)
Da ich derzeit alle Schritte nachvollziehe und so meinen neuen VDR aufsetze: mir ist hier ein evtl. fehlender Zwischenschritt aufgefallen. So musste ich erst noch lirc-modules-source installieren - ansonsten geht sudo m-a a-i lirc schief.
Freut mich wenn du was mit der Anleitung anfangen konntest. Ein paar Fortsetzungen wird es noch geben.
Eigentlich sollte der module-assistant lirc-modules-source automatisch installieren.
Hab's gerade nochmal getestet. "m-a a-i" zieht alle notwendigen Pakete, Würde mich echt wundern, wenn das bei dir nicht so ist.
Jetzt, wo Du es sagst: bei mir war der module-assistant nicht installiert, daran ist es gescheitert. Scheint, unter Umständen, nicht automatisch bei der Standard-Installation dabei zu sein.
Kann auch sein dass ich es einfach vergessen habe.
Hab's nun mit in den Artikel eingebaut. Danke für den Hinweis!
Moin,
kannst Du bitte das Lirc-Pakte mal prüfen, ich glaube es fehlt im lircd die Unterstützung für lirc_serial.
Danke für Deine investierte Freizeit !
Was lässt dich das vermuten? Ich verwende selber auch lirc_serial.
Ich hatte Dein Paket installiert, und bekam beim Starten des Lircd die Meldung, daß der Treiber nicht unterstützt wird. Ein manueller Aufruf zum Anzeigen der unterstützten Treiber zeigte den lirc_serial auch nicht an.
Ich hatte vorsichtshalber das Paket nochmal deinstalliert (mit purge) und neu installiert -> ging nicht.
Habe mir dann das Paket aus dem yavdr-ppa gezogen, das ging auf Anhieb.
War ich doch nur zu blöd ?
Argh, leider Vergessen: es handelt sich um das i386-Paket.
Wüsste nicht, warum das unter i386 nicht funktionieren sollte.
Hast du denn die Kernelmodule mit
m-a a-i lircgebaut und installiert?Ja, da Modul konnte ich auch laden, aber lircd beschwerte sich, daß er nicht mit lirc_serial kann. Beim Aufruf von lircd mit --driver=? (aus dem Gedächtnis) fehlte dann auch lirc_serial in der Liste.
Ich hab die Installation nochmal auf i386 mit einem frischen Squeeze durchgespielt. Klappt vollkommen reibungslos!
lirc_serial muss auch nicht in der Liste auftauchen. Das läuft über den "default" driver.
Also dann doch: ich war zu doof. Ich kann mir nur noch nicht erklären, wo ich den Fehler gemacht habe.
Nächste Woche werde ich die Kiste nochmal von Null hochziehen, wenn ich's 'rausfinde, melde ich mich nochmal.
Vielen Dank für Deine Mühe.
hi tobi,
erst mal super anleitung...leider bekomme ich beim bauen des lirc-modules bei ca.27% einen fehler :( verwende den 2.6.35 kernel...liegt es daran?? was kann ich nun tun...
folgende fehlermeldung erhalte ich :
for templ in ; do \│ cp $templ
echo $templ | sed -e 's/_KVERS_/2.6.35-02063508-generic/g'│ ; \
│ done
│ for templ in
ls debian/*.modules.in; do \│ test -e ${templ%.modules.in}.backup || cp ${templ%.modules.in}
│ ${templ%.modules.in}.backup 2>/dev/null || true; \
│ sed -e 's/##KVERS##/2.6.35-02063508-generic/g
│ ;s/#KVERS#/2.6.35-02063508-generic/g ; s/KVERS/2.6.35-02063508-generic/g
│ ; s/##KDREV##/2.6.35-02063508.201010291110/g ;
│ s/#KDREV#/2.6.35-02063508.201010291110/g ;
│ s/KDREV/2.6.35-02063508.201010291110/g ' < $templ >
│ ${templ%.modules.in}; \
│ done
│ dh_clean "
EDIT: verwende eine Tevii S464 und würde gerne die fernbedienung oder zumindest den IR-receiver ...wird die Fernbedinung von den lirc-modules unterstützt? THX
EDIT: Fehlermeldung ist eigentlich folgende:
build module
/usr/bin/make -C /usr/src/modules/lirc-modules KSRC=/usr/src/linux make[2]: Entering directory
/usr/src/modules/lirc-modules' /usr/bin/make -C /usr/src/linux SUBDIRS=/usr/src/modules/lirc-modules modules make[3]: Entering directory/usr/src/linux-headers-2.6.35-02063508-generic' CC [M] /usr/src/modules/lirc-modules/lirc_dev.o /usr/src/modules/lirc-modules/lirc_dev.c:35:28: error: linux/autoconf.h: Datei oder Verzeichnis nicht gefunden make[4]: [/usr/src/modules/lirc-modules/lirc_dev.o] Fehler 1 make[3]: [module/usr/src/modules/lirc-modules] Fehler 2 make[3]: Leaving directory/usr/src/linux-headers-2.6.35-02063508-generic' make[2]: *** [all] Fehler 2 make[2]: Leaving directory/usr/src/modules/lirc-modules' make[1]: [binary-modules] Fehler 2 make[1]: Leaving directory `/usr/src/modules/lirc-modules' make: [kdist_build] Fehlerdürfte ein problem mit "lirc_dev.c:35:28: error: linux/autoconf.h: Datei oder Verzeichnis nicht gefunden" geben :(
was kann ich jetzt tun?? ne plan vielleicht? danke!
Das LIRC-Paket ist speziell fuer Squeeze also für 2.6.32. Evtl. werde ich noch irgendwann dieses Jahr auf Lirc 0.9 und Kernel 2.6.36. umstellen. Aber bis dahin bleibt dir nur 2.6.32 oder du bist auf dich allein gestellt.
Hallo e-tobi,
ich habe da ein kleines Problem mit dem remote-plugin ...
Es lässt sich aus den APT-Repos nicht installieren, da es nach der vdr-abi-1.6.0 sucht und ich die 1.7.16 habe.
Nun wollte ich das gerne per Hand bauen und habe nicht herausfinden können wie ich die vdr-quellen installieren kann zu dem von dir empfohlenen VDR bzw. ich das mit der abi umgehen oder fixen kann ...
Also habe ich das remote-plugin von den Debian-Repos geladen und einfach in mein System kopiert, umbenannt (von so.1.6.0 zu so.1.7.16) und den VDR neu gestartet, aber er startet das Plugin nicht mit.
Dennoch ercheint im Syslog: [b]Nov 17 22:34:08 AmoksPC vdr: [24372] ERROR: /dev/lircd: Datei oder Verzeichnis nicht gefunden Nov 17 22:34:08 AmoksPC vdr: [24372] ERROR: remote control LIRC not ready![/b]
Das ist auch kein Wunder, das Device heisst anders und ich nutze eine x10 und kein IR ... Es wundert mich nur wo die MEldung ohne laufendes remote-plugin herkommt.
Vielleicht weisst Du rat, gerne auch per E-Mail!
Danke und schönen Abend noch!
Ich vermute mal, du hast in Teil 2 einen Schritt übersprungen und /etc/apt/preferences.d/e-tobi nicht installiert
Wenn du
apt-cache policy vdr-plugin-remoteaufrufst, dann muss das Plugin für das e-tobi-Repo mit einer Priorität von 1001 erscheinen. Falls das nicht so ist, wird die Version aus Squeeze installiert und die ist für VDR 1.6.Zu der Meldung: VDR such standardmässig nach eine LIRC-Fernbedienung.
Hallo,
vdr-plugin-remote: Installiert: (keine) Kandidat: 0.4.0-20 Versionstabelle:
Die sind also gleichberechtigt! Ich werde das mal anpassen und mich dann nochmal melden! Danke für die schnelle Antwort!
Erledigt. Hatte dein Repo zusätzlich noch in der sources.list und da hat er die Priorität wohl nicht richtig übernommen.
Jetzt hat er sie und jetzt hat er auch das remote-plugin installiert!
Vielen Dank ... ich melde mich wenn ich die nächsten Probs habe ;)
JO, da bin ich wieder ...
Also jetzt habe ich das Problem dass ich nicht herausfinden kann welches device-file für meinen x10-Receiver angelegt wird ...
nachdem hier: lrwxrwxrwx 1 root root 9 18. Nov 10:56 pci-0000:05:01.0-event-ir -> ../event5
würde ich vermuten /dev/input/event5, aber wenn ich in der plugin.remote.conf "-i /dev/input/event5" eintrage startet der vdr und das Plugin zwar, aber es reagiert nicht auf Tasten ... und die funktionieren laut irw perfekt ...
Ein /dev/lirc gibt es bei mir in keiner Form ... vielleicht hast Du da nochmal einen Tipp für mich, wäre toll!
Dank im Voraus
Hi Tobi,
danke fuer dein Update, es hat keine 10 minuten gedauert und ein update auf vdr 1.7.16 mit xineliboutput+vdpau war geschehen und alles lief... naja, fast alles.
Ich hatte probleme mit deinem lirc 0.8.6 . Ich muss aus DVB-Treibergruenden 2.6.36 nehmen (aus debian experimental) und kann mir deshalb eine manuelle Installation von lirc sparen. (lirc_serial ist bei 2.6.36 dabei).
Allerdings ist diese nicht kompatibel mit lirc-0.8.6. Ich downgradete also auf 0.8.3 (von squeeze) und alles geht.
Was ich nicht weiss, ist wie ich in der Zukunft lirc von squeeze den Vorzug geben kann bei Beibehaltung von "Priority: 1000" fuer e-tobi.net?
Ansonsten super Arbeit.
-- Patrick
z.B. so:
ich würde licr gern mit einem usb power on Dongle betreiben. Hat damit jemand Erahrung kann mir bei den Einstellungen helfen?
Grüße
Olaf
Ich hänge leider an der Lirc Konfiguration schon den ganzen Samtag. Ich kann dpkg reconfigure lirc nicht aufrufen bzw. erscheint der dialog nicht. http://pastie.org/1348191
Weiss jemand rat?
Die debconf.Konfiguration der Lirc-Module gibt es nicht mehr. Es sollten standardmäßig alle Module gebaut werden, Die insserv-Warnungen kannst du ignorieren.
wie trage ich denn dann das Igor plugin ein. Meiner meinung nach wird der USB dongle erkannt, aber mit der Fernbedienung klappts nicht wirklich. Lirc macht seine Punkte, aber ich kann nicht alle Tasten anlernen
nun gibts keine Punkte mehr, vielleicht sollte ich eine fertige Distrinution nutzen. So ein Baukasten ist scheinbar eine Nummer zu groß für mich
nun habe ich es auch geschafft! Allerdings nur weil ich mir eine fertige lircd.conf runtergladen habe. Da ich eine einfache Hauppauge Fernbedienung nehme (mir ist das nicht so wichtig und so schlecht finde ich die nicht) geht es nun. Der Hausfrieden ist wieder hergestellt. Jetzt kann ich mich um die anderen Baustellen kümmern, S3 geht noch nicht und der VDR wacht nicht auf. Mal sehen an was es liegt Einen schönen 2. Advent noch.
für LIRC sollte man einen Blick ins Rechner-BIOS tun: Ist RS232-Port COM1/ttyS0 auf io=0x3f8 irq=4 aktiviert?
Man sollte ruhig erwähnen, dass die Erstellung einer lircd.confmeist einige Geduld verlangt!
Es ist nicht so sinnvoll remote.conf nach /tmp zu kopieren, wenn nämlich "service vdr start" nicht geht, ist remote.conf weg nach dem reboot. Ich habe es auf /home/benutzer/ kopiert, da hat man es auch, wenn man lircd.conf überarbeiten muß.
Außerdem gibt es ja da auch noch TV-Karten mit Fernbedienungen, die richtig erkannt werden, so z.B. die "TeVii S464 DVB-S2 PC". Ich selbst bevorzuge LIRC. - Zur Vermeidung von Problemen mit den events solcher Geräte s. C´t 3, 2010, S 134ff
Nur bei mir geht es mal wieder nicht:
Kompilieren abgebrochen mit:
/usr/src/modules/lirc-modules/lirc_i2c.c:399: error: unknown field 'id'
Nur bei mir geht es mal wieder nicht. Kompilieren abgebrochen mit: /usr/src/modules/lirc-modules/lirc_i2c.c:399: error: unknown field 'id' specified in initializer
Workaround: Version von cvs kompiliert. Nimm lircd von /usr/local/sbin statt /usr/sbin Driver ist default.