Wie bekomme ich EDID für einen einzelnen Monitor?

20

In Erwartung einer Antwort auf xrandr, dass der Verstärker als Monitor erkannt wird, besteht eine mögliche Problemumgehung darin, Geräte mit bestimmten EDIDs auf die schwarze Liste zu setzen . Leider wird xrandr --verbosealles in einem Format gedruckt, das nur umständlich zu analysieren ist und das Abfragen einzelner Geräte nicht unterstützt, und get-ediddie Ausgabe scheint nicht einfach xrandr(zum Beispiel DVI-1) den Monitor-IDs zuzuordnen zu sein .

Gibt es eine Möglichkeit, eine einfach zu analysierende EDID für einen einzelnen Monitor zu erhalten?

l0b0
quelle
Ich würde zum xrandrParsen gehen . Es ist umständlich, aber Sie schreiben Ihr Skript einfach ein für alle Mal, und dann funktioniert es überall.
Gilles 'SO- hör auf böse zu sein'

Antworten:

18

Lead # 1: Monitor-Edid

Ich bin nicht so begeistert von EDID und Monitoren, aber ich habe dieses Tool gefunden, monitor-ediddas Ihnen auch hier von Nutzen sein könnte.

Verzeih mir, wenn es nicht in der Basis ist, ich versuche angesichts der Vielzahl der Fragen, die Sie zu diesem Thema stellen, auch mehr über diesen Bereich zu erfahren.

$ monitor-edid 
EISA ID: LEN4036
EDID version: 1.3
EDID extension blocks: 0
Screen size: 30.3 cm x 19.0 cm (14.08 inches, aspect ratio 16/10 = 1.59)
Gamma: 2.2
Digital signal

    # Monitor preferred modeline (60.0 Hz vsync, 55.8 kHz hsync, ratio 16/10, 120 dpi)
    ModeLine "1440x900" 114.06 1440 1488 1520 2044 900 903 909 930 -hsync -vsync

    # Monitor supported modeline (50.0 Hz vsync, 51.8 kHz hsync, ratio 16/10, 120 dpi)
    ModeLine "1440x900" 114.06 1440 1488 1520 2204 900 903 909 1035 -hsync -vsync

Lead # 2: ddcontrol

Es gab ein anderes Tool, das ich angerufen habe ddccontrolund das hilfreich sein könnte, um die gewünschten Informationen zu erhalten.

Lead # 3: / sys

Schließlich /sysbemerkte ich beim Durchstöbern, dass an den verschiedenen Video-Interfaces Blattknoten hingen.

$ sudo find . |grep -i edid
./devices/pci0000:00/0000:00:02.0/drm/card0/card0-HDMI-A-1/edid
./devices/pci0000:00/0000:00:02.0/drm/card0/card0-HDMI-A-2/edid
./devices/pci0000:00/0000:00:02.0/drm/card0/card0-HDMI-A-3/edid
./devices/pci0000:00/0000:00:02.0/drm/card0/card0-VGA-1/edid
./devices/pci0000:00/0000:00:02.0/drm/card0/card0-LVDS-1/edid
./devices/pci0000:00/0000:00:02.0/drm/card0/card0-DP-1/edid
./devices/pci0000:00/0000:00:02.0/drm/card0/card0-DP-2/edid
./devices/pci0000:00/0000:00:02.0/drm/card0/card0-DP-3/edid
./module/drm/parameters/edid_fixup
./module/drm_kms_helper/parameters/edid_firmware

Auf meinem Lenovo-Laptop waren diese "Dateien" jedoch leer, möglicherweise sind sie auf Ihrem System anders. Ich habe diesen Forenthread gefunden, der eine Beispielausgabe der VGA-EDID zeigt.

$ lspci | grep VGA
01:00.0 VGA compatible controller: nVidia Corporation NV17 [GeForce4 440 Go 64M] (rev a3)
$ xxd  /sys/devices/pci0000:00/0000:00:0b.0/0000:01:00.0/drm/card0/card0-VGA-1/edid
0000000: 00ff ffff ffff ff00 5a63 0213 0101 0101  ........Zc......
0000010: 2b0a 0103 1c25 1bb0 eb00 b8a0 5749 9b26  +....%......WI.&
0000020: 1048 4cff ff80 8199 8159 714f 6159 4559  .HL......YqOaYEY
0000030: 3159 a94f 0101 863d 00c0 5100 3040 40a0  1Y.O...=..Q.0@@.
0000040: 1300 680e 1100 001e 0000 00ff 0033 3139  ..h..........319
0000050: 3030 3433 3030 3737 330a 0000 00fd 0032  004300773......2
0000060: a01e 6114 000a 2020 2020 2020 0000 00fc  ..a...      ....
0000070: 0047 3930 6d62 0a20 2020 2020 2020 00ba  .G90mb.       ..

Quelle: Extract Monitor Seriennummer / Herstellungsdatum mit EDID? .

Verweise

