06 Fernbedienung
Damit man den VDR auch komfortabel mit einer Fernbedienung, wie man sie von einem herkömmlichen Videorekorder her kennt, bedienen kann,
muss man einen IR-Empfänger haben.
Dieser sollte nach möglichkeit das Protokoll RC-5 können, da dieses von den meisten Fernbedienungen unterstützt wird.
Ich nutze ein IR-Modul von Atric. Dieser kann, da er mit dem Powerswitch des Mainboards und der
5V FSB Spannungsleitung der Netzteils verbunden ist, den VDR auch mit der Fernbedienung einschalten.
Das IR-Modul benötigt eine serielle Schnittstelle.
YAVDR
Für den Atric Empfänger muss im Webfrontend unter Einsellungen –> Fernbedienung der „Lirc-Support“ eingeschaltet und als Empfänger der „Home-brew (16×50 UART compatible serial port)“ ausgewählt werden.
Danach nur noch die Serielle Schnittstelle auswählen und speichern.
Lirc
Mit dem Programm „Lirc“ kann man Linux mit einer Fernbedienung steuern.
Installation
Installiert werden die „Lirc“ Module folgendermaßen:
apt-get install lirc
Hierbei wird ein Menü angezeigt, wo man folgendes für das Atric IR-Modul auswählt:
Auswahl Treiber: IRdeo Auswahl Modell: Serial Port (UART) : Scientific Atlanta Cable box Auswahl Anschlussdevice: /dev/ttyS0
Serieller IR-Empfänger
Zuerst müssen wir den Seriellen-Port von allen möglichen Zugriffen befreien.
Normalerweise wird das Programm setserial
durch die Installationsschritte von Lirc eingestellt.
Man sollte dennoch sichergehen dass dies auch erfolgt ist.
vi /etc/serial.conf
Hier muss folgende Zeile stehen
/dev/ttyS0 uart none
Nun setzt man folgendes in die /etc/lirc/lirc_options.conf
[lircd] driver = default [modinit] code = modprobe serial_ir
Dadurch wird zunächst das Programm lirc-setup
, welches vor lircd
läuft, den Seriellen Treiber laden. Danach startet lircd
mit dem Treiber default.
IR-Modul testen
Nun kann man Lirc testen.
systemctl stop lirc mode2 -d /dev/lirc0
Wenn mode2
läuft, einfach einige Tasten an der Fernbedienung drücken. Es erscheinen wilde Zahlen- und Buchstabenkombinationen.
Beenden kann man dies mit CTRL+C.
Anlernen
Nachdem wir nun wissen dass Lirc und die Fernbedienung funktionieren, lernen wir nun Lirc auf die Fernbedienung an.
systemctl stop lirc irrecord -n -d /dev/lirc0 lircd.conf
Hier den Anweisungen folgen. Nachdem irrecord
fertig ist, schreibt es die Datei „lircd.conf“, welche die gelernten Einstellungen, die irrecord erfasst hat, enthält.
Diese Datei kopieren wir nun in das Lirc Konfigurationsverzeichnis.
cp lircd.conf /etc/lirc
Lirc testen
Jetzt noch Lirc starten und testen.
systemctl start lirc irw
Wenn irw
läuft, können wir einige Tasten auf der Fernbedienung drücken.
Die Ausgabe von sollte dann die gelernten Funktionen wiederspiegeln.
Troubleshooting
Die heutigen DVB Treiber installieren standardmäßig das „rc_core“ Modul. Dieses Modul wird in vielen
DVB-Treibern genutzt. Viele DVB-Karten haben ja schließlich auch einen RC-Anschluss für eigene Fernbedienungen.
Dieses „rc_core“ Modul kollidiert immer mit dem „lirc_serial“ Modul.
Abhilfe hierzu:
- Eine USB-basierte Fernbedienung nutzen
- alle „lirc_dev.ko“ und „lirc_serial.ko“ Dateien vor dem Installieren der DVB-Treiber sichern und danach wieder zurückspielen.
(Alle lirc Module sichern, auch die der evtl. vorherigen Kernel)
eventlirc
Die Tasten meines „GMC AVC-M1“ Gehäuses werden über eventlirc an Lirc übersetzt und übergeben.
Tasten testen
Zunächst muss mann wissen welches Input Device diese Tasten belegen.
- USB-Devices
lsusb|grep -i imon
Ausgabe:Bus 001 Device 003: ID 15c2:ffdc SoundGraph Inc. iMON PAD Remote Controller
- Event-Devices
ls -l /dev/input/by-id/|grep -i ffdc
Ausgabe:lrwxrwxrwx 1 root root 9 Okt 31 15:40 usb-15c2_ffdc-event-if00 -> ../event3 lrwxrwxrwx 1 root root 9 Okt 31 15:40 usb-15c2_ffdc-event-mouse -> ../event2 lrwxrwxrwx 1 root root 9 Okt 31 15:40 usb-15c2_ffdc-mouse -> ../mouse0
Nun weiß man das entweder das „event2“ oder „event3“ das gesuchte sein muss.
Dies kann man herausfinden, wenn „evtest“ mit dem jew. Event-Device getestet wird.
apt-get install evtest
Danach eventlirc stoppen
initctl stop eventlirc
und evtest ausführen (hier mit „event2“)
evtest /dev/input/event2
Wenn nun die Tasten am Gehäuse gedrückt und am Bildschirm ausgegeben werden, ist dies das richtige event-Device.
Tasten übersetzen
In der Ausgaben von „evtest“ findet man zum o.a. event-Device folgende Ausgabe
Input driver version is 1.0.1 Input device ID: bus 0x3 vendor 0x15c2 product 0xffdc version 0x0 Input device name: "iMON Panel, Knob and Mouse(15c2:ffdc)" Supported events: Event type 0 (EV_SYN) Event type 1 (EV_KEY) Event code 1 (KEY_ESC) Event code 28 (KEY_ENTER) Event code 103 (KEY_UP) Event code 105 (KEY_LEFT) Event code 106 (KEY_RIGHT) Event code 108 (KEY_DOWN) Event code 113 (KEY_MUTE) Event code 114 (KEY_VOLUMEDOWN) Event code 115 (KEY_VOLUMEUP) Event code 128 (KEY_STOP) Event code 139 (KEY_MENU) Event code 164 (KEY_PLAYPAUSE) Event code 168 (KEY_REWIND) Event code 174 (KEY_EXIT) Event code 208 (KEY_FASTFORWARD) Event code 212 (KEY_CAMERA) Event code 226 (KEY_MEDIA) Event code 272 (BTN_LEFT) Event code 273 (BTN_RIGHT) Event code 353 (KEY_SELECT) Event code 377 (KEY_TV) Event code 389 (KEY_DVD) Event code 392 (KEY_AUDIO) Event code 393 (KEY_VIDEO) Event code 407 (KEY_NEXT) Event code 412 (KEY_PREVIOUS) Event type 2 (EV_REL) Event code 0 (REL_X) Event code 1 (REL_Y) Event code 8 (REL_WHEEL) Properties: Property type 20 (EV_REP) Property code 0 (REP_DELAY) Value 250 Property code 1 (REP_PERIOD) Value 33 Testing ... (interrupt to exit)
Hier sieht man den „Input device name“. Dieser findet sich wieder in der Konfigurationsdatei von eventlirc
vi /etc/eventlircd.d/imon_knob_panel.evmap
In dieser Datei übersetzt man die Befehle der gedrückten Tasten, in die Befehle, welche allgemein dem VDR-System durch die /var/lib/vdr/remote.conf
bekannt gegeben wurden.
Inhalt:
KEY_MEDIA = KEY_MENU # Knop "AV Center" KEY_ENTER = KEY_OK # Knop "Enter"
Damit diese Einstellungen nun aktiviert werden, muss noch der eventlirc Daemon neugestartet werden.
initctl restart eventlircd