====== 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