[Gelöst] yaVDR ansible / osd2web mit Intel-Grafik auf TFT

  • Hallo zusammen,


    ich möchte auf einem Intel-System auch die Intel-Grafik nutzen. Aktuelles Problem ist die Nutzung von osd2web auf einem TFT, welches über VGA angeschlossen ist. Der TV ist über HDMI angeschlossen.


    Im Thread zu yaVDR ansible habe ich den Hinweis bekommen, dass DISPLAY=:0.1definiert sein muss. Dann wird auch osd2web entsprechend gestartet.


    Ich habe aber den Eindruck, dass das Display über VGA nicht erkannt wird. Angeregt über den Thread Zusammenfassung Intel VAAPI & edid.bin habe ich mit

    Code
    1. GRUB_CMDLINE_LINUX="video=HDMI-A-1:1920x1080@50D drm.edid_firmware=HDMI-A-1:edid/edid.bin video=HDMI-A-2:1920x1080@50D drm.edid_firmware=HDMI-A-2:edid/edid.bin"

    Versuche unternommen, dass Display ans Laufen zu bringen. Leider ohne Erfolg.


    Habt ihr Hinweise für mich?


    Viele Grüße

    Frank

    4x yaVDR 0.7: ASUS P5N7A-VM // 2*TeVii S460 // Atric mit Lirc // 4*1,5TB // 7" TFT

  • Versuche unternommen, dass Display ans Laufen zu bringen. Leider ohne Erfolg.

    Das deckt sich mit meiner Erfarung, dass man nicht mehr als einen Monitor nutzen kann, wenn man eine statische Konfiguration bei den Boot-Optionen nach der Anleitung von fnu nutzt, das hatte ich damals auch beschrieben: Zusammenfassung Intel VAAPI & edid.bin


    Daher konfiguriert yavdr-ansible bislang in dem Konfigurationsschnipsel für den X-Server nur einen Ausgang und ignoriert alle übrigen Anschlüsse.

    Code
    1. GRUB_CMDLINE_LINUX="video=HDMI-A-1:1920x1080@50D drm.edid_firmware=HDMI-A-1:edid/edid.bin video=HDMI-A-2:1920x1080@50D drm.edid_firmware=HDMI-A-2:edid/edid.bin"

    Laut https://01.org/linuxgraphics/g…ide/kernel-parameters.htm ist für drm.edid_firmware die Syntax etwas anders:

    Quote

    Was man noch probieren könnte (ich kann das erst am WE nachstellen), wäre die Framebuffer-Auflösung nicht über video= vorzugeben (davor am besten das 20-intel.conf Snippet entfernen, damit der X-Server alle verfügbaren Anschlüsse nutzt), also z.B. sowas zu setzen:

    Code
    1. GRUB_CMDLINE_LINUX="drm.edid_firmware=HDMI-A-1:edid/edid.bin,HDMI-A-2:edid/edid.bin"

    Falls du damit auf beiden Bildschirmen ein Bild bekommst (ohne spezielle Konfiguration wird der X-Server sich über zwei Bildschirme erstrecken, also kein DISPLAY=:0.1 vorhanden sein und vermutlich werden beide mit 1920x1080@60Hz (bzw. dem bevorzugten Mode, den die EDID vorgibt) laufen), müsste man mal schauen, ob es klappt die genutzten Modes über die xorg-Konfiguration (oder notfalls xrandr) zu ändern.

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Ich habe das gerade mal an meinem Laptop durchgespielt - es genügt wenn man dem Kernel die EDID-Dateien mitgibt, den Mode für den Framebuffer in den Boot-Optionen zu setzen (wie es fnu in seiner Anleitung macht) ist nicht notwendig - dann klappt es auch mit mehreren Bildschirmen :)


    Meine Skripte sehen etwas anders aus als die von fnu, daher poste ich die mal (die übernehmen die EDID-Dateien, die von yavdr-ansible angelegt werden):


    Die /etc/default/grub bekommt dann also z.B. so eine Ergänzung:

    Code
    1. GRUB_CMDLINE_LINUX_DEFAULT+=" drm.edid_firmware=eDP-1:edid/edid.eDP-1.bin,HDMI-A-2:edid/edid.HDMI-2.bin"

    Die Konfiguration für Xorg ist etwas tricky, weil man zwei Device-Sections benötigt (den entscheidenden Hinweis habe ich hier gefunden) - auf meinem Haswell-Laptop, den ich zum Testen nutze sieht das umgebaute Snippet dann so aus:

    Damit würde dann das zweite Display mit osd2web im Browser auf eDP1 laufen, was dem internen Bildschirm des Laptops entspricht.

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

    The post was edited 2 times, last by seahawk1986 ().

  • Ich habe die X-Server Konfiguration für zwei Bildschirme gerade eingebaut - du kannst deinen lokalen Klon des yavdr-ansible Repo mit git pull auf den letzten Stand bringen und dann die Bildschirmerkennung so neu anstoßen:

    sudo -H ansible-playbook yavdr07.yml -b -i 'localhost_inventory' --connection=local --tags="yavdr-xorg"


    Die EDIDs muss man aktuell noch selbst dem Kernel als Boot-Argumente übergeben, da muss ich mir noch einen brauchbaren Mechanismus überlegen, wie man das bei Bedarf wieder loswerden kann.

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Ich habe meinen Klon aktualisiert und dass yaVDR-Playbook nochmal gestartet (Ich hoffe, das war so gedacht?).


    Ich bekomme folgende Fehlermeldung:

    Code
    1. TASK [yavdr-xorg : vdr-config | use vaapi for softhddevice if we got an intel IGP] *********************************
    2. fatal: [localhost]: FAILED! => {"changed": false, "msg": "value of state must be one of: absent, present, got: present if intel_detected else absent"}

    4x yaVDR 0.7: ASUS P5N7A-VM // 2*TeVii S460 // Atric mit Lirc // 4*1,5TB // 7" TFT

  • Ok, das war ein Syntax-Fehler - bitte hole dir noch mal den aktuellen Stand und lass es erneut laufen.


    Edit: jetzt ist die Änderung im Git.

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

    The post was edited 1 time, last by seahawk1986 ().

  • Hallo seahawk1986,


    ich denke, dass ich alles so umgesetzt habe, wie Du vorgeschlagen hast (deine Dateien übernommen, die Bildschirme neu erkennen lassen, Grub angepasst). Ich habe jetzt eine gute und leider noch eine schlechte Nachricht:


    Ich bekomme nun eine osd2web-Darstellung auf meinen TFT - Hurra :)^^:thumbup:.


    Leider habe ich aktuell kein TV-Bild mehr. Hast Du eine Idee?


    Vielleicht ein Hinweis. Meine edid-Dateien liegen im Moment hier:

    Code
    1. /sys/devices/pci0000:00/0000:00:02.0/drm/card0/card0-HDMI-A-1/edid
    2. /sys/devices/pci0000:00/0000:00:02.0/drm/card0/card0-eDP-1/edid
    3. /sys/devices/pci0000:00/0000:00:02.0/drm/card0/card0-HDMI-A-2/edid


    Viele Grüße

    Frank

    4x yaVDR 0.7: ASUS P5N7A-VM // 2*TeVii S460 // Atric mit Lirc // 4*1,5TB // 7" TFT

  • Leider habe ich aktuell kein TV-Bild mehr. Hast Du eine Idee?

    Wie sieht denn das erzeugte Snippet für die 20-intel.conf jetzt aus, was steht in der /etc/ansible/facts.d/drm.fact und was sagt cat /proc/cmdline?

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Wie sieht denn das erzeugte Snippet für die 20-intel.conf jetzt aus


    (EDIT: Ich nehme an, dass dies deine 20-intel.conf ist. Ich habe anscheinend keine neue erzeugen lassen.)


    Dann habe ich sudo -H ansible-playbook yavdr07.yml -b -i 'localhost_inventory' --connection=local --tags="yavdr-xorg" und ein reboot nochmals ausgeführt und jetzt habe ich wieder ein TV-Bild aber wieder keine osb2web mehr ;(.


    Die 20-intel.conf sieht jetzt so aus:


    In /etc/ansible/facts.d/drm.fact steht:

    und cat /proc/cmdline sagt:

    Code
    1. BOOT_IMAGE=/boot/vmlinuz-4.15.0-45-generic root=UUID=1a484323-2929-11e9-9d31-7085c2b0135d ro video=HDMI-A-1:1920x1080@50D drm.edid_firmware=HDMI-A-1:edid/edid.bin video=HDMI-A-2:1920x1080@50D drm.edid_firmware=HDMI-A-2:edid/edid.bin

    4x yaVDR 0.7: ASUS P5N7A-VM // 2*TeVii S460 // Atric mit Lirc // 4*1,5TB // 7" TFT

    The post was edited 2 times, last by r371769 ().

  • und cat /proc/cmdline sagt:

    Code
    1. BOOT_IMAGE=/boot/vmlinuz-4.15.0-45-generic root=UUID=1a484323-2929-11e9-9d31-7085c2b0135d ro video=HDMI-A-1:1920x1080@50D drm.edid_firmware=HDMI-A-1:edid/edid.bin video=HDMI-A-2:1920x1080@50D drm.edid_firmware=HDMI-A-2:edid/edid.bin

    Das kann nicht gut gehen - entferne mal alle Einträge für die Boot-Optionen drm.edid_firmware und video aus der /etc/default/grub, dann lass sudo update-grub laufen, mach einen Reboot und dann lässt du das Playbook (bzw. den Teil für yavdr-xorg) noch mal laufen.


    Wenn du dann auf beiden Bildschirmen ein Bild siehst, schauen wir mal wegen dem Eintrag für die drm.edid_firmware Boot-Option weiter.

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Hurra :):thumbup:! Ich habe jetzt ein TV- und ein osd2web-Bild.


    Ich habe (wie du geschrieben hast), alle Einträge zu GRUB_CMDLINE_LINUX_DEFAULTaus /etc/default/grub gelöscht. sudo -H ansible-playbook yavdr07.yml -b -i 'localhost_inventory' --connection=local --tags="yavdr-xorg" und ein reboot ausgeführt. Und siehe da, ich habe jetzt ein Bild im TV und auf dem TFT.


    Vielen herzlichen Dank für deine Hilfe und Mühen, seahawk!


    So, jetzt werde ich mal sehen, wie ich die Auflösung auf 800x600 für den TFT eingestellt bekomme, da ich aktuell testhalber einen normalen Monitor angeschlossen habe. Im VDR habe ich aber ein 7" LCD mit 800x600-Auflösung eingebaut.

    4x yaVDR 0.7: ASUS P5N7A-VM // 2*TeVii S460 // Atric mit Lirc // 4*1,5TB // 7" TFT

    The post was edited 1 time, last by r371769 ().

  • So, jetzt werde ich mal sehen, wie ich die Auflösung auf 800x600 für den TFT eingestellt bekomme, da ich aktuell testhalber einen normalen Monitor angeschlossen habe. Im VDR habe ich aber ein 7" LCD mit 800x600-Auflösung eingebaut.

    Wenn das LCD im VDR eine brauchbare EDID liefert, sollte er automatisch die passende Auflösung wählen.


    Und siehe da, ich habe jetzt ein Bild im TV und auf dem TFT.

    Wie sieht jetzt die /etc/ansible/facts.d/drm.fact aus? Falls du einen Konstellation hast, bei der nicht garantiert ist, dass die Bildschirme immer als angeschlossen erkannt werden, solltest du die EDID-Dateien für die Bildschirme statisch laden.

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • /etc/ansible/facts.d/drm.fact sieht jetzt so aus (7" LCD noch nicht angeschlossen):

    solltest du die EDID-Dateien für die Bildschirme statisch laden.

    Wie mache ich das?

    4x yaVDR 0.7: ASUS P5N7A-VM // 2*TeVii S460 // Atric mit Lirc // 4*1,5TB // 7" TFT

  • Wie mache ich das?

    Indem du in der /etc/default/grub so eine Zeile anlegst:

    Code
    1. GRUB_CMDLINE_LINUX_DEFAULT+=" drm.edid_firmware=eDP-1:edid/edid.eDP-1.bin,HDMI-A-1:edid/edid.HDMI-1.bin"

    Und dann sudo update-grub ausführst - vor dem Reboot am besten in /lib/firmware/edid/ nachsehen, ob da die beiden EDID-Dateien hinterlegt wurden (das sollte durch den Initramfs-Hook passieren, den ich in yaVDR ansible / osd2web mit Intel-Grafik auf TFT gepostet hatte).


    Du brauchst später aber die EDID des kleinen Bildschirms, d.h. um den korrekt auslesen zu können, wenn der angeschlossen ist, musst du die Zeile wieder aus der /etc/default/grub entfernen, sudo update-grub ausführen und dann die Bildschirmerkennung noch mal laufen lassen. Und dann wieder die Boot-Option hinzufügen, Grub aktualisieren und den Rechner nochmals neu starten.

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Du brauchst später aber die EDID des kleinen Bildschirms, d.h. um den korrekt auslesen zu können, wenn der angeschlossen ist, musst du die Zeile wieder aus der /etc/default/grub entfernen, sudo update-grub ausführen und dann die Bildschirmerkennung noch mal laufen lassen. Und dann wieder die Boot-Option hinzufügen, Grub aktualisieren und den Rechner nochmals neu starten.

    So wie es aussieht, hat jetzt alles funktioniert. Ich konnte den TV erst nach dem Starten vom VDR einschalten und das Bild ist da. Osd2web funktioniert auch auf dem 7"-TFT.


    Soweit so gut ... Nochmal ganz herzlichen Dank für deine Hilfe.


    Wollen wir mal sehen, was ich als nächstes testen werde ...


    EDIT-1: Sorry, aber nach dem letzten Reboot der 7"-TFT nicht mehr aktiv, ich gehe mal suchen ...

    EDIT-2: Der Fehler saß vor der Tastatur! => alles ok, es funktioniert alles, so wie es soll.


    Viele Grüße

    Frank

    4x yaVDR 0.7: ASUS P5N7A-VM // 2*TeVii S460 // Atric mit Lirc // 4*1,5TB // 7" TFT

    The post was edited 2 times, last by r371769 ().