Gentoo LIRC

Aus VDR Wiki
Wechseln zu: Navigation, Suche

Grundlagen

Um den VDR auch über eine IR-Fernbedienung steuern zu können braucht man erstmal das zum IR-Empfänger passende Kernelmodul. Als Empfängerhardware gibt es zahlreiche Möglichkeiten. Eine davon ist das sogenannte Homebrew-Model. Dabei handelt es sich um eine einfache Schaltung für die serielle Schnittstelle, die man auch mit etwas Geschick selber bauen kann. Mehr Infos dazu findet man auf der Lirc-Homepage http://www.lirc.org. Ob die Irda-Unterstützung als Kernelmodul vorhanden ist, kann man z. B. mit

modprobe irda

testen. Wird das Modul geladen, erfolgt keine Ausgabe! Dafür zeigt lsmod, welche Module geladen sind. Ob lirc schon erfolgreich installiert ist, kann mit

modprobe lirc_serial

für seriell Empfänger, oder

modprobe lirc_sir

für Empfänger, die den IR-Port vom Mainboard verwenden, getestet werden. (Hier sind nur zwei mögliche Varianten exemplarisch angeführt.) Sollte modprobe melden:

modprobe: Can't locate module irda

muß der Kernel entsprechend angepasst werden.

cd /usr/src/linux
make menuconfig

