Saya telah mengekstraksi versi singkat dari monitor saat ini yang terpasang pada komputer.
Berikut ini sebuah contoh: vendor "VSC", prod id "18500"
Dalam Preferensi Monitor Ubuntu, ia diidentifikasi sebagai Viewsonic Corporation 16"
.
Bagaimana saya bisa mengekstrak formulir yang dapat dibaca manusia ini? ... dan juga, bagaimana saya bisa menentukan apakah monitor adalah CRT
atau tidak LCD
? (Ini sebenarnya yang membuat saya memulai pencarian ini)
Format EDID dapat ditemukan di Wikipedia: Data identifikasi tampilan diperluas
Berikut adalah kode yang digunakan untuk mendapatkan EDID Vendor
danProduct 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"
Sunting: Berikut adalah baris terkemuka dari xrandr -q verbose
outpt ... hingga akhir dump hex 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
Jawaban:
Formulir yang dapat dibaca manusia ( "Viewsonic Corporation" ) tidak datang (langsung) dari EDID Anda:
Ubuntu menggunakan pustaka gnome di bawahnya.
libgnome-desktop
menerjemahkan edid dan - melalui pnp-id - mengubah ID vendor tiga huruf ( "VSC" dalam kasus khusus Anda) menjadi nama yang cantik untuk tampilan.gnome-pnp-ids.c , baris 51:
Di sistem saya
pengembalian:
Selain itu, informasi tambahan dapat diekstraksi dari EDID, yaitu dari blok deskriptor. Dari tautan wikipedia yang sama:
Di EDID Anda, Anda memiliki
0xFF
(nomor seri) dalam deskripsi 1 (byte 54-71):dan Anda memiliki
0xFC
(nama monitor) di deskriptor 3 (byte 90–107) dan 4 (byte 108–125):jadi itu hanya masalah mengekstraksi informasi dari sana, misalnya deskriptor 3:
56 69 65 77 53 6f 6e 69 63 20 45 37 37
>> Viewsonic E77Ada beberapa alat linux di luar sana yang mengurai EDID ... saya gunakan
monitor-edid
. Berikut ini adalah output dalam format dumper Perl di mesin saya:Akhirnya, saya tidak tahu cara menentukan (di linux) apakah monitor adalah LCD atau CRT. Saya tidak tahu ada perpustakaan yang mengimplementasikan fungsi seperti itu (seperti ini dari MS).
sumber
Alat berikut ini dapat membantu untuk memecahkan kode info edid: http://cgit.freedesktop.org/xorg/app/edid-decode
sumber