Comment obtenir EDID pour un seul moniteur?


20

En attendant 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 spécifiques . Malheureusement, xrandr --verboseimprime tout dans un format qui est lourd à analyser et ne prend pas en charge l'interrogation de périphériques uniques, et get-edidla sortie de semble ne pas être facile à mapper aux xrandrID de moniteur (par exemple DVI-1).

Existe-t-il un moyen d'obtenir un EDID facilement analysable pour un seul moniteur?


J'irais pour l' xrandranalyse. C'est lourd, mais vous écrivez juste votre script une fois pour toutes, et cela fonctionnera partout.
Gilles 'SO- arrête d'être méchant'

Réponses:


18

Lead # 1: monitor-edid

Je ne connais pas très bien l'EDID et les moniteurs, mais j'ai trouvé cet outil, monitor-edidqui 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é ddccontrol, qui pourrait être utile pour obtenir les informations que vous recherchez.

Lead # 3: / sys

Enfin, en fouillant, /sysj'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? .

Les références


@ l0b0 - n'a-t-il été que 2? Semblait plus. Je suis peut-être en train de confondre la catégorie de ce Q w / juste vous leur demandez. Je supprimerai le bit incriminé 8-)
slm

# 3 / sys / ... fonctionne pour moi, je l'ai Intel Corporation 3rd Gen Core processor Graphics Controller (rev 09)avec i915chauffeur, Kubuntu 15.04
user.dz

# 3 / sys / ... et les xrandr --verbosedeux renvoient des données EDID pour mon moniteur HDMI, mais ni ne renvoient de données EDID pour mon moniteur DVI.
noobninja

Le lien monitor-edid est mort et archive.org n'a aucune sauvegarde. Quelqu'un sait où je peux obtenir cet outil?
Peter W.

@PeterW. - il y a l'alternative, merci d'avoir porté cela à mon attention. L'outil se trouve également dans la plupart des dépôts majeurs. Je l'ai trouvé dans Fedora 24, par exemple, et aussi dans CentOS. Vous pouvez donc installer l'outil en tant que binaire, ce qui est probablement une option beaucoup plus facile.
slm

11

La sortie de xrandr --propscontient des chaînes EDID hexadécimales pour chaque écran connecté de manière moins détaillée. Voici un simple script 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.


8

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

L'utilisation est simple (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 également ici comment passer ce fichier edid personnalisé à votre carte graphique en utilisant soit:

  • CustomEDID ou,
  • drm_kms_helper.edid_firmare

3
Juste pour clarifier que get-edid n'a pas fonctionné pour moi jusqu'à ce que je fasse "modprobe i2c-dev". Et la Modeline produite par "parse-edid" n'a pas été acceptée par Xorg. J'ai donc utilisé cela dans la section appareil: Option "CustomEDID" "CRT-0: /etc/X11/edid-StarLight-170418_gb-nv-gf-650-GTX-VGA.bin" Je dois fournir manuellement l'EDID car il ne peut pas être lu correctement sur un câble VGA de 10 m de long. Le réglage de la "DisplaySize" m'a également été utile.
Delian Krustev

3

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 de edid-decode fournie avec Fedora 27 (package: xorg-x11-utils) est trop ancienne et ne fonctionne pas parfaitement. J'ai utilisé la version la plus récente .


2

Au format binaire, EDID est disponible sur /sys/class/drm/card%d-%s/edid, où %dreprésente l'index de périphérique DRM (probablement un index GPU) et %sest un ID de connecteur que vous voyez en xrandrsortie.

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

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

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

(vous devrez peut-être l'installer à l'aide de votre gestionnaire de paquets, sudo apt install edid-decodepour Ubuntu)


Comment le transmettez-vous edid-decode? Notez également qu'il existe également des sous-répertoires pour les moniteurs déconnectés.
WinEunuuchs2Unix

@ WinEunuuchs2Unix, j'ai ajouté un exemple.
utilisateur
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.