Autor Thema: Howto: Ausgeschalteten Fernseher (HDMI) als Ausgabegrät konfigurieren  (Gelesen 1672 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

Offline mtron

  • Server-Admin
  • *
  • Beiträge: 1513
    • some debs
Dieses HowTo erklärt wie man unter ubuntu Linux mit den in intel CPUs integrierten 'video encoding and decoding hardware core' als Grafikkarte einen ausgeschalteten Fernseher (oder anderen HDMI Monitor) für den Display Server Xorg als verfügbares Display Device mit einer 1080p 50 fps Auflösung konfiguriert. Der Grund für diese Verrenkungen ist, dass der alte X.org Display Server beim starten alle Devices eingeschaltet braucht was bei mir oft nicht der Fall ist. Der X-Server und VDR sollen beim Start denken, da ist ein TV dran, selbst wenn kein HDMI Kabel steckt.

Dieser Post ist eine leicht angepasste Version der von User fnu im vdr-portal.de veröffentlichten Anleitung mit dem Titel :"Zusammenfassung Intel VAAPI & edid.bin" .  Ich kopiere es hierher sollte das vdr-portal wieder mal nicht erreichbar sein, und da ich es hier leichter wieder finden kann  ;)

* Fernseher einschalten und die edid.bin (= Display Informationen des Fernsehers) generieren. Device Path 'card0-HDMI-A-1' ggf. anpassen

sudo mkdir /lib/firmware/edid
 sudo cp /sys/class/drm/card0-HDMI-A-1/edid /lib/firmware/edid/edid.bin

* via Grub bootloader die edid.bin dem kernel als parameter übergeben

sudo nano /etc/default/grub
...
GRUB_CMDLINE_LINUX="video=HDMI-A-1:1920x1080@50D drm.edid_firmware=HDMI-A-1:edid/edid.bin"
...

Ausgang HDMI1 wird hier auf Full-HD 50 FPS (1920x1080@50p) forciert, das D danach setzt diese Werte für alle digitalen Ports.

Für Kernel <4.15.0 muss man statt 'drm.edid_firmware=' die alte Variante 'drm_kms_helper.edid_firmware=' verwenden.

* Das initramfs (initiale Root filesystem von dem aus das wirkliche user Filesystem beim Start geladen wird) muss auch noch neu generiert werden. Folgender 'Hook' integriert die edid.bin in alle zukünftig generierten initramfs images, die nach jedem kernel update automatisch neu generiert werden.
sudo nano /etc/initramfs-tools/hooks/include-edid-data

#!/bin/sh
PREREQ="udev"
prereqs()
{
   echo "$PREREQ"
}
case $1 in
 prereqs)
  prereqs
  exit 0
  ;;
esac

. /usr/share/initramfs-tools/hook-functions

# Begin real processing below this line
if [ ! -e "${DESTDIR}/lib/firmware/edid" ]; then
    mkdir -p "${DESTDIR}/lib/firmware/edid"
fi
if [ -r "/lib/firmware/edid/edid.bin" ]; then
   cp "/lib/firmware/edid/edid.bin" "${DESTDIR}/lib/firmware/edid/"
fi
manual_add_modules i915 radeon
exit 0

Jetzt das script noch ausführbar machen:
sudo chmod +x /etc/initramfs-tools/hooks/include-edid-data
und die initiale Ramdisk neu generieren:
sudo update-initramfs -u
sudo update-grub

* Xorg Konfiguration zum laden der edid.bin anpassen . Via Strg+Alt+F2 auf einen System Terminal wechseln, anmelden, via 'sudo -s' zum root machen und die xorg.conf generieren lassen
X -configure
cp /root/xorg.conf.new /etc/X11/xorg.conf

Via Strg+Alt+F7 wieder auf den Desktop zurückwechseln und die /etc/X11/xorg.conf in der Section "Device" sowie der Screen Sub-Section "Display" anpassen:

sudo nano  /etc/X11/xorg.conf
/etc/X11/xorg.conf
...
    Section "Device"
        ...
        Option         "CustomEDID" "HDMI1:/lib/firmware/edid/edid.bin"
        Option         "IgnoreEDID" "false"
        Option         "UseEDID" "true"
        Option         "TearFree" "true"
    EndSection
    ...
    Section "Screen"
        Identifier     "Screen0"
        Device         "Device0"
        Monitor        "HDMI1"
        DefaultDepth    24
        SubSection     "Display"
            Depth       24
            Modes      "1920x1080@50p" "1920x1080@59.94p" "1920x1080@23.97" "1920x1080@24p" "1920x1080@60p"
        EndSubSection
    EndSection
 ...
