Hallo VDR Fans,
nachdem meine VDRs mit Intel Ausgabe nun lange problemlos mit einer festen Modeline funktionierten, kam es mit neueren Kernels (4.15.0) in den letzten Wochen immer wieder mal zu dem Phänomen der fehlenden Videoausgabe, wenn AVR & Plasma beim automatischen VDR Start nicht eingeschaltet waren (Ton war da!) und man die Geräte danach einschaltete. Ein sudo systemctl restart lightdm.service und anschliessendes svdrpsend plug softhddevice deta; svdrpsend plug softhddevice atta brachte dann wieder Bild.
Manchmal war es auch kein Problem und funktionierte einfach, also unterm Strich unzuverlässig und jedesmal erst per SSH drauf um eine laufende Aufnahme nicht zu stören war auch doof. Das Problem hatten wir ja mit Nvidia nicht, da wurde generell eine edid.bin geladen.
Ich erinnerte mich dran vor langer Zeit mal gelesen zu haben das sollte auch mit Intel gehen, war aber seinerzeit zu faul es zu eruieren ...
Daher nun das Ziel: VDR soll beim Start denken, da ist ein TV dran, selbst wenn kein HDMI Kabel steckt.
Ausgehend von den Space Posts ab hier: vdr-softhddevice mit ffmpeg 3.5 habe ich angefangen das mal aufzuarbeiten. Mit den Infos von Space funktionierte schon mal Xorg, die edid.bin wurde auch vom Kernel irgendwann geladen, aber nicht direkt beim Start, was das Problem nicht behob ...
Bei weitere Recherche bin ich über diesen sehr guten Post vom Nutzer "redstorm" im Kodi Forum gestossen, der noch ein paar mehr Details enthielt, z.B. muss die edid.bin auf der initramfs enthalten sein und man sollte den verwendeten Ausgabeport vom Kernel in eine bestimmte Auflösung forcieren.
- https://forum.kodi.tv/showthread.php?tid=231955&page=282
Eine weitere Hilfe war dieser Post von seahawk1986 in einem anderen Forum: https://forum.ubuntuusers.de/post/8928642/
Zusammenfassend habe ich es jetzt bei mir mit Ubuntu 16.04 und Kernel 4.15.0 wie unten beschrieben umgesetzt. Sollte sich sicher auch auf andere Distros adaptieren lassen, Ubuntu 18.04 sowieso ...
Kernel muss mit CONFIG_DRM_LOAD_EDID_FIRMWARE=y gebaut sein.
Prüfbar unter Debian/Ubuntu mit:
Wenn ihr schon eine edid.bin habt, könnt Ihr die verwenden oder wie im o.a. Post beschrieben auch recht einfach auslesen, wenn der VDR ohne edid.bin mit dem eingeschalteten TV gestartet wurde:
sudo mkdir /lib/firmware/edid
sudo cp /sys/class/drm/card0-HDMI-A-1/edid /lib/firmware/edid/edid.bin
Ich geh mal von HDMI1 und Dateiname "edid.bin" aus, bitte entsprechend anpassen ...
Anschliessend grub folgende Kernelschalter übergeben, bei Ubuntu/Debian /etc/default/grub:
...
GRUB_CMDLINE_LINUX="video=HDMI-A-1:1920x1080@50D drm.edid_firmware=HDMI-A-1:edid/edid.bin"
..
Ausgang HDMI1 wird auf 1920x1080@50p forciert, das D ist kein Typo, das gehört so für den digitalen Ausgang. Die Zeile ist so für Kernel >=4.15.0 gültig.
Für Kernel <4.15.0 muss man video=HDMI-A-1:1920x1080@50D drm_kms_helper.edid_firmware=HDMI-A-1:edid/edid.bin verwenden.
Dann muss die edid.bin in der initramfs zur Verfügung stehen, dazu übernehmen wir den Hook aus dem o.a. Kodi Post sudo vi /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
Display More
Dran denken den Namen der edid anzupassen, sollte er nicht "edid.bin" sein ... sudo chmod +x /etc/initramfs-tools/hooks/include-edid-data ebenso nicht vergessen.
Bei Debian/Ubuntu die Konfiguration nun so übernehmen:
Und dann abschliessend noch die edid.bin für Xorg definieren:
...
Section "Device"
Identifier "Device0"
Driver "intel"
VendorName "Intel(R) Corporation"
BoardName "HD Graphics 4400"
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
...
Display More
Etwaige Modelines könnt ihr nun entfernen bzw. auskommentieren.
Nach dem sudo reboot und abgezogenem HDMI Kabel sollte sich dann entsprechendes zeigen:
dmesg|grep drm
[ 0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-4.15.0-22-generic root=UUID=58fe8589-5cdf-47c1-b47a-2876215cd804 ro video=HDMI-A-1:1920x1080@50D drm.edid_firmware=HDMI-A-1:edid/edid.bin quiet splash vt.handoff=7
[ 0.000000] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-4.15.0-22-generic root=UUID=58fe8589-5cdf-47c1-b47a-2876215cd804 ro video=HDMI-A-1:1920x1080@50D drm.edid_firmware=HDMI-A-1:edid/edid.bin quiet splash vt.handoff=7
[ 1.838528] [drm] Memory usable by graphics device = 2048M
[ 1.838533] fb: switching to inteldrmfb from EFI VGA
[ 1.838670] [drm] Replacing VGA console driver
[ 1.844073] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
[ 1.844074] [drm] Driver supports precise vblank timestamp query.
[ 1.847358] [drm] forcing HDMI-A-1 connector on
[ 1.850036] [drm] Got external EDID base block and 1 extension from "edid/edid.bin" for connector "HDMI-A-1"
[ 1.850318] [drm] Initialized i915 1.6.0 20171023 for 0000:00:02.0 on minor 0
[ 1.862212] [drm] Got external EDID base block and 1 extension from "edid/edid.bin" for connector "HDMI-A-1"
[ 1.875262] fbcon: inteldrmfb (fb0) is primary device
[ 1.875374] i915 0000:00:02.0: fb0: inteldrmfb frame buffer device
[ 2.157254] [drm] Got external EDID base block and 1 extension from "edid/edid.bin" for connector "HDMI-A-1"
[ 3.274527] [drm] Got external EDID base block and 1 extension from "edid/edid.bin" for connector "HDMI-A-1"
[ 10.186864] [drm] Got external EDID base block and 1 extension from "edid/edid.bin" for connector "HDMI-A-1"
Display More
bzw. Xorg.0.log, siehe Anhang.
Vielen Dank an Space , seahawk1986 und redstorm aus dem Kodi Forum.
=> Anleitung für SuSE von 447377 - Klick: Zusammenfassung Intel VAAPI & edid.bin
=> Anleitung für ArchLinux von M-Reimer - Klick: Zusammenfassung Intel VAAPI & edid.bin
Regards
fnu