[gelöst] yaVDR 0.4 - Tastatur funktioniert nur auf Konsole - nicht zur Bedienung des VDR

  • Also soweit ich weiß hat der VDR in der Standard-Konfiguration von yaVDR keine Konsole, auf die er lauschen würde. Das System ist auf die Nutzung des X-Servers ausgelegt, die Unterstützung für die TT S2-6400 ist relativ pragmatisch umgesetzt, ohne da viel am restlichen System zu verändern.


    Gäbe es denn noch bei FF-Karten (außer über ein Terminal) die Möglichkeit Tastatureingaben an den VDR zu bringen?


    Die Frage ist wo kommt die Tastatur bei yaVDR und der FF-Karte nun eigentlich an? Wenn sie am X-Server ankommt brauchts da irgendein Programm was sie zum VDR bringt. Zum Beispiel zum stdin des VDR senden oder an den TCP Port des remote Plugins.


    Tasten in den VDR bringen ist ja nicht schwer, es braucht nur was was sie empfängt und zum VDR schickt.


    cu

  • Solange ich beim Betätigen meiner Tastatur keine Reaktion vom VDR bekomme, wird mir nichtmal ein Suchfeld angezeigt in dem ich eine Eingabe machen könnte. Selbst der Kanalwechsel ist aktuell mit der Tastatur nicht möglich.


    Wenn du auf die Taste m drückst, schon dann passiert nichts? Verstehe ich Dich richtig?


    Albert

  • Die Frage ist wo kommt die Tastatur bei yaVDR und der FF-Karte nun eigentlich an?


    Auf der aktiven Konsole (wo "normalerweise" der X-Server sitzt) - das Problem sehe ich darin, dass wir die Tastatur ja normalerweise nicht exklusiv für den VDR nutzen wollen - es gibt ja noch XBMC, Browser, Spiele usw. - für FF-Karten und andere unterstütze Ausgabelösungen wie die PVR350 müsste man also noch auf der standardmäßig aktiven Konsole etwas bereitstellen, das die Ausgaben zum VDR bringt - wobei das Interesse im Team da wohl nicht so groß ist das umzusetzen, denn die Software-Frontends (xine, vdr-sxfe und das zunehmend ausgereiftere softhddevice) liefern eigentlich alles was man braucht :D


    Ich nehme mal an, dass der VDR nicht auf Tastatur-Tastendrücke reagieren kann, die über den Lirc-Socket reinkommen - oder muss da nur ein bestimmter Code gesendet werden? Sonst wäre es fast das einfachste eventlircd die Tastatur fangen zu lassen, wenn so eine Karte im System steckt.


    @DaKilla: bei der TT S2-6400 hast du kein X, kein Frontend, das Tasten an den VDR weiterreicht - der VDR kann nicht reagieren, wenn er nichts von Tastendruck mitbekommt.

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • bei der TT S2-6400 hast du kein X, kein Frontend, das Tasten an den VDR weiterreicht - der VDR kann nicht reagieren, wenn er nichts von Tastendruck mitbekommt.


    Das habe ich soeben mitbekommen. Man lernt nie aus. :D


    Albert

  • denn die Software-Frontends (xine, vdr-sxfe und das zunehmend ausgereiftere softhddevice) liefern eigentlich alles was man braucht :D


    Man könnte ja softhddevice auf die Keyboardsache runterstrippen ;) Bestimmt machbar, macht aber auch Arbeit.


    Ich nehme mal an, dass der VDR nicht auf Tastatur-Tastendrücke reagieren kann, die über den Lirc-Socket reinkommen - oder muss da nur ein bestimmter Code gesendet werden? Sonst wäre es fast das einfachste eventlircd die Tastatur fangen zu lassen, wenn so eine Karte im System steckt.


    Das lirc Objekt hat keinen Code um Tastendrücke als Tastaturtasten weiterzureichen, geht also schon mal grundsätzlich nicht. Und das keyb Objekt kann nur vom sdtin des VDR lesen. Also mit dem VDR selber (ohne drin rumzupatchen) kommt man nicht weiter.


    Ein Plugin zu schreiben was die Tastendrücke von <irgendwoher> (z.B. irgendwie von eventlircd) bekommt und zum VDR sendet wäre recht simpel (am Ende ist es eigentlich nur ein "cRemote::Put(KBDKEY(Code));"). Muss aber halt jemand machen (macht ja auch Arbeit) ders braucht.


    cu

  • Wir haben den tty grundsätzlich nicht gesetzt, weil X ein tty braucht und zwei Programme nicht auf das selbe tty zugreifen können.
    Wenn kein X läuft müsste man mal schauen ob das Setzen des tty per /etc/default/vdr geht, dokumentiert müsste es sein in der /usr/lib/vdr/config-loader oder so.


    Da ich weder FF SD noch FF HD jemals mit yavdr eingesetzt habe kann ich es nicht prüfen noch weiss ich ob es grundsätzlich gehen müsste.
    Es kann noch sein das die Umleitung am Ende des upstart Jobs rausgenommen werden muss. /etc/init/vdr.conf wäre der Upstartjob passend dazu.


    Da die Skripte grösstenteils noch von e-tobi sind und auf upstart umgeschrieben sind, kann es sein das es geht. Wenn nicht ist es sicher am sinnvollsten herauszufinden wie man es am besten einbaut (es muss wie Keine_Ahnung schon geschrieben hat dem VDR gesagt werden welches Terminal es sein soll und es muss auf geeignete Weise auf das tty umgeschaltet werden.


    Viel Erfolg !

  • Eigentlich könnte man ja auch eventlircd beibringen die Tasten so "echo "1" > /proc/$(pidof vdr)/fd/0" zum VDR zu bringen.


    Aber nach fd/0 zu schreiben funktioniert aus irgendwelchen Gründen nicht, aber evtl. weiß ja jemand warum das so nicht geht und wie mans richtig macht, dann wäre die Lösung einfach umzusetzen.


    cu

  • Eigentlich könnte man ja auch eventlircd beibringen die Tasten so "echo "1" > /proc/$(pidof vdr)/fd/0" zum VDR zu bringen.


    Ich würde da eventlircd lieber rauslassen, sonst reicht das auch alles von den Fernbedienungen auf diesem Weg weiter - lieber einen separaten Daemon erzeugen, der das übernimmt.

    Aber nach fd/0 zu schreiben funktioniert aus irgendwelchen Gründen nicht


    Als root kann ich das unter Natty...
    Konsole A:

    Code
    1. cat


    Konsole B:

    Code
    1. sudo su
    2. echo 1 > /proc/$(pidof cat)/fd/0


    liefert eine "1".


    Mal sehen, ob das mit dem VDR auch klappt (aber erstmal weiter mit dem Frühjahrsputz :sure )

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Hallo - bin wieder da.

    Quote

    Wenn du auf die Taste m drückst, schon dann passiert nichts? Verstehe ich Dich richtig?

    Ja

    Quote

    steffen_b
    Wir haben den tty grundsätzlich nicht gesetzt, weil X ein tty braucht
    und zwei Programme nicht auf das selbe tty zugreifen können.


    Wenn kein X läuft müsste man mal schauen ob das Setzen des tty per
    /etc/default/vdr geht, dokumentiert müsste es sein in der
    /usr/lib/vdr/config-loader oder so.


    Beim VDR (<>yaVDR) läßt sich über zwei Konfigurationseinträge festlegen, ob und wann der VDR auf die Tastatur zu reagieren hat. Dort wird dem VDR eine beliebige Konsole zugeordnet und wenn diese aktiv ist, die Tastatureingaben an den VDR weitergeleitet.
    Leider funktioniert das mit dem yaVDR nicht - bei anderen schon

    Code
    1. aus /etc/default/vdr
    2. ....
    3. KEYB_TTY="/dev/tty8"
    4. KEYB_TTY_SWITCH=1


    Wenn die Konsole 8 nicht aktive ist, werden die Tastatureingaben nicht an den VDR sonder an die aktive Konsole bzw Anwendung weitergeleitet.

  • Prinzipiell funktioniert der Vorschlag von keine_Anhmung mit dem Parameter "--terminal=/dev/tty10"


    Der Start des VDR ist mit

    Code
    1. vdr -Pdvbhddevice -t /dev/tty10


    und mit

    Code
    1. vdr -Pdvbhddevice --terminal=/dev/tty10


    erfolgreich und die Bedienung mit Tastatur wie gewünscht möglich (abgesehen von ein paar Funktionen die auf eine Funktionstaste zu legen wären).


    Aber wie / wo kann ich das im yaVDR einstellen?
    Wenn ich OPTIONS in /etc/default/vdr ergänze, funktioniert "start vdr" nicht mehr.

  • Aber wie / wo kann ich das im yaVDR einstellen?
    Wenn ich OPTIONS in /etc/default/vdr ergänze, funktioniert "start vdr" nicht mehr.


    Ich sehe keinen Grund warum das nicht funktionieren sollte, wie hast du es denn gemacht? Generell gilt, wenn sowas passiert, dann
    selbstständig im syslog nach der Ursache suchen.


    Gerald


    HP Proliant MicroServer Gen8, Xeon E3-1230, 12 GB RAM, 3xWD red 2TB im RAID 5, 2xSundtek MediaTV Home DVB-C/T, L4M TWIN-C/T, Ubuntu Server 14.04.1, Plex Media Server
    Samsung UE55H6470

  • Ich sehe keinen Grund warum das nicht funktionieren sollte, wie hast du es denn gemacht? Generell gilt, wenn sowas passiert, dann
    selbstständig im syslog nach der Ursache suchen.

    Auszug aus /etc/default/vdr

    Code
    1. ....
    2. # Change this to 1 if you want vdr to be able to shutdown the
    3. # computer
    4. ENABLE_SHUTDOWN=1
    5. # Options that will be passed to vdr's commandline
    6. # for example: OPTIONS="-w 15"
    7. #OPTIONS="-w 0"
    8. OPTIONS="-w 0 -t /dev/tty10"



    Auszug aus dem syslog - der Abbruchwiederholt sich 3 - 4 Mal / Sekunde

  • Hmm, der User vdr darf auf /dev/ttyXX nicht zugreifen. Wenn du ihn in die Gruppe tty packst, dann hat er Schreibrechte, ich bezweifele, dass das reicht.


    Gerald


    HP Proliant MicroServer Gen8, Xeon E3-1230, 12 GB RAM, 3xWD red 2TB im RAID 5, 2xSundtek MediaTV Home DVB-C/T, L4M TWIN-C/T, Ubuntu Server 14.04.1, Plex Media Server
    Samsung UE55H6470

  • ich habe den user vdr in tty gepackt, die options wieder um -t /dev/tty10 ergänzt und den vdr gestartet. Immerhin kein Abbruch.
    Mit

    Code
    1. chmod g+r /dev/tty10
    2. stop vdr
    3. start vdr
    4. chvt 10

    ging dann auch die Bedienung des VDR mittels Tastatur.
    Leider muß chmod nach jedem Rechnerstart erneut ausgeführt werden.


    Mangels besserer Ideen habe ich obige commands in die rc.local eingebaut - allein das umschalten der Konsole (chvt 10) hat auch mit einem davorgesetzten "sleep 10" nicht funktioniert. Das bedeutet das nach dem Start noch manuell die Konsole mit <strg-alt-F10> zu wechseln ist damit es mit der Bedienung per Tastatur klappt.


    Bei weiteren Versuchen stellte ich fest das rc.local vor dem Start des VDR ausgeführt wird und habe in die rc.local nur folgende commands eingetragen:

    Code
    1. chmod g+r /dev/tty10
    2. chvt 10
  • Ich habe so was bei mir, musst halt für dich anpassen.

    Code
    1. KERNEL=="tty0", GROUP:="video", MODE:="0660"
    2. KERNEL=="tty10", GROUP:="video", MODE:="0660"


    "chvt 10" kann auch in die "/etc/default/vdr", dann musst du nix an anderen Dateien ändern.


    cu

  • z.B. in:
    /etc/udev/rules.d/10-vdr.rules


    Der Name (hier "vdr") ist egal, die Nummer (hier "10") muss unter 50 sein.


    cu

  • :]:]:]
    es klappt wie gewünscht - meinen herzlichen Dank an alle die dazu beigetragen haben.


    Und nun noch eine kurze Zusammenfassung:


    Berechtigung vdr für tty10
    neue Datei ( Nr. > 50 da die Angabe ansonsten durch die allgemeinere in 50-udev-default.rules überschrieben wird )
    /lib/udev/rules.d/51-vdr.rules
    KERNEL=="tty10", GROUP="video", MODE="0660"

    Das hat natürlich funktioniert - ABER Unter Berücksichtigung des nachfolgenden Beitrags von Keine_Ahnung ist die nachfolgende Lösung besser:
    neue Datei ( Nr. < 50 und Zuweisung mit := statt mit == )
    /lib/udev/rules.d/09-vdr.rules

    Code
    1. /lib/udev/rules.d/09-vdr.rules
    2. KERNEL=="tty10", GROUP:="video", MODE:="0660"



    Anpassung damit VDR tty10 verwendet und nach Start diese auch aktiv ist

    Code
    1. /etc/default/vdr
    2. ...
    3. #OPTIONS="-w 0"
    4. OPTIONS="-w 0 -t /dev/tty10"
    5. chvt 10
    6. ...


    Anpassung remote.conf - Es sollen keine Buchstaben verwendet werden - stört etwas beim Schreiben
    Custom-Template erstellen und anschließend angepaßte Konfigurationsdatei erzeugen

    Code
    1. mkdir -p /etc/yavdr/templates_custom/var/lib/vdr/remote.conf
    2. cp /usr/share/yavdr/templates/var/lib/vdr/remote.conf/50_keys /etc/yavdr/templates_custom/var/lib/vdr/remote.conf/50_keys


    mit Editor der Wahl /etc/yavdr/templates_custom/var/lib/vdr/remote.conf/50_keys anpassen - z. Bsp. menu statt mit m auf F12

    Code
    1. ...
    2. # KBD.Menu 000000000000006D
    3. KBD.Menu 0000001B5B32347E
    4. ....


    und remote.conf generieren

    Code
    1. process-template /var/lib/vdr/remote.conf


    Rechner durchstarten und freuen :]

  • neue Datei ( Nr. > 50 da die Angabe ansonsten durch die allgemeinere in 50-udev-default.rules überschrieben wird )


    Ebend genau das nicht ;)


    Die Zuweisung ":=" sorgt dafür das spätere Regeln diese nicht überschreiben (Im Gegensatz zu "=" was durch spätere Zuweisungen überschrieben wird). Nimmst du eine Nummer >50 dann kann eine UDEV Regel (die evtl. unbemerkt mit nem Paket reinkommt) mit der Nummer 50 (oder sogar 51) diesen Wert mit ":=" setzen und deine Regel wird nicht mehr beachtet.
    Bleibst du <50 dann kann keine andere Regel vor deiner kommen (die Regeln auf Paketen sind per Vereinbarung >=50, <50 ist also immer in deiner Verantwortung) und dein gesetzter Wert wird immer respektiert.


    UDEV Regeln entwickeln mach Spaß ;)


    cu