[close]

 Nach dem reboot und abgezogenem HDMI Kabel kann man via
dmesg | grep drm
verifizieren, daß die edid.bin geladen wurde. Damit kann ich jetzt endlich VDR mit Softhddevice im 'Detached 'Mode starten und dann bei Bedarf das Softhddevice Video Fenster an den Fernseher schicken.  :jb
« Letzte Änderung: 04 Juni, 2018, 21:20 von mtron »
Signatur
PC: lshw | Sats: 19.2° & 13°Ost (DiSEqC, 80cmØ Blech) | DVB-Soft: vdr 2.1.7 mit softhddevice via va-api
- Hauppauge Nova-T USB 2.0 Stick mit DiBcom DiB7700P Frontend, MT2060 tuner, Firmware
- TerraTec Cinergy S2 PCI HD mit STB0899 demodulator und Mantis VP 1041 PCI bridge
- TerraTec Cinergy S2 USB mit Montage DS3000 demodulator und IR-receiver,  Firmware
[close]

Offline Jürgen

  • der Löter
  • User a.D.
  • ****
  • Beiträge: 4999
  • white LED trough prism - WTF is cyan?
Nur eine rein theoretische Frage dazu:

Was würde nun passieren, wenn man an so ein System einen Monitor anschließt, der den gewählten Modus gar nicht beherrscht?

Bei meinem ollen RasPi (als Desktop-System) kann sowas ja zu hartnäckiger Dunkelheit führen, wie früher schon erlebt. Da wird der Grafikmodus immer beim Boot fest vorgegeben, damit der Desktop überhaupt mit 1080p50 los geht.
Zum Glück klappt's aber verlässlich wieder, sobald man zum altbekannten geeigneten Monitor zurückgeht.

Und unter Win erlebe ich ähnliches jedesmal nach Build-Updates, wenn wieder ein Pixelformat verwendet wird, das mein alter Monitor tatsächlich noch nicht beherrscht (YCbCr 4.4.4). Nur noch grelles Rosa und Lila, mein armes Y-Chromosom...
EDID schön und gut, aber Irren ist technisch ;)
Da schicke ich dann kurzerhand per 4:2 Matrix auf den TV, um augenschonend zurück zu finden.

Gibt's unter Linux eigentlich auch Tools wie DesktopOK, zur Wiederherstellung der eigenen Ordnung der Desktopicons usw.? Oder sind Tuxe auch auf recht üppigen Systemen immun? Unter Win gehen die ja gern mal komplett und nachhaltig durcheinander, sobald sich die Grafik spontan entschließt, einen anderen Modus auszuprobieren...
Insbesondere bei recht langen bzw. kritisch schlechten HDMI-Kabeln kann das auch gern mal passieren, oder mit Splittern, Schaltern und Gedöns, bei denen es nicht möglich ist, eine EDID gleich für zwei verschiedene Monitore festzulegen.
Kein Support per persönlicher Mitteilung!
Fragen gehören in's Forum.

Veränderungen stehen an. Dies ist der bisherige Stand:
28,x°,23.5°,19,2°,13°Ost
,1mØ Multifeed, mit Quattro LNBs; Multiswitches 4x 5/10(+x) - alle ohne Terrestrik und modifiziert für nur ein 12V DC Steckernetzteil (Verbrauch insgesamt 15 Watt)
1mØ mit DiSEqC 1.3/USALS als LNB2 an DVB-S2 STB, aktuell 30°W bis 55°O
1.) FM2A88X Extreme6+, A8-6600K (APU mit 4x 3,9 GHz und Radeon HD8570D), 16GB DDR3 1866, 128GB SSD, 3TB HDD, Win10 x64 Pro 1909 / 10.0.17763.107, Terratec T-Stick Plus (für DAB+), Idle Verbrauch ca. 35 Watt
2.) FM2A75 Pro 4, A8-5600K (APU mit 4x 3,6 GHz und Radeon HD7530D), 8GB DDR3 1600, 128GB SSD, 2TB HDD, Win10 x64 Pro, Idle Verbrauch ca. 45 Watt
3.) Raspberry Pi 512MB u.a. mit Raspbian
4.) GA-MA770-UD3, Phenom II x4 940, 8GB DDR2, Radeon HD6570, 2TiB, USB 3.0, 10 Pro x64 (+ XP Pro 32bit (nur noch offline)), Ubuntu 10.4 64bit, Cinergy S2 USB HD, NOXON DAB+ Stick, MovieBox Plus USB, ...

