Xserver für vaapidevice optimieren

  • Inzwischen habe ich meinen neu aufgesetzten VDR mit vaapidevice so weit, dass er Bild und Ton liefert.

    Nun möchte ich das Ganze optimal tunen, damit es als Alltagssystem taugt.


    Laut http://www.vdr-wiki.de/wiki/index.php/Vaapidevice-plugin soll man dazu den Xserver auf genau 1920x1080x50p einstellen.

    Der Monitor, den ich im Arbeitszimmer verwende, hat eine native Auflösung von 1920x1200x60. Kann ich (wenn ja, wie?) den Xserver so konfigurieren, dass er auf jeden Fall 1920x1080x50p am HDMI-Ausgang erzeugt? Später im Wohnzimmer soll er dann an einem "normalen" TV-Gerät betrieben werden.


    Da ich ausser dem "nackten" Xserver nichts brauche (keine InputClasses oder ähnliches), habe ich das Verzeichnis /etc/X11/xorg.conf.d komplett entfernt, und es gibt momentan auch keine xorg.conf-Datei. ch fange also quasi "bei Null" an.

    Hat jemand eine "optimale" xorg.conf?


    Klaus

  • Oje, das Thema Konfiguration Xserver war/ist schon immer ein, sagen wir, leicht kontroverses. Jeder denkt er hat die beste Lösung, jede VDR/HTPC Distro hat hier seine Eigenheiten und nicht ganz selten benötigt die eigene HW eine Sonderlocke ...


    Grundsätzlich ist nur der Anfang nicht einfach, hat man aber seine Konfiguration, trägt man diese über Jahre von Gerät zu Gerät weiter ... habe bis heute Dinge vom Anfang der Nvidia VDPAU Ära (2009) in meiner Datei ...

    soll man dazu den Xserver auf genau 1920x1080x50p einstellen.

    Ja, in Europa wird ja mit 50Hz Bildwiederholfrequenz gesendet und es ist leider nicht die Stärke der Intel GPUs eine 60-50Hz bzw. vice versa Konversation umzusetzen. Das konnten die Nvidia GPUs besser auch wenn's nie 100% fehlerfrei war.

    Kann ich (wenn ja, wie?) den Xserver so konfigurieren, dass er auf jeden Fall 1920x1080x50p am HDMI-Ausgang erzeugt?

    Ja, das geht, musst aber selbst eben probieren/herausfinden ob der verwendete Monitor 1920x1080@50p darstellen kann. Bei TV Geräten ist das aber keine Frage ...


    Zum einen kann man eine Modeline definieren, z.B.:

    Oder, wie wir es seit Jahren bei den Nvidia Karten gemacht haben per edid.bin Datei. Das geht auch mit Intel, hatte ich in diesem Thread mal aufgearbeitet:


    => Zusammenfassung Intel VAAPI & edid.bin


    Im Beispiel benutze ich HDMI-A-1 für den Kernel und HDMI1 für Xorg, funktioniert auch so perfekt bei meinen Haswell NUC. Bei einem neueren NUC, auch mit HDMI Ausgang, musste ich aber für den Xorg DP1 definieren, während der Kernel bei HDMI-A-1 blieb ...


    Hat jemand eine "optimale" xorg.conf?

    Auf das optimal bin ich ja oben schon eingegangen ... aber das ist aktuell meine /etc/X11/xorg.conf.d/20-intel.conf für meine Intel Haswell NUCs:

    Bei Intel sollte man alle (theoretischen) Anschlüsse "behandeln" und ignorieren. Hab auch ungenutzte Optionen mal drin gelassen ...


    [EDIT] Für Deinen PC Monitor würde ich mal mit der Modeline starten, später am TV dann das mit der edid.bin umsetzen ...


    Gruß

    Frank

    HowTo: APT pinning

    Dieser Beitrag wurde bereits 2 Mal editiert, zuletzt von fnu ()

  • Danke. Das scheint ja wirklich ein Fass ohne Boden zu sein ;-).


    Da ich weder irgendwelche Eingabegeräte brauche, noch einen Desktop auf dem Monitor haben möchte, sondern einfach nur TV mit fester Auflösung von 1920x1080@50p, habe ich jetzt mal diese xorg.conf verwendet:

    Die Schreibweise der Optionsnamen habe ich an https://www.x.org/archive/X11R6.8.0/doc/xorg.conf.5.html angelehnt.


    Seltsamerweise gibt mir damit 'xrandr -d :0.0' das hier aus:

    Und mein Monitor zeigt mir als Eingangssignal auch 1680x1050@60 an.

    Muss ich da noch was spezielles unternehmen, damit der Xserver auch den Mode 1920x1080@50p benutzt?


    Beim Start gibt X das hier aus:


    Klaus

  • Hab's gefunden! Ich hatte deine xorg.conf zu sehr vereinfacht ;-).

    Es braucht doch noch die "Screen" Section:

    Damit bekomme ich jetzt ein 1920x1080@50p Signal, auch wenn der Monitor mehr kann.


    Klaus

  • Muss ich da noch was spezielles unternehmen, damit der Xserver auch den Mode 1920x1080@50p benutzt?

    Du brauchst noch einen Abschnitt für den Screen in der xorg.conf (wie im Beispiel von fnu weiter oben ganz am Ende), in dem du die Modeline setzt, die tatsächlich genutzt werden soll. In der Monitor-Section wird die Modeline lediglich dem Monitor als Attribut zugewiesen.


    Der Intel-Treiber nutzt bei den Anschlüssen ein anderes Bezeichnungsschema als xrandr, der Bindestrich sollte noch raus (also HDMI1 statt HDMI-1) und DP-1 sollte explizit deaktiviert werden, wenn du den Anschluss nicht nutzt:

    Code
    1. Section "Monitor"
    2. Identifier "DP1"
    3. Option "Ignore" "true"
    4. EndSection

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Das mit der "Screen" Section hatte ich auch bemerkt.

    Der Bindestrich muss bei mir aber drin sein, sonst funktioniert es nicht.

    Das Ingorieren von "HDMI-2" und "DP-1" hab ich jetzt auch noch aufgenommen:


    Bleibt nur noch das Problem, dass der Xserver den HDMI-Ausgang nicht aktiviert, wenn beim Start kein Monitor angeschlossen ist.

    Frank hat ja beschrieben, wie man das mit edid.bin hinbekommen kann. Aber irgendwie erscheint mir das doch eine übermäßig komplexe Methode zu sein. Geht das nicht auch einfacher? Kann man dem Xserver nicht einfach mit einer Option sagen "Nimm HDMI-1, egal ob ein Monitor dranhängt"?


    Klaus

  • Kann man dem Xserver nicht einfach mit einer Option sagen "Nimm HDMI-1, egal ob ein Monitor dranhängt"?

    Nicht mit KMS-Treibern (Kernel Mode Setting), da muss man das dem Kernel beim Start vorgeben. Bei NVidia-Karten mit dem proprietären Treibern genügt es, wenn das in die xorg.conf einträgt.

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Diese EDID-Daten sind aber doch Monitor-spezifisch. Damit würde das dann zwar für einen bestimmten Monitor funktionieren, aber wenn man den VDR mal woanders anstecken will, nicht mehr, oder?


    Ich frage mich, was man rauchen muss, um auf solche Sachen zu kommen...


    Klaus

  • Wie Alexander schon schrieb, ist das Problem hier das Zusammenspiel Kernel (KMS) & Xorg. Das war früher bei Nvidia (VDPAU) einfacher, der binäre Nvidia Treiber hat keine Rücksicht auf den Kernel genommen. Da hat man einfach nur in der xorg.conf eine edid.bin hinterlegt, was dazu führte das Xorg ein "eingeschaltetes Display" fand, egal ob ob es physisch dran war oder nicht.

    Diese EDID-Daten sind aber doch Monitor-spezifisch.

    Ja und nein. Es ist ja nicht so das jeder Hersteller digitaler Displays seine eigenen Modelines einpflegt. Warum auch die Ausgabeformate sind ja weltweit bekannt/standardisiert, siehe z.B. die o.a. Modeline ist eine "genormte" für 50Hz, EIA/CEA-861B.


    Sicher unterscheiden sich auch die Displaydaten wie Size, VertRefresh, HorizSync in der edid.bin in Details, aber nicht um Welten. Die 1920x1080@50p Modeline wird jedes FHD+ TV Gerät der Welt darstellen, sowie die meisten PC Monitore mit entsprechender Auflösung.


    Ich nutze seit Jahren meine Panasonic edid.bin für alle möglichen Displays, auch mein hp Desktop Monitor. Und das Beste, ich nutze diese immer noch, obwohl ich den Panasonic Plasma schon gar nimmer habe, an meinem LG OLED UHD TV.


    Erst seit wenigen Tagen habe ich einen UHD fähigen NUC, der aktuell auch nur FHD ausgibt, hab nur eben die alte Installation (inkl. Pana edid.bin) übernommen und nur das nötigste angepasst (DP1, CIR). Mit dem werde ich die (UHD) edid.bin des LG nutzen/umsetzen, demnächst irgendwann, ... aber auch darin wird sich die bekannte 1920x1080@50p Modeline befinden, weil der LG das ja auch darstellen kann ...


    Bei der edid.bin Umsetzung geht es drum dem VDR Gerät glauben zu machen, da ist ein Display dran, egal ob das physisch so ist oder nicht. Das physische Gerät muss im Prinzip auch nicht dem der edid.bin entsprechen, sondern der gewählte Ausgabemodus muss darstellbar sein. Nach einem Displaywechsel wird man sich sicher dann um eine Aktualisierung der edid.bin bemühen ... aber man hat erstmal ein Bild.

    Gruß

    Frank

    HowTo: APT pinning

    Dieser Beitrag wurde bereits 4 Mal editiert, zuletzt von fnu ()