Come ottenere EDID per un singolo monitor?


20

In attesa di una risposta a xrandr rileva l'amplificatore come monitor, una possibile soluzione alternativa è inserire nella blacklist i dispositivi con EDID specifici . Sfortunatamente xrandr --verbosestampa tutto in un formato che è scomodo da analizzare e non supporta l'interrogazione di singoli dispositivi e get-edidl'output non sembra essere facile da mappare agli xrandrID monitor (ad esempio DVI-1).

C'è un modo per ottenere un EDID facilmente analizzabile per un singolo monitor?


Vorrei xrandranalizzare. È ingombrante, ma scrivi la tua sceneggiatura una volta per tutte e poi funzionerà ovunque.
Gilles 'SO- smetti di essere malvagio' il

Risposte:


18

Lead # 1: monitor-edid

Non mi occupo di EDID e monitor, ma ho trovato questo strumento, monitor-edidche potrebbe esserti utile anche qui.

Perdonami se è fuori base, sto cercando di saperne di più su questo spazio, data la varietà di domande che poni sull'argomento.

$ 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

C'era un altro strumento che ho trovato chiamato ddccontrol, che potrebbe essere utile per ottenere le informazioni che stai cercando.

Lead # 3: / sys

Alla fine, frugando, /sysho notato che c'erano dei nodi foglia sospesi tra le varie interfacce video.

$ 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

Tuttavia sul mio laptop Lenovo questi "file" erano vuoti, forse sono diversi sul tuo sistema. Ho trovato questo thread del forum che mostrava l'output di esempio dall'EDID VGA.

$ 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.       ..

Fonte: estrarre il numero di serie del monitor / la data di fabbricazione utilizzando EDID? .

Riferimenti


@ l0b0 - è stato solo 2? Sembrava di più. Potrei confondere la categoria di questo Q w / solo tu chiedendo loro. Rimuoverò il bit offensivo Cool
slm

# 3 / sys / ... funziona per me, ho Intel Corporation 3rd Gen Core processor Graphics Controller (rev 09)con i915driver, Kubuntu 15.04
user.dz

# 3 / sys / ... ed xrandr --verboseentrambi restituiscono dati EDID per il mio monitor HDMI, ma nessuno dei due restituisce dati EDID per il mio monitor DVI.
Noobninja,

Il link monitor-edid è morto e archive.org non ha alcun backup. Qualcuno sa dove posso trovare quello strumento?
Peter W.

@PeterW. - c'è l'alternativa, grazie per averlo portato alla mia attenzione. Inoltre lo strumento è nella maggior parte dei repository principali. L'ho trovato in Fedora 24, per esempio e anche in CentOS. Quindi puoi installare lo strumento come binario che è probabilmente un'opzione molto più semplice.
slm

11

L'output di xrandr --propscontiene stringhe EDID esadecimali per ogni display collegato in modo meno dettagliato. Ecco un semplice script Python che lo sfrutta per catturare un EDID per uno specifico monitor collegato.

Non ho trovato altri strumenti CLI distro-pacchettizzati che funzionano per l'estrazione EDID sul mio sistema basato su NVidia, ma la maggior parte degli strumenti per l'analisi di un EDID binario sembra funzionare bene.


8

Se ti capita di usare un arco x86 o powerpc, potresti usarlo read-edid. Su debian questo è disponibile qui .

L'utilizzo è semplicemente (devi essere root):

$ sudo get-edid > /tmp/edid

e quindi analizzare la struttura:

$ 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

Spesso questo è combinato in:

$ sudo get-edid | parse-edid

Vedi anche qui su come passare questo file edid personalizzato alla tua scheda grafica usando:

  • CustomEDID o,
  • drm_kms_helper.edid_firmare

3
Solo per chiarire che get-edid non ha funzionato per me fino a quando non ho fatto "modprobe i2c-dev". E la Modeline prodotta da "parse-edid" non è stata accettata da Xorg. Quindi l'ho usato nella sezione del dispositivo: Opzione "CustomEDID" "CRT-0: /etc/X11/edid-StarLight-170418_gb-nv-gf-650-GTX-VGA.bin" Devo fornire manualmente l'EDID poiché non può essere letto correttamente con un cavo VGA lungo 10 m. Anche l'impostazione di "DisplaySize" mi è stata utile.
Delian Krustev,

3

Una versione recente di uno strumento chiamato edid-decode può analizzare le informazioni EDID e può leggere e scrivere file EDID binari e di testo. Funziona bene sull'output di xrandr --verbose. Ad esempio, può essere utilizzato per salvare l'EDID in un file binario:

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

La versione di edid-decode fornita con Fedora 27 (pacchetto: xorg-x11-utils) è troppo vecchia e non funziona perfettamente. Ho usato la versione più recente .


2

Nel formato binario, EDID è disponibile all'indirizzo /sys/class/drm/card%d-%s/edid, dove %drappresenta l'indice del dispositivo DRM (probabilmente un indice GPU) ed %sè un ID connettore visualizzato inxrandr nell'output.

Per elencare tutti i disponibili, esegui ls -1 /sys/class/drm/*/edid

Se il tuo driver GPU non supporta DRM, non sarai in grado di ottenere EDID in questo modo.

Per visualizzare in forma esadecimale, eseguirlo hexdump.

Se desideri un modulo leggibile dall'uomo, passalo a edid-decode, ad esempio:

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

(potrebbe essere necessario installarlo utilizzando il gestore pacchetti, sudo apt install edid-decodeper Ubuntu)


Come lo passi a edid-decode? Si noti inoltre che esistono sottodirectory anche per i monitor disconnessi.
WinEunuuchs2Unix

@ WinEunuuchs2Unix, ho aggiunto un esempio.
utente
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.