J'ai extrait la version abrégée du moniteur actuel connecté à l'ordinateur.
Voici un exemple: vendor "VSC", prod id "18500"
Dans les préférences du moniteur d'Ubuntu, il est identifié comme Viewsonic Corporation 16"
.
Comment puis-je extraire cette forme lisible par l'homme? ... et aussi, comment puis-je déterminer si un moniteur est un CRT
ou un LCD
? (c'est en fait ce qui m'a lancé dans cette quête)
Le format EDID se trouve sur Wikipedia: Données d'identification étendues de l'affichage
Voici le code utilisé pour obtenir l'EDID Vendor
etProduct id
edid=$(xrandr -q --verbose |
sed -n '/^[[:space:]]\+00ffffffffffff00/,/[^a-fA-F0-9[:space:]]/{
/[^a-fA-F0-9[:space:]]/d
s/[[:space:]]\+//g; p}')
nibble=({0..1}{0..1}{0..1}{0..1})
vend=$(for i in {16..19} ;do
printf "%s" ${nibble[$((16#${edid:$i:1}))]}
done)
vend="$(for i in 1 6 11 ;do
printf \\x$(printf %x $((2#${vend:$i:5} +64)))
done)"
prod=$((16#${edid:22:2}${edid:20:2}))
printf "monitor: vendor \"%s\", prod id \"%s\"\n" "${vend}" "$prod"
Edit: Voici les principales lignes de xrandr -q verbose
sortie ... jusqu'à la fin du vidage hexadécimal EDID
Screen 0: minimum 320 x 200, current 1280 x 960, maximum 8192 x 8192
VGA1 connected 1280x960+0+0 (0x47) normal (normal left inverted right x axis y axis) 320mm x 240mm
Identifier: 0x41
Timestamp: 26386
Subpixel: unknown
Clones:
CRTC: 0
CRTCs: 0 1
Transform: 1.000000 0.000000 0.000000
0.000000 1.000000 0.000000
0.000000 0.000000 1.000000
filter:
EDID:
00ffffffffffff005a63444809000000
15090101682018b1e84f22a157479925
0f484ffffe00315945596159714f8140
818001010101000000ff004848393231
30303030390a2020000000fd0032781e
46ff000a202020202020000000fc0056
696577536f6e696320453737000000fc
00312d320a2020202020202020200084
1280x1024 (0x46) 108.0MHz +HSync +VSync
h: width 1280 start 1328 end 1440 total 1688 skew 0 clock 64.0KHz
v: height 1024 start 1025 end 1028 total 1066 clock 60.0Hz
1280x960 (0x47) ....
...
... etc
Réponses:
Cette forme lisible par l'homme ( "Viewsonic Corporation" ) ne provient pas (directement) de votre EDID:
Ubuntu utilise des bibliothèques de gnomes en dessous.
libgnome-desktop
décode l'edid et - via pnp-ids - convertit l'ID de fournisseur à trois lettres ( "VSC" dans votre cas particulier) en un joli nom pour l'affichage.gnome-pnp-ids.c , ligne 51:
Sur mon système
Retour:
Cela mis à part, des informations supplémentaires peuvent être extraites de l'EDID, à savoir des blocs descripteurs. Du même lien wikipedia:
Dans votre EDID, vous avez
0xFF
(numéro de série) dans le descripteur 1 (octets 54-71):et vous avez
0xFC
(nom du moniteur) dans le descripteur 3 (octets 90-107) et 4 (octets 108-125):il ne s'agit donc que d'en extraire les informations, par exemple le descripteur 3:
56 69 65 77 53 6f 6e 69 63 20 45 37 37
>> Viewsonic E77Il existe des outils Linux qui analysent les EDID ... que j'utilise
monitor-edid
. Voici la sortie au format dumper Perl sur ma machine:Enfin, je ne sais pas comment déterminer (sous Linux) si un moniteur est LCD ou CRT. Je ne connais aucune bibliothèque qui implémente une telle fonction (comme celle-ci de MS).
la source
L'outil suivant peut être utile pour décoder les informations edid: http://cgit.freedesktop.org/xorg/app/edid-decode
la source