Як отримати EDID для одного монітора?


20

В очікуванні відповіді на xrandr виявляє підсилювач, оскільки монітор можливого вирішення - це пристрої з чорного списку з конкретними EDID . На жаль, xrandr --verboseдрукується все у форматі, який є громіздким для розбору та не підтримує запит на окремі пристрої, а get-edidвихідний файл, схоже, непростий для зіставлення xrandrідентифікаторів монітора (наприклад DVI-1).

Чи є спосіб отримати легко розбірливий EDID для одного монітора?


Я б пішов на xrandrрозбір. Це громіздко, але ви просто пишете свій сценарій раз і назавжди, і тоді він буде працювати всюди.
Жил "ТАК - перестань бути злим"

Відповіді:


18

Ведучий №1: монітор-Едід

Я не на те, що стосується EDID та моніторів, але я знайшов цей інструмент, monitor-edidякий може бути корисним і вам тут.

Пробачте, якщо це не в основі, я намагаюся також дізнатися більше про цей простір, враховуючи різноманітність питань, які ви задаєте по темі.

$ 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

Ведучий №2: ddcontrol

Мені зателефонував ще один інструмент ddccontrol, який може бути корисним для отримання інформації, яку ви шукаєте.

Ведучий №3: / сис

Нарешті, переглядаючи, /sysя помітив, що з різних відеоінтерфейсів звисають вузли листя.

$ 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

Однак на моєму ноутбуці Lenovo ці "файли" були порожніми, можливо, вони відрізняються у вашій системі. Я знайшов цю тему на форумі, яка показала вибірковий вихід із 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.       ..

Джерело: Серійний номер видобутку монітора / Дата виготовлення за допомогою EDID? .

Список літератури


@ l0b0 - це було лише 2? Здавалося, більше. Можливо, я плутаю категорію цього Q w / просто ви їх запитуєте. Я
видалю кривдний

# 3 / sys / ... працює для мене, у мене Intel Corporation 3rd Gen Core processor Graphics Controller (rev 09)з i915драйвером, Kubuntu 15.04
user.dz

# 3 / sys / ... і xrandr --verboseобидва повертають дані EDID для мого монітора HDMI, але не повертають дані EDID для мого DVI-монітора.
noobninja

Посилання на монітор-Edid є мертвою, а archive.org не має резервних копій. Хтось знає, де я можу взяти цей інструмент?
Пітер В.

@PeterW. - Є альтернатива, дякую за те, що ви звернули на це увагу. Також інструмент знаходиться в більшості основних репостів. Я знайшов це, наприклад, у Fedora 24, а також у CentOS. Таким чином, ви можете встановити інструмент як двійковий, що, мабуть, набагато простіший варіант.
slm

11

Вихід xrandr --propsмістить шістнадцяткові рядки EDID для кожного підключеного дисплея менш докладно. Ось простий скрипт Python, який використовує це, щоб захопити EDID для конкретного підключеного монітора.

Я не знайшов жодних інших пакетних інструментів CLI, які працюють для вилучення EDID в моїй системі, що базується на NVidia, але, здається, більшість інструментів для розбору двійкового EDID добре працюють.


8

Якщо ви використовуєте аркуш x86 або powerpc, ви можете використовувати read-edid. На debian це доступно тут .

Використання просто (потрібно мати корінь):

$ sudo get-edid > /tmp/edid

а потім проаналізуйте структуру:

$ 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

Часто це поєднується з:

$ sudo get-edid | parse-edid

Дивіться також тут, як передати цей користувальницький edid-файл на вашу графічну карту за допомогою будь-якого:

  • CustomEDID або,
  • drm_kms_helper.edid_firmare

3
Просто для уточнення, що get-edid не працював для мене, поки я не зробив "modprobe i2c-dev". І Xorg не прийняв "розбір", який випускав Modeline. Тому я використав це в розділі пристрою: Варіант "CustomEDID" "CRT-0: /etc/X11/edid-StarLight-170418_gb-nv-gf-650-GTX-VGA.bin" Мені потрібно вручну надати EDID оскільки його неможливо правильно прочитати через кабель VGA довжиною 10 м. Налаштування "DisplaySize" також було корисним для мене.
Делян Кръстев

3

Недавня версія інструменту під назвою edid-декодування може аналізувати інформацію EDID, і вона може читати та записувати текстові та двійкові файли EDID. Він добре працює на виході xrandr --verbose. Наприклад, його можна використовувати для збереження EDID у двійковому файлі:

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

Версія edid-декодування, що постачається з Fedora 27 (пакет: xorg-x11-utils), занадто стара і не працює ідеально. Я використав останню версію .


2

У двійковій формі EDID доступний за адресою /sys/class/drm/card%d-%s/edid, де %dпредставляє індекс пристрою DRM (можливо, індекс GPU) і %sє ідентифікатором з'єднувача, який ви бачите у xrandrвисновку.

Щоб переглянути список усіх доступних, запустіть ls -1 /sys/class/drm/*/edid

Якщо ваш драйвер GPU не підтримує DRM, ви не зможете отримати EDID таким чином.

Щоб переглянути в шістнадцятковій формі, запустіть hexdumpїї.

Якщо ви хочете, щоб людина читала форму, передайте її edid-decode, наприклад:

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

(можливо, вам доведеться встановити його за допомогою менеджера пакунків, sudo apt install edid-decodeдля Ubuntu)


Як ви передаєте це edid-decode? Також зауважте, що є і підкаталоги для відключених моніторів.
WinEunuuchs2Unix

@ WinEunuuchs2Unix, я додав приклад.
користувач
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.