Bagaimana cara mendapatkan EDID untuk satu monitor?

20

Menunggu jawaban untuk xrandr mendeteksi amplifier sebagai monitor solusi yang mungkin adalah untuk daftar hitam perangkat dengan EDID tertentu . Sayangnya xrandr --verbosemencetak semuanya dalam format yang rumit untuk diurai dan tidak mendukung permintaan perangkat tunggal, dan get-edidoutput tampaknya tidak mudah untuk dipetakan ke xrandrID monitor (misalnya DVI-1).

Apakah ada cara untuk mendapatkan EDID yang mudah diurai untuk satu monitor?

l0b0
sumber
Saya akan pergi untuk xrandrparsing. Ini rumit, tetapi Anda hanya menulis skrip Anda sekali dan untuk semua, dan kemudian akan berfungsi di mana-mana.
Gilles 'SO- stop being evil'

Jawaban:

18

Lead # 1: monitor-edid

Saya tidak terlalu suka dengan EDID dan monitor tetapi saya menemukan alat ini, monitor-edidyang mungkin berguna bagi Anda di sini juga.

Maafkan saya jika itu tidak masuk akal, saya mencoba juga belajar lebih banyak tentang ruang ini, mengingat berbagai pertanyaan yang Anda ajukan pada topik.

$ 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

Ada alat lain yang saya jumpai ddccontrol, yang mungkin membantu dalam mendapatkan informasi yang Anda cari.

Lead # 3: / sys

Akhirnya ketika /sysmelihat-lihat, saya memperhatikan bahwa ada simpul daun yang menggantung dari berbagai antarmuka video.

$ 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

Namun di laptop Lenovo saya "file" ini kosong, mungkin mereka berbeda di sistem Anda. Saya menemukan utas forum ini yang menunjukkan sampel keluaran dari 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.       ..

Sumber: Ekstrak Nomor Seri Monitor / Tanggal Pembuatan Menggunakan EDID? .

Referensi

slm
sumber
@ l0b0 - apakah hanya 2? Tampak seperti lebih. Saya mungkin bingung kategori Q ini w / hanya Anda bertanya kepada mereka. Saya akan menghapus bit yang menyinggung 8-)
slm
# 3 / sys / ... berfungsi untuk saya, saya miliki Intel Corporation 3rd Gen Core processor Graphics Controller (rev 09)dengan i915driver, Kubuntu 15.04
user.dz
# 3 / sys / ... dan xrandr --verbosekeduanya mengembalikan data EDID untuk monitor HDMI saya, tetapi tidak juga mengembalikan data EDID untuk monitor DVI saya.
noobninja
Tautan edid monitor sudah mati dan archive.org tidak memiliki cadangan. Adakah yang tahu di mana saya bisa mendapatkan alat itu?
Peter W.
@PeterW. - ada alternatifnya, terima kasih telah memperhatikan ini. Juga alat ini di sebagian besar repo utama. Saya menemukannya di Fedora 24, misalnya dan juga CentOS. Jadi Anda dapat menginstal alat ini sebagai biner yang mungkin merupakan opsi yang jauh lebih mudah.
slm
11

Output xrandr --propsberisi string hex EDID untuk setiap tampilan yang terhubung dengan cara yang kurang bertele-tele. Berikut ini adalah skrip Python sederhana yang mengeksploitasi ini untuk mengambil EDID untuk monitor terhubung tertentu.

Saya belum menemukan alat CLI distro-paket lain yang bekerja untuk ekstraksi EDID pada sistem berbasis NVidia saya, tetapi sebagian besar alat untuk mengurai EDID biner tampaknya berfungsi dengan baik.

Matt Vollrath
sumber
8

Jika Anda menggunakan lengkungan x86 atau powerpc, Anda dapat menggunakannya read-edid. Pada debian ini tersedia di sini .

Penggunaannya sederhana (Anda harus root):

$ sudo get-edid > /tmp/edid

dan kemudian parsing struktur:

$ 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

Seringkali ini digabungkan menjadi:

$ sudo get-edid | parse-edid

Lihat juga di sini tentang cara meneruskan file edid khusus ini ke kartu grafis Anda menggunakan:

  • CustomEDID atau,
  • drm_kms_helper.edid_firmare
malat
sumber
3
Hanya untuk mengklarifikasi bahwa get-edid tidak bekerja untuk saya sampai saya melakukan "modprobe i2c-dev". Dan Modeline "parse-edid" yang diproduksi tidak diterima oleh Xorg. Jadi saya telah menggunakan ini di bagian perangkat: Opsi "CustomEDID" "CRT-0: /etc/X11/edid-StarLight-170418_gb-nv-gf-650-GTX-VGA.bin" Saya perlu memberikan EDID secara manual karena tidak dapat dengan benar membaca kabel VGA panjang 10m. Mengatur "DisplaySize" juga berguna bagi saya.
Delian Krustev
3

Versi terbaru dari alat yang disebut edid-decode dapat mem-parsing informasi EDID, dan itu dapat membaca dan menulis teks dan file-file EDID biner. Ini berfungsi dengan baik pada output dari xrandr --verbose. Misalnya, Ini dapat digunakan untuk menyimpan EDID dalam file biner:

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

Versi edid-decode yang datang dengan Fedora 27 (paket: xorg-x11-utils) terlalu lama dan tidak berfungsi dengan baik. Saya menggunakan versi terbaru .

Eric Sokolowsky
sumber
2

Dalam bentuk biner, EDID tersedia di /sys/class/drm/card%d-%s/edid, di mana %dmewakili indeks perangkat DRM (mungkin indeks GPU) dan %smerupakan ID konektor yang Anda lihat di xrandroutput.

Untuk daftar semua yang tersedia, jalankan ls -1 /sys/class/drm/*/edid

Jika driver GPU Anda tidak mendukung DRM, Anda tidak akan bisa mendapatkan EDID dengan cara ini.

Untuk melihat dalam bentuk hex, jalankan hexdumpdi atasnya.

Jika Anda ingin formulir yang dapat dibaca manusia, berikan ke edid-decode, misalnya:

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

(Anda mungkin perlu menginstalnya menggunakan manajer paket Anda, sudo apt install edid-decodeuntuk Ubuntu)

pengguna
sumber
Bagaimana Anda menyampaikannya edid-decode? Perhatikan juga ada sub-direktori untuk monitor yang terputus juga.
WinEunuuchs2Unix
@ WinEunuuchs2Unix, saya telah menambahkan contoh.
pengguna