Posts by seahawk1986

    Probier es mal mit dieser Änderung an der /usr/lib/python3/dist-packages/yavdr_frontend/vdrfrontend.py:

    Wenn die Grafikkarte keine EDID vom TV/Receiver bekommt, dann verhält er sich vermutlich so, als ob kein Monitor angeschlossen wäre - das müsste man man dann in der /var/log/Xorg.log.0 sehen können, wenn man in das Problem läuft.


    Man kann für Intel-Grafikkarten dem Kernel eine EDID mitgeben und ein Display als immer verbunden setzen (ich hatte das mal in [Gelöst] yaVDR ansible / osd2web mit Intel-Grafik auf TFT beschrieben). Du brauchst dann nur die Boot-Option und den Hook für die initramfs, die Xorg-Konfiguration sollte mit dem Playbook schon passen.

    Wie beendest du das Emby Media Center? Falls du das Programm aus sich selbst heraus beendest (statt z.B. sowas wie frontend-dbus-send switchto vdr abzusetzen), dann greift vermutlich der automatische Stop aufgrund der

    PartOf=app@emby\x2dtheater.service

    Direktive nicht, weil die Unit nicht aktiv gestoppt wird. Probiere die Systemd-Unit so anzupassen:

    Danach einmal systemd die Units neu einlesen lassen und die Unit re-enablen:

    Code
    1. sudo -u vdr DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/666/bus systemctl --user daemon-reload
    2. sudo -u vdr DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/666/bus systemctl --user disable emby-irexec.service
    3. sudo -u vdr DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/666/bus systemctl --user enable emby-irexec.service

    Wie können IR-Events auf X-Events abgebildet werden?

    Kann hierzu das Tool irxevent verwendet werden?

    Wie muss dieses in Verbindung mit dem emby-client gestartet werden, damit dieser die Events auch erhält?

    Wenn das für das jeweilige Programm gelten soll, würde ich dafür eine eigene lircrc-Konfigurationsdatei (z.B. /var/lib/vdr/.lircrc-emby) anlegen - da gilt die in der Manpage von irexec gezeigte Syntax, die Tastennamen für die X-Events kann man sich z.B. in https://github.com/aldebaran/l…/master/doc/irxevent.keys ansehen - also z.B. um KEY_OK auf die Eingabetaste zu mappen:

    Code
    1. begin
    2. prog = irxevent
    3. button = KEY_OK
    4. config = Key Return CurrentWindow
    5. end

    Statt CurrentWindow kann man auch den expliziten Namen des Fensters angeben, das den Tastendruck erhalten soll.


    irexec kann man dann über eine Systemd-Unit starten lassen, die eine Abhängigkeit von der app@emby\x2dtheater.service (den escapten Namen für den Teil hinter dem @ bekommt man mit systemd-escape) hat und daher mit der Unit gestartet und gestoppt wird:

    Code: /var/lib/vdr/.config/systemd/user/emby-irexec.service
    1. [Unit]
    2. Description=LIRC command handler for emby media center
    3. PartOf=app@emby\x2dtheater.service
    4. [Service]
    5. Type=simple
    6. ExecStart=/usr/bin/irexec %h/.lircrc-emby
    7. [Install]
    8. WantedBy=app@emby\x2dtheater.service

    Und dann noch die Unit in der Session des Users vdr anschalten:

    sudo -u vdr DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/666/bus systemctl --user enable emby-irexec.service

    Als Grafikkarte kommt eine nvidia Quadro 410 zum Einsatz.

    Bei kodi und emby liegt ein Teil außerhalb des sichtbaren Bereichs, beim vdr passt die Ausgabe.

    Über welche Parameter kann die dargestellte Fläche beeinflusst werden?

    DisplaySize in der Monitor Section der xorg.conf wurde vim System ignoriert.

    Am besten ist es, wenn man den TV dazu bringen kann den Overscan-Bereich nicht abzuschneiden. Falls das nicht möglich ist, kann man bei nvidia-Karten Optionen für den ViewPort setzen, also z.B. für einen alten HD-Ready TV;

    Frage: Sollte/Muss ich das alte PPA von Kodi entfernen?

    Kannst du machen, ist aber nicht unbedingt notwendig - der langfristige Plan ist KODI 19.2 nach ppa:yavdr/experimental-kodi zu bringen (bei den Paketen für die ARM-Architekturen gibt es noch ein paar mit Build-Fehlern, das muss ich bei Gelegenheit noch mal angehen).

    ich benutze meines Wissens nach kein VNSI (wie kann ich das prüfen?)

    vdrctl bzw. vdr --showargs oder im Log schauen, welche Plugins der VDR beim Starten lädt.

    Okt 07 14:09:06 vdr vdr[433587]: [433617] VNSI: Requesting clients to reload timers

    Wenn ich den Code richtig verstehe, gibt das vnsiserver-Plugin bei jedem Durchlauf der Endlosschleife in der status.c diese Melgung aus und stößt eine Aktualisierung der Timer-Listen an, ohne zu schauen, ob sich überhaut etwas geändert hat.

    Die Namen (und IDs) der Modes bekommst du aus xrandr -d :0 --verbose und die Modes und Refresh-Rate musst du normalerweise getrennt angeben, also:

    xrandr --output DP1 --mode 720x576 -r 50 - wobei dein Beispiel aus der xorg.conf soweit ich das sehen kann kein Interlaced Mode ist (vgl. https://tldp.org/HOWTO/XFree86…-Timings-HOWTO/inter.html), also 576p50 entspräche.

    Was ist das "subprocess-Modul" ?

    https://docs.python.org/3.8/library/subprocess.html - damit kann man aus Python heraus Programme bzw. Shell-Befehle ausführen.

    2a) Wie macht Kodi das ... da es ja dynamisch an den Film anpassen kann ?

    Es schaltet im Fall der Ausgabe über Xorg den Mode um und bei einigen anderen unterstützten Ausgabevarianten nutzt es die entsprechenden Mechanismen.

    2b) Ich hatte gehofft, dass sich mit xrandr die Einstellung dynamisch in Abhängigkeit des gerade laufenden Senders (Liste mit Sendernummer+Format oder Abfrage der Auflösung) ändern lässt. Wäre das möglich und könnt ihr mir als LinuxScriptingDAU da bitte weiter helfen.

    Du wirst dir mit Xorg schwer tun eine halbbildgenaue Interlaced-Ausgabe hinbekommen, das der Grund weshalb man die aufwändigen Deinterlacer für die Ausgabeplugins braucht, die den X-Server nutzen - es gab es mal vor vielen Jahren einen Ansatz das mit gepatchten radeon-Treibern umzusetzen (vgl. http://www.vdr-wiki.de/wiki/index.php/CheapBudget ), aber das ist wohl eingeschlafen, als nvidia-Karten mit brauchbaren Deinterlacern für VDPAU nutzbar wurden.


    Die OSD-Größe bei laufenden Ausgabeplugin zu ändern ist auch so eine Sache, das gibt mitunter hässliche Artefakte oder sogar crashes (je nachdem wie gut der Skin damit umgehen kann).


    Aber generell müsste man erst mal an die Auflösung und Bildwiederholrate des aktuell wiedergegebenen Bild/Aufnahme kommen (soweit ich das im Kopf habe, gibt es da aktuell keine Möglichkeit das dynamisch von Außen abzufragen, VDR-Plugins kommen aber wohl an die Information) und dann xrandr bemühen, um den Mode zu wechseln.


    Wenn man nur eine Zuordnung von Kanälen und Modes machen will, sollte es genügen sich an die Signale des dbus2vdr-Plugin zu hängen, damit man den Kanalwechsel des für Live-TV genutzten Tuners mitbekommt und dann darauf reagieren kann - also z.B. mit python3-pypydbus2vdr (gibt es als Paket im yaVDR experimental-main PPA):

    Wenn das die gewünschten Ergebnisse liefert, kann man xrandr tatsächlich mit dem subprocess-Modul aufrufen (wobei ich gerade nicht im Kopf habe, wie die Mode-Namen bei Intel IGPs aussehen).

    nur der Raspi 4 war immer etwas weniger brilliant und in dunklen Szenen war schwarz nie wirklich schwarz. Vielleicht starte ich nochmal einen neuen Versuch.

    Schau mal auf die HDMI-Levels (lassen sich per Boot-Option setzen), eventuell passt das nicht zu den Einstellungen von AVR bzw. TV.

    Da brauche ich noch eine Methode, um die letzte Zeile auch nach dem Aufwachen auszuführen.

    Dazu kann man sich in die sleep-Hooks von systemd hängen - z.B. mit einer ausführbaren Datei, die sowas enthält:

    Shell-Script: /usr/lib/systemd/system-sleep/resume-channelswitch.sh
    1. #!/bin/sh
    2. case $1/$2 in
    3. pre/*)
    4. ;;
    5. post/*)
    6. on_vdr -o -e -c "svdrpsend chan +"
    7. on_vdr -o -e -c "svdrpsend chan -"
    8. ;;
    9. esac

    Wie schaffe ich es , ein 3-Zeiler Shell Script mit genügend Berechtigungen auszuführen, direkt nachdem VDR gestartet ist?

    Das könnte man mit einer Systemd-Unit lösen:

    Dann mal mittels systemctl start radio_channel_switch_workaround.service ausprobieren, während ein Radiokanal eingestellt ist.

    Wenn alles wie gewünscht klappt, den Start beim Booten mittels systemctl enable radio_channel_switch_workaround.service aktivieren.