Tek bir monitör için EDID nasıl alınır?


20

İzleme için xrandr'a bir yanıt beklemek olası bir çözüm, belirli EDID'lere sahip cihazları kara listeye almaktır . Maalesef xrandr --verboseher şeyi ayrıştırmak için hantal ve tek bir aygıtın sorgulanmasını desteklemeyen bir biçimde yazdırıyor ve get-edidçıktısının xrandrmonitör kimlikleriyle eşlenmesi kolay görünmüyor (örneğin DVI-1).

Tek bir monitör için kolayca ayrıştırılabilir bir EDID almanın bir yolu var mı ?


Ayrışmaya giderdim xrandr. Bu hantal, ancak senaryonuzu bir kez ve herkes için yazıyorsunuz ve sonra her yerde çalışacak.
Gilles 'SO- kötü olmayı bırak'

Yanıtlar:


18

Potansiyel Müşteri # 1: monitör düzenlenmiş

Ben EDID ve monitörlerde değilim ama monitor-edidburada da sizin için yararlı olabilecek bu aracı buldum .

Bu konu hakkında sorduğunuz çeşitli sorular göz önüne alındığında, bu alan hakkında daha fazla bilgi edinmeye çalışıyorum.

$ 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

Potansiyel Müşteri # 2: ddcontrol

Karşılaştığım başka bir araç daha vardı ddccontrol, bu da peşinde olduğunuz bilgileri almanıza yardımcı olabilir.

Potansiyel Müşteri # 3: / sys

Sonunda alay /sysiçinde çeşitli video arayüzlerinden asılı yaprak düğümleri olduğunu fark ettim.

$ 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

Ancak Lenovo dizüstü bilgisayarımda bu "dosyalar" boştu, belki de sisteminizde farklıdırlar. VGA EDID'den örnek çıktı gösteren bu forum iş parçacığını buldum.

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

Kaynak: Monitör Seri Numarasını / Üretim Tarihini EDID Kullanarak Ayıkla? .

Referanslar


@ l0b0 - sadece 2 oldu mu? Daha fazlası gibi görünüyordu. Bu Q'nun kategorisini sadece siz sormakla karıştırıyorum. Sorunlu biti 8-) kaldıracağım
slm

3. / sys / ... benim için çalışmalar, ben Intel Corporation 3rd Gen Core processor Graphics Controller (rev 09)ile i915sürücü, Kubuntu 15.04
user.dz

# 3 / sys / ... ve xrandr --verboseher ikisi de HDMI monitörüm için EDID verilerini döndürür, ancak DVI monitörüm için EDID verilerini döndürmez.
noobninja

Monitor-edid bağlantısı öldü ve archive.org'un yedeği yok. Bu aracı nereden bulabileceğimi bilen var mı?
Peter W.

@PeterW. - alternatif var, bunu dikkatime sunduğunuz için teşekkürler. Ayrıca araç büyük depoların çoğunda. Örneğin Fedora 24'te ve ayrıca CentOS'ta buldum. Böylece aracı muhtemelen çok daha kolay bir seçenek olan bir ikili olarak yükleyebilirsiniz.
slm

11

Çıkışı, xrandr --propsbağlı her ekran için daha az ayrıntılı bir şekilde onaltılık EDID dizeleri içerir. İşte belirli bir bağlı monitör için bir EDID almak için bundan yararlanan basit bir Python betiği .

NVidia tabanlı sistemimde EDID ayıklama için çalışan başka bir paketlenmiş CLI aracı bulamadım, ancak ikili bir EDID'yi ayrıştırmak için çoğu araç iyi çalışıyor gibi görünüyor.


8

Bir x86 veya powerpc arkı kullanıyorsanız, kullanabilirsiniz read-edid. Debian'da buraya buradan ulaşabilirsiniz .

Kullanımı basittir (kök olmanız gerekir):

$ sudo get-edid > /tmp/edid

ve sonra yapıyı ayrıştırın:

$ 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

Genellikle bu birleştirilir:

$ sudo get-edid | parse-edid

Ayrıca bkz burada grafik kartı kullanarak bu özel EDID dosyasını geçmesine nasıl:

  • CustomEDID veya,
  • drm_kms_helper.edid_firmare

3
Ben sadece "modprobe i2c-dev" yapana kadar get-edid benim için işe yaramadı açıklığa kavuşturmak için. Ve "ayrıştırılmış" üretilen Modeline Xorg tarafından kabul edilmedi. Bu yüzden bunu cihaz bölümünde kullandım: Option "CustomEDID" "CRT-0: /etc/X11/edid-StarLight-170418_gb-nv-gf-650-GTX-VGA.bin" EDID'yi manuel olarak sağlamam gerekiyor çünkü 10m uzunluğundaki VGA kablosunun üzerinden doğru okunamıyor. "DisplaySize" ayarını yapmak benim için de yararlı oldu.
Delian Krustev

3

Edid-decode adlı bir aracın son sürümü EDID bilgilerini ayrıştırabilir ve metin ve ikili EDID dosyalarını okuyabilir ve yazabilir. Çıktı üzerinde iyi çalışır xrandr --verbose. Örneğin, EDID'yi bir ikili dosyaya kaydetmek için kullanılabilir:

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

Fedora 27 ile birlikte gelen edid-decode sürümü (paket: xorg-x11-utils) çok eski ve mükemmel çalışmıyor. En son sürümü kullandım .


2

İkili biçimde EDID, adresinde bulunabilir /sys/class/drm/card%d-%s/edid; burada %dDRM aygıt dizinini (muhtemelen bir GPU dizini) temsil eder ve çıktıda %sgördüğünüz bir bağlayıcı kimliğidir xrandr.

Mevcut olanların tümünü listelemek için çalıştırın ls -1 /sys/class/drm/*/edid

GPU sürücünüz DRM'yi desteklemiyorsa, EDID'yi bu şekilde alamazsınız.

Onaltılık biçimde görüntülemek için hexdumpüzerinde çalıştırın .

İnsan tarafından okunabilir bir form istiyorsanız, şu forma iletin edid-decode, örneğin:

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

( sudo apt install edid-decodeUbuntu için paket yöneticinizi kullanarak yüklemeniz gerekebilir )


Nasıl geçersin edid-decode? Bağlantısı kesilmiş monitörler için de alt dizinler olduğunu unutmayın.
WinEunuuchs2Unix

@ WinEunuuchs2Unix, bir örnek ekledim.
kullanıcı
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.