Samsung LE32B530 + Benq G2412HD @ HDMI 4:2; Tokaï LTL-2202B
XORO HRS-9200 CI+ (DVB-S2); XORO HRT-8720 (DVB-T2 HD)
Empfänger nur für FTA genutzt / ohne Abos
YAMAHA RX-V663 (AV-Receiver); marantz 7MKII; Philips SHP2700 ...
FritzBox 7590 mit VDSL2 50000

Offline mtron

  • Server-Admin
  • *
  • Beiträge: 1513
    • some debs
Was würde nun passieren, wenn man an so ein System einen Monitor anschließt, der den gewählten Modus gar nicht beherrscht?

Wenn der Monitor es wirklich gar nicht beherrscht bekommst du auch kein Bild. Am besten du definierst dir eine "Fallback" Modeline die der Monitor kann. Es wird von Xorg die am ersten im conffile aufscheinende Modeline genommen, dann die nächste usw. Es spricht also nichts dagegen eine Modeline für jeden deiner Monitore zu hinterlegen um auf Nummer sicher zu gehen wirklich ein Bild zu bekommen.

Dafür kannst du in der Regel dieselbe edid.bin refernzieren. Wenn diese auf einem Device generierst, das ordentlich alle unterstützten Modelines ausgibt ist da alles drin. Ich verwende die edid.bin meines Toshiba Fernsehers für 2 weitere PC Monitore (einer Dell und einer Acer, die beide behaupten 1080p50 nicht zu können), zwingt man aber Xorg dazu dennoch das Signal so zu senden verarbeiten es die beiden Monitore problemlos.)

Fnu (der Autor dieser Anleitung) schreibt dazu im vdr-protal:
Zitat von: fnu
Die im EDID enthaltenen Modelines sind nach "Electronic Industries Alliance (EIA-861B)" standardisiert und sollten von den allermeisten Displays unterstützt werden.

Es gibt natürlich keine Garantien, aber in 98% der Fälle sollte eine Standard edid.bin mit einer EIA Standardauflösung erstmal funktionieren.

Bei meinem ollen RasPi (als Desktop-System) kann sowas ja zu hartnäckiger Dunkelheit führen, wie früher schon erlebt. Da wird der Grafikmodus immer beim Boot fest vorgegeben, damit der Desktop überhaupt mit 1080p50 los geht.

Ich hab mal versucht den Raspberry über einen hdmi=>dvi Adapter an meinem Dell (der hat nur doch DisplayPort und DVI) anzustöpseln was auch ein paar mal ging und dann wieder nicht. Da scheinen die Rasperries sehr heikel zu sein.

Gibt's unter Linux eigentlich auch Tools wie DesktopOK, zur Wiederherstellung der eigenen Ordnung der Desktopicons usw.?

Das hängt natürlich vom Destop Environment ab. Ich kann da nur von meinem 'mate' sprechen, wo der Desktop Hintergrund und die Icons vom 'Nemo' Datei Manager verwaltet werden.  Damit habe ich diesbezüglich seit vielen Jahren dieses Problem nicht mehr gesehen. Die Position der Icons wird je nach Auflösung des Monitors gespeichert und passt eigentlich immer.
Signatur
PC: lshw | Sats: 19.2° & 13°Ost (DiSEqC, 80cmØ Blech) | DVB-Soft: vdr 2.1.7 mit softhddevice via va-api
- Hauppauge Nova-T USB 2.0 Stick mit DiBcom DiB7700P Frontend, MT2060 tuner, Firmware
- TerraTec Cinergy S2 PCI HD mit STB0899 demodulator und Mantis VP 1041 PCI bridge
- TerraTec Cinergy S2 USB mit Montage DS3000 demodulator und IR-receiver,  Firmware
[close]