web-dev-qa-db-fra.com

Comment obtenir EDID pour un seul moniteur?

Dans l'attente d'une réponse à xrandr détecte l'amplificateur comme moniteur , une solution de contournement possible consiste à mettre sur liste noire les appareils avec des ( [~ # ~] edid [~ # ~] s. Malheureusement xrandr --verbose imprime tout dans un format qui est lourd à analyser et ne prend pas en charge l'interrogation de périphériques uniques, et get-edid ne semble pas facile à mapper aux ID de moniteur de xrandr (par exemple DVI-1).

Existe-t-il un moyen d'obtenir un facilement analysable EDID pour un écran unique?

21
l0b0

Lead # 1: monitor-edid

Je ne connais pas très bien l'EDID et les moniteurs mais j'ai trouvé cet outil, monitor-edid qui pourrait également vous être utile ici.

Pardonnez-moi si c'est hors de la base, j'essaie également d'en savoir plus sur cet espace, compte tenu de la variété des questions que vous posez sur le sujet.

$ 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

Il y avait un autre outil que j'ai rencontré appelé ddccontrol , qui pourrait être utile pour obtenir les informations que vous recherchez.

Lead # 3:/sys

Enfin en fouillant à travers /sys J'ai remarqué qu'il y avait des nœuds feuilles suspendus aux différentes interfaces vidéo.

$ 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

Cependant, sur mon ordinateur portable Lenovo, ces "fichiers" étaient vides, peut-être sont-ils différents sur votre système. J'ai trouvé ce fil de discussion qui montrait un exemple de sortie du 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.       ..

Source:Extraire le numéro de série du moniteur/la date de fabrication à l'aide d'EDID? .

Références

18
slm

La sortie de xrandr --props contient des chaînes hexadécimales EDID pour chaque affichage connecté de manière moins détaillée. Voici un simple Python exploitant cela pour récupérer un EDID pour un moniteur connecté spécifique.

Je n'ai pas trouvé d'autres outils CLI distro-packagés qui fonctionnent pour l'extraction EDID sur mon système basé sur NVidia, mais la plupart des outils pour analyser un EDID binaire semblent bien fonctionner.

14
Matt Vollrath

Si vous utilisez un Arch x86 ou powerpc, vous pouvez utiliser read-edid. Sur Debian, ceci est disponible ici .

L'utilisation est tout simplement (vous devez être root):

$ Sudo get-edid > /tmp/edid

puis analyser la structure:

$ 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

Souvent, cela se combine en:

$ Sudo get-edid | parse-edid

Voir aussi ici sur la façon de passer ce fichier edid personnalisé à votre carte graphique en utilisant soit:

  • CustomEDID ou,
  • drm_kms_helper.edid_firmare
9
malat

Dans la forme binaire EDID est disponible à /sys/class/drm/card%d-%s/edid, où %d représente un index de périphérique DRM (probablement un index GPU) et %s est un ID de connecteur que vous voyez dans la sortie xrandr.

Pour répertorier tous les éléments disponibles, exécutez ls -1 /sys/class/drm/*/edid

Si votre pilote GPU ne prend pas en charge DRM, vous ne pourrez pas obtenir EDID de cette façon.

Pour afficher sous forme hexadécimale, exécutez hexdump dessus.

Si vous voulez un formulaire lisible par l'homme, passez-le à edid-decode, par exemple.:

edid-decode < /sys/class/drm/card0-eDP-1/edid

(vous devrez peut-être l'installer à l'aide de votre gestionnaire de packages, Sudo apt install edid-decode pour Ubuntu)

6
user

Une version récente d'un outil appelé edid-decode peut analyser les informations EDID et lire et écrire du texte et des fichiers EDID binaires. Cela fonctionne bien sur la sortie de xrandr --verbose. Par exemple, il peut être utilisé pour enregistrer l'EDID dans un fichier binaire:

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

La version d'edid-decode fournie avec Fedora 27 (package: xorg-x11-utils) est trop ancienne et ne fonctionne pas parfaitement. J'ai utilisé le plus version récente .

3
Eric Sokolowsky