====== 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 [[https://www.atric.de|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 (16x50 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