¿Cómo obtener EDID para un solo monitor?

20

En espera de una respuesta a xrandr, se detecta el amplificador como monitor, una posible solución es poner en una lista negra los dispositivos con EDID específicos . Desafortunadamente, xrandr --verboseimprime todo en un formato que es engorroso de analizar y no admite la consulta de dispositivos individuales, y get-edidla salida no parece ser fácil de asignar a xrandrlas ID de monitor (por ejemplo DVI-1).

¿Hay alguna forma de obtener un EDID fácilmente analizable para un solo monitor?

l0b0
fuente
Yo iría a xrandranalizar. Es engorroso, pero solo escribes tu guión de una vez por todas, y luego funcionará en todas partes.
Gilles 'SO- deja de ser malvado'

Respuestas:

18

Lead # 1: monitor-edid

No estoy tan interesado en EDID y monitores, pero encontré esta herramienta, monitor-edidque también podría serle útil aquí.

Perdóname si está fuera de lugar, también estoy tratando de aprender más sobre este espacio, dada la variedad de preguntas que haces sobre el tema.

$ 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

Plomo # 2: ddcontrol

Hubo otra herramienta que encontré llamada ddccontrol, que podría ser útil para obtener la información que busca.

Plomo # 3: / sys

Finalmente, al hurgar /sys, noté que había nodos hoja colgando de las diversas interfaces de 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

Sin embargo, en mi computadora portátil Lenovo estos "archivos" estaban vacíos, tal vez son diferentes en su sistema. Encontré este hilo del foro que mostró una salida de muestra del VGA EDID.

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

Fuente: Extraer Número de serie del monitor / Fecha de fabricación con EDID .

Referencias

slm
fuente
@ l0b0: ¿solo han sido 2? Parecía más. Puedo estar confundiendo la categoría de esta Q con solo preguntarles. Eliminaré el bit ofensivo 8-)
slm
# 3 / sys / ... funciona para mí, tengo Intel Corporation 3rd Gen Core processor Graphics Controller (rev 09)con el i915controlador, Kubuntu 15.04
user.dz
# 3 / sys / ... y xrandr --verboseambos devuelven datos EDID para mi monitor HDMI, pero ninguno devuelve datos EDID para mi monitor DVI.
noobninja
El enlace monitor-edid está inactivo y archive.org no tiene ninguna copia de seguridad. ¿Alguien sabe dónde puedo obtener esa herramienta?
Peter W.
@PeterW. - Existe la alternativa, gracias por llamar mi atención sobre esto. Además, la herramienta se encuentra en la mayoría de los repositorios principales. Lo encontré en Fedora 24, por ejemplo, y también en CentOS. Por lo tanto, puede instalar la herramienta como un binario, que probablemente sea una opción mucho más fácil.
slm
11

La salida de xrandr --propscontiene cadenas EDID hexadecimales para cada pantalla conectada de una manera menos detallada. Aquí hay un simple script de Python que explota esto para obtener un EDID para un monitor conectado específico.

No he encontrado ninguna otra herramienta CLI distribuida en distro que funcione para la extracción de EDID en mi sistema basado en NVidia, pero la mayoría de las herramientas para analizar un EDID binario parecen funcionar bien.

Matt Vollrath
fuente
8

Si está utilizando un arco x86 o powerpc, puede usarlo read-edid. En debian esto está disponible aquí .

El uso es simple (debes ser root):

$ sudo get-edid > /tmp/edid

y luego analiza la estructura:

$ 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

A menudo esto se combina en:

$ sudo get-edid | parse-edid

Vea también aquí cómo pasar este archivo edid personalizado a su tarjeta gráfica usando:

  • CustomEDID o,
  • drm_kms_helper.edid_firmare
malat
fuente
3
Solo para aclarar que get-edid no funcionó para mí hasta que hice "modprobe i2c-dev". Y el Modeline producido por "parse-edid" no fue aceptado por Xorg. Así que he usado esto en la sección del dispositivo: Opción "CustomEDID" "CRT-0: /etc/X11/edid-StarLight-170418_gb-nv-gf-650-GTX-VGA.bin" Necesito proporcionar manualmente el EDID ya que no se puede leer correctamente con un cable VGA de 10 m de largo. Configurar el "Tamaño de pantalla" también fue útil para mí.
Delian Krustev
3

Una versión reciente de una herramienta llamada edid-decode puede analizar información EDID, y puede leer y escribir texto y archivos EDID binarios. Funciona bien en la salida de xrandr --verbose. Por ejemplo, se puede usar para guardar el EDID en un archivo binario:

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

La versión de edid-decode que viene con Fedora 27 (paquete: xorg-x11-utils) es demasiado antigua y no funciona perfectamente. Usé la versión más reciente .

Eric Sokolowsky
fuente
2

En forma binaria, EDID está disponible en /sys/class/drm/card%d-%s/edid, donde %drepresenta el índice del dispositivo DRM (probablemente un índice de GPU) y %ses una ID de conector que se ve en la xrandrsalida.

Para enumerar todos los disponibles, ejecute ls -1 /sys/class/drm/*/edid

Si su controlador de GPU no admite DRM, no podrá obtener EDID de esta manera.

Para ver en forma hexadecimal, ejecútelo hexdump.

Si desea un formulario legible para humanos, páselo a edid-decode, por ejemplo:

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

(es posible que deba instalarlo usando su administrador de paquetes, sudo apt install edid-decodepara Ubuntu)

usuario
fuente
¿Cómo se lo pasas edid-decode? También tenga en cuenta que también hay subdirectorios para monitores desconectados.
WinEunuuchs2Unix
@ WinEunuuchs2Unix, he agregado un ejemplo.
usuario