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?
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
Il y avait un autre outil que j'ai rencontré appelé ddccontrol
, qui pourrait être utile pour obtenir les informations que vous recherchez.
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? .
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.
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:
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)
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 .