Es ist unwahrscheinlich, daß der Kernel keine Module unterstützt. Dies sollte aber zuerst überprüft werden. Dazu muß der Loadable module support ---> und der Kernel module loader aktiviert sein. Weiterhin muß die serielle Unterstützung deaktiviert oder zumindest als Modul kompiliert werden, damit lirc exklusiven Zugriff auf den seriellen Port hat (so man ein serielles Device verwendet). Dazu unter Character devices --->Standard/generic (8250/16550 and compatible UARTs) serial support deaktivieren, oder wenn man ab und zu den seriellen Port noch für andere Zwecke braucht als Modul setzen. Dann zu IrDA (infrared) support --->, IrDA subsystem support als Modul aktivieren. Weiter mit Infrared-port device drivers ---> und die entsprechende Hardware aktivieren. Um ein einfaches serielles IR-Modul (z.B. das o. g. Homebrew, s. hierzu http://www.lirc.org/receivers.html ) muss der Serial dongle support ausgewählt werden. Wenn keine andere Einstellung verändert wurde, und der IR-Support vorher nicht fest einkompiliert war, reicht nach exit und nach dem speichern der neuen Kernelkonfiguration, ein

make modules modules_install

Jetzt sollte modprobe irda zum Erfolg führen.

Installation

Nun muß das Linux Infrared Remote Control kurz lirc installiert werden. Dieses befindet sich auch im Portage-Tree und kann mittels emerge installiert werden. Zur Zeit sind 2 Versionen von lirc vorhanden, wobei die neuere (0.6.6) noch maskiert ist. Die Installation von lirc am Beispiel dieses Empfängers geschieht folgendermaßen:

Zuerst muß lirc mitgeteilt werden, welchen Treiber es benutzen soll, in unserem Falle seriell. Man trägt dazu die Variable

LIRC_OPTS="--with-driver=serial"

mittels eines Editors in die /etc/make.conf ein. Alternativ dazu geht das auch, wenn man diese dem emerge-Befehl voranstellt.

LIRC_OPTS="--with-driver=serial" emerge lirc

Wer die neuere maskierte Version (0.6.6) installieren möchte, macht das so (es sei denn, man hat die make.conf schon angepaßt):

ACCEPT_KEYWORDS="~x86" LIRC_OPTS="--with-driver=serial" emerge lirc

Ab der Version 0.7.x kann es zu Fehlermeldungen beim kompilieren kommen. Diese resultieren aus dem fehlendem IRQ und dem fehlendem IO-Port. Abhilfe schafft wie folgt am Beispiel für den COM 1 Port:

ACCEPT_KEWORDS="~x86" LIRC_OPTS="--with-driver=serial --with-irq=4 --with-port=0x3F8" emerge lirc

Nach erfolgreicher Installation von lirc ist noch die Datei /etc/modules.d/lirc zu überprüfen oder zu erstellen. Für einen IR-Empfänger an COM1 sollte folgendes in der Datei stehen:

alias char-major-61 lirc_serial
alias /dev/lirc* lirc_serial
options lirc_serial irq=4 io=0x3F8

entsprechend für COM2

alias char-major-61 lirc_serial
alias /dev/lirc* lirc_serial
options lirc_serial irq=3 io=0x2F8

Dies sind übliche Parameter für die seriellen Schnittstellen. Bitte im BIOS des Computers überprüfen. Jetzt ein

rmmod lirc_serial

gefolgt von einem

modprobe lirc_serial

und die serielle Unterstützung mit den neuen Parametern sollte installiert sein. Zum Test

mode2

und die Fernbedienung betätigen. Jetzt sollten die Zeile space xxxxxxx und pulse xxx nur so über die Konsole flitzen. Falls mode2 meldet, daß es /dev/lirc nicht finden kann, muß noch folgendes getan werden.

mknod -m 666 /dev/lirc c 61 0

für COM1 bzw ein

mknod -m 666 /dev/lirc c 61 1

für COM2 von nöten.

Allerdings muß man dazu sagen, das es Probleme mit dem Device /dev/lirc in Verbindung mit dem devfs (Device-Filesystem) geben kann. Falls nach einem Neustart /dev/lirc nicht mehr vorhanden sein sollte weil es von devfs gelöscht wurde, dann muß man lirc "devfs-kompatibel" machen. Dies erreicht man mit einem Eintrag in /etc/devfsd.conf, welches das Device bei jedem Rechnerstart neu erzeugt und entsprechend im Verzeichnis /dev ablegt. Diese Methode ist bei Gentoo sowie allen neueren Distributionen zu bevorzugen, eben weil sie das Device-Filesystem einsetzen. Folgendes sollte in /etc/devfsd.conf eingetragen werden

LOOKUP   ^lirc   EXECUTE /bin/mknod /dev/lirc c 61 0

Damit nun das lirc-Modul und der lirc-daemon automatisch bei Systemstart geladen wird:

rc-update add lircd default

Konfiguration

Jetzt muß nur noch die 'Übersetzungsdatei' installiert werden. Mit etwas Glück befindet sich die passende auf http://lirc.sourceforge.net/remotes/. Sonst muß die Datei /etc/lircd.conf mittels

irrecord /etc/lircd.conf

erzeugt werden. (Natürlich muß das Modul lirc_serial, oder welches auf Deine Hardware paßt, geladen sein. Das kann man einfach mit 'lsmod' überprüfen.)

Nun kommt eine Erklärung, die man so befolgen sollte. Es müssen verschiedene Tasten nacheinander gedrückt werden bis irrecord zum nächsten Schritt übergeht. Hier gibt man nun Schüsselwörter an, die man sich selbst aussuchen kann. Empfehlenswert ist aber diese so zu wählen, wie sie von VDR benutzt werden. Nach Eingabe des Schlüsselwortes gefolgt von Enter muß dann die jeweilige Taste auf der Fernbedienung gedrückt werden. Das sieht dann in etwa so aus:

Now start pressing buttons on your remote control.

It is very important that you press many different buttons and hold them
down for approximately one second. Each button should generate at least one
dot but in no case more than ten dots of output.
Don't stop pressing buttons until two lines of dots (2x80) have been
generated.

Press RETURN now to start recording.
................................................................................
Found const length: 107937
Please keep on pressing buttons like described above.
................................................................................
Space/pulse encoded remote control found.
Signal length is 83.
Found possible header: 9131 4365
Found trail pulse: 675
Found repeat code: 9133 4357
Signals are space encoded.
Signal length is 40
Now enter the names for the buttons.

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

Now hold down button "POWER".

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

Now hold down button "1".

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

Now hold down button "2".

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

Wenn man alle Tasten definiert hat drückt man Enter. Jetzt kommt noch die Abfrage nach dem Toggle-Bit. Dazu drückt man eine Taste so schnell wie möglich nacheinander. Wenn alles gut gelaufen ist wird die Konfigurationsdatei geschrieben.

Checking for toggle bit.
Please press an arbitrary button repeatedly as fast as possible (don't hold it down!).
..............................
Successfully written config file.

Ansonsten muß die Datei wieder gelöscht werden und man macht das Ganze noch einmal.

rm /etc/lircd.conf
irrecord ......

Wenn man jetzt nicht neu starten möchte (wir sind ja Linux-User :-)), kann man den Daemon auch von Hand starten und stoppen.

/etc/init.d/lircd start
/etc/init.d/lircd stop

Nun steht der weiteren Konfiguration von VDR und den Plugins nichts mehr im Wege.