slm
quelle
@ l0b0 - war es nur 2? Schien wie mehr. Ich kann die Kategorie dieses Q verwirren, wenn Sie sie nur fragen. Ich werde das beleidigende Bit 8-)
slm entfernen.
# 3 / sys / ... funktioniert bei mir, ich habe Intel Corporation 3rd Gen Core processor Graphics Controller (rev 09)mit i915Fahrer, Kubuntu 15.04
user.dz 25.09.15
# 3 / sys / ... und xrandr --verbosebeide geben EDID-Daten für meinen HDMI-Monitor zurück, aber auch keine EDID-Daten für meinen DVI-Monitor.
Noobninja
Der monitor-edid Link ist tot und archive.org hat keine Backups. Weiß jemand, wo ich das Tool bekommen kann?
Peter W.
@PeterW. - Es gibt die Alternative, danke, dass Sie mich darauf aufmerksam gemacht haben. Auch das Tool ist in den meisten großen Repos enthalten. Ich habe es zum Beispiel in Fedora 24 und auch in CentOS gefunden. Sie können das Tool also als Binärdatei installieren, was wahrscheinlich viel einfacher ist.
SLM
11

Die Ausgabe von xrandr --propsenthält hexadezimale EDID-Zeichenfolgen für jede angeschlossene Anzeige in weniger ausführlicher Form. Hier ist ein einfaches Python-Skript , das dies ausnutzt, um eine EDID für einen bestimmten angeschlossenen Monitor abzurufen.

Ich habe keine anderen im Distributionspaket enthaltenen CLI-Tools gefunden, die für die EDID-Extraktion auf meinem NVidia-basierten System geeignet sind, aber die meisten Tools zum Parsen einer binären EDID scheinen problemlos zu funktionieren.

Matt Vollrath
quelle
8

Wenn Sie zufällig einen x86- oder PowerPC-Arch verwenden, können Sie diesen verwenden read-edid. Auf Debian ist dies verfügbar hier .

Die Verwendung ist einfach (Sie müssen root sein):

$ sudo get-edid > /tmp/edid

und dann die Struktur analysieren:

$ parse-edid < /tmp/edid
Checksum Correct

Section "Monitor"
    Identifier "HP v220"
    ModelName "HP v220"
    VendorName "HWP"
    # Monitor Manufactured week 13 of 2008
    # EDID version 1.3
    # Analog Display
    DisplaySize 470 300
    Gamma 2.20
    Option "DPMS" "true"
    Horizsync 30-81
    VertRefresh 56-76
    # Maximum pixel clock is 160MHz
    #Not giving standard mode: 1152x720, 60Hz
    #Not giving standard mode: 1280x960, 60Hz
    #Not giving standard mode: 1280x1024, 60Hz
    #Not giving standard mode: 1440x900, 60Hz
    #Not giving standard mode: 1600x1000, 60Hz
    #Not giving standard mode: 1680x1050, 60Hz
    Modeline    "Mode 0" -hsync +vsync 
EndSection

Oft wird dies kombiniert zu:

$ sudo get-edid | parse-edid

Lesen Sie auch hier, wie Sie diese benutzerdefinierte Edid-Datei mit den folgenden Methoden an Ihre Grafikkarte übergeben können:

  • CustomEDID oder
  • drm_kms_helper.edid_firmare
malat
quelle
3
Nur um klarzustellen, dass get-edid bei mir nicht funktioniert hat, bis ich "modprobe i2c-dev" gemacht habe. Und die "parse-edid" produzierte Modeline wurde von Xorg nicht akzeptiert. Also habe ich dies im Geräteabschnitt verwendet: Option "CustomEDID" "CRT-0: /etc/X11/edid-StarLight-170418_gb-nv-gf-650-GTX-VGA.bin" Ich muss die EDID manuell bereitstellen da kann man über 10m langes vga kabel nicht richtig lesen. Das Einstellen der "DisplaySize" war auch für mich hilfreich.
Delian Krustev
3

Eine neuere Version eines Tools namens edid-decode kann EDID-Informationen analysieren und Text- und Binär-EDID-Dateien lesen und schreiben. Es funktioniert gut mit der Ausgabe von xrandr --verbose. Zum Beispiel kann es verwendet werden, um die EDID in einer Binärdatei zu speichern:

xrandr --verbose | edid-decode - /file/to/save

Die mit Fedora 27 gelieferte Version von edid-decode (Paket: xorg-x11-utils) ist zu alt und funktioniert nicht einwandfrei. Ich habe die neueste Version verwendet .

Eric Sokolowsky
quelle
2

In der binären Form ist EDID unter verfügbar /sys/class/drm/card%d-%s/edid, wobei %dDRM-Geräteindex (wahrscheinlich ein GPU-Index) und %seine Connector-ID, die Sie in der xrandrAusgabe sehen, dargestellt werden.

Führen Sie den folgenden Befehl aus, um alle verfügbaren Einträge aufzulisten ls -1 /sys/class/drm/*/edid

Wenn Ihr GPU-Treiber DRM nicht unterstützt, können Sie EDID auf diese Weise nicht abrufen.

Führen Sie hexdumpes aus , um es in hexadezimaler Form anzuzeigen .

Wenn Sie ein für Menschen lesbares Formular wünschen, geben Sie es weiter an edid-decode:

cat /sys/class/drm/card0-eDP-1/edid | edid-decode

(Möglicherweise müssen Sie es mit Ihrem Paket-Manager sudo apt install edid-decodefür Ubuntu installieren. )

Benutzer
quelle
Wie gibst du es weiter edid-decode? Beachten Sie auch, dass es auch Unterverzeichnisse für nicht verbundene Monitore gibt.
WinEunuuchs2Unix
@ WinEunuuchs2Unix, ich habe ein Beispiel hinzugefügt.
Benutzer