Erkennen ob TV per HDMI eingeschaltet ist

  • Hi,


    ich habe aktuell ein etwas komplexews Problem das ich nur mit einem kruden workarround lösen kann.


    Ich setzte Softhddevice mit einer nvidia Karte ein und zwar an einem LG Oled TV per HDMI.


    Das Problem ist nun das sobald der VDR headless started (also z.B. start durch timer) der X Server nicht initialisiert wird und somit das Softhddevice keine X Server findet. Der VDR wird dann durch den watchdog beended und die Aufnahme zerstört.


    Starten des X Servers with empty initial config hilft nur bedingt da er dann nicht in der korrekten Auflösung startet und manuell ein neustart ausgelöst werden muss sobald der Fernseher online ist (bzw per Harmony elite und lircd....)




    Meine aktuelle Lösung lautet wie folgt.


    Der VDR started detached und bringt auch den X Server hoch / per seperated systemd job. Der X Server führt ein Xinit script aus falls er erfolgreich gestartet wurde in dem unter anderem ein background task gestarted wird der den VDR periodisch checkt und Attached falls er detached ist .....




    Also, Falls headless start -->


    VDR Started


    vdr-screen failed und restarted alle 5 sekunden ...


    (nachdem der TV connected)
    vdr-screen start ist erfolgreich und per xinit skript wird das softhddevice attached



    Falls TV start :


    vdr started
    vdr-screen started
    xinit script erkennt den "kürzlichen" vdr start un berechnet eine verzögerung von 10 sekunden nach vdr start (die Zeit dient dazu den vdr komplett hochfahren zu lassen, da ein zu frühes attach bei mir zu hängern geführt hat)
    --> nach 10 sekunden. Der VDR wird attached.




    Leider muss ich danach alle 10 sekunden den zustand prüfen um den vdr nach einem ggf. erfolgten restart/watchdog ihn wieder zu attachen. Das würde ich gerne anders lösen :(



    Gibt es ein event das man prüfen kann, und das ausgelöst wird sobald ein HDMI gerät connected bzw. sich ändert ? In dem Fall könnte ich dies nutzten um den vdr-screen gezielt zu starten ?



    Stefan

  • Man könnte die EDID des TV hinterlegen, damit kann der X-Server immer so starten als ob ein Bildschirm angeschlossen ist.

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Als bei mir noch eine Nvidia Karte verbaut war, habe ich das so gemacht wie von seahawk1986 beschrieben.


    Mit der Intel cpu Grafik funktioniert das bei mir nicht mehr vernünftig, daher starte ich detached mit default-Auflösung und reagiere mit dann udev auf das entsprechende event.
    Wenn der Screen connected ist, wird per xrandr die Auflösung eingestellt und attached.


    Ich weiss allerdings nicht, ob der nvidia Treiber entsprechende udev events generiert und sich per xrandr konfigurieren lässt.


    Am besten einfach mal

    Code
    udevadm monitor

    laufen lassen und den Monitor ein- / ausschalten ...


    cat /etc/udev/rules.d/80-hdmi.rules

    Code
    ACTION=="change", SUBSYSTEM=="drm", RUN+="/etc/udev/scripts/hotplug.sh"


    cat /etc/udev/scripts/hotplug.sh

    KODI, tvh, arch x86_64, Octopus net 2 x Duoflex C/C2/T2 , NUC7i3BNH, Crucial MX300 2TB, LG LM 669S

    Linux is the best OS I have ever seen -- Albert Einstein

  • Alternativ mitm Pulse8 USB HMDI CEC Adapter schubsen.

    - HTPC mit zerbasteltem Yavdr 0.6 , Origen ae X15e, MCE Remote, Asus P5N7A-VM, 1x Digibit R1, Kodi und vdr an Pana 46PZ85E
    - Diverse HTPCs im Umfeld bei Familie und Freundenm die sich vor mir fürchten, mit allen möglichen gruseligen Konfigurationen.
    Auch gern Debian, aber wehe jemand kommt mir mit Suse.

  • Mit der Intel cpu Grafik funktioniert das bei mir nicht mehr vernünftig


    Ich habe das noch nicht selbst ausprobiert, aber für Grafiktreiber mit KMS-Unterstützung sollte das schon möglich sein: https://wiki.archlinux.org/ind…ng#Forcing_modes_and_EDID

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!