Как считать EDID монитора на Raspberry Pi

Заглавное изображение EDID

В этой статье мы расскажем, что именно нужно сделать, чтобы разобраться с расширенными идентификационными данными монитора (EDID) на Raspberry Pi.

Примечание: ранее функция чтения EDID была доступна в автономной версии PiDoctor. Эта версия была снята с производства, и функция чтения EDID не реализована в новой версии. PiCockpit PiDoctor Поэтому в этой статье я дам вам инструкции по чтению EDID.

PiDoctor включает вывод на монитор режимов

Прежде чем мы перейдем к тому, как извлечь EDID на вашем Raspberry Pi, обратите внимание, что новый PiCockpit's PiDoctor Приложение включает в себя множество выводов, которые можно ожидать при чтении EDID (поддерживаемые режимы разрешения, имя монитора, поддержка аудио, ...), вот два примера скриншотов:

Приложение PiCockpit PiDoctor, заменяющее некоторые функции EDID, включает вывод на режимы CEA и DMT

Считывание EDID под Raspbian / Raspberry Pi OS

Выполните следующую команду в командной строке:

tvservice -d /tmp/edid.dat

выполните эту команду, чтобы записать EDID во временный файл.

Это создаст файл edid.dat в каталоге /tmp.

Примечание: на Raspberry Pi 4 и 400 можно подключить два дисплея с помощью портов microHDMI. В этом случае необходимо указать, с какого дисплея считывать EDID:

tvservice --list

tvservice показывает подключенные дисплеи.
tvservice показывает подключенные дисплеи

Затем передайте ID устройства, интересующего вас дисплея, следующим образом:

tvservice --device 2 -d /tmp/edid.dat

Декодирование EDID с помощью программы edidparser

Вы можете запустить edidparser на этом файле (если его нет в вашей системе, пожалуйста, сначала установите его):

edidparser /tmp/edid.dat

Это даст вам много выходных данных, например, на моем мониторе это дает:

Enabling fuzzy format match
Parsing /tmp/edid.dat
HDMI:EDID version 1.3, 1 extensions, screen size 48x27 cm
HDMI:EDID features - videodef 0x80 standby suspend active off; colour encoding:RGB444|YCbCr422; sRGB is not default colourspace; preferred format is native; does not support GTF
HDMI:EDID found monitor range descriptor tag 0xfd
HDMI:EDID monitor range offsets: V min=0, V max=0, H min=0, H max=0
HDMI:EDID monitor range: vertical is 50-76 Hz, horizontal is 30-83 kHz, max pixel clock is 170 MHz
HDMI:EDID monitor range does not support GTF
HDMI:EDID found monitor name descriptor tag 0xfc
HDMI:EDID monitor name is VE228
HDMI:EDID found monitor S/N descriptor tag 0xff
HDMI:EDID found preferred CEA detail timing format: 1920x1080p @ 60 Hz (16)
HDMI:EDID established timing I/II bytes are BF EF 00
HDMI:EDID found DMT format: code 4, 640x480p @ 60 Hz in established timing I/II
HDMI:EDID found DMT format: code 5, 640x480p @ 72 Hz in established timing I/II
HDMI:EDID found DMT format: code 6, 640x480p @ 75 Hz in established timing I/II
HDMI:EDID found DMT format: code 8, 800x600p @ 56 Hz in established timing I/II
HDMI:EDID found DMT format: code 9, 800x600p @ 60 Hz in established timing I/II
HDMI:EDID found DMT format: code 10, 800x600p @ 72 Hz in established timing I/II
HDMI:EDID found DMT format: code 11, 800x600p @ 75 Hz in established timing I/II
HDMI:EDID found DMT format: code 16, 1024x768p @ 60 Hz in established timing I/II
HDMI:EDID found DMT format: code 17, 1024x768p @ 70 Hz in established timing I/II
HDMI:EDID found DMT format: code 18, 1024x768p @ 75 Hz in established timing I/II
HDMI:EDID found DMT format: code 36, 1280x1024p @ 75 Hz in established timing I/II
HDMI:EDID standard timings block x 8: 0x714F 8180 8140 9500 A940 B300 D1C0 0101
HDMI:EDID found DMT format: code 21, 1152x864p @ 75 Hz (4:3) in standard timing 0
HDMI:EDID found DMT format: code 35, 1280x1024p @ 60 Hz (5:4) in standard timing 1
HDMI:EDID found DMT format: code 32, 1280x960p @ 60 Hz (4:3) in standard timing 2
HDMI:EDID found DMT format: code 47, 1440x900p @ 60 Hz (16:10) in standard timing 3
HDMI:EDID found DMT format: code 51, 1600x1200p @ 60 Hz (4:3) in standard timing 4
HDMI:EDID found DMT format: code 58, 1680x1050p @ 60 Hz (16:10) in standard timing 5
HDMI:EDID found DMT format: code 82, 1920x1080p @ 60 Hz (16:9) in standard timing 6
HDMI:EDID parsing v3 CEA extension 0
HDMI:EDID monitor support - underscan IT formats:yes, basic audio:yes, yuv444:yes, yuv422:yes, #native DTD:1
HDMI:EDID failed to find a matching detail format for 1920x1080p hfp:48 hs:32 hbp:80 vfp:3 vs:5 vbp:22 pixel clock:138 MHz
HDMI:EDID calculated refresh rate is 60 Hz
HDMI:EDID guessing the format to be 1920x1080p @60 Hz
HDMI:EDID found CEA detail timing format: 1920x1080p @ 60 Hz (16)
HDMI:EDID found DMT detail timing format: 1366x768p @ 60 Hz (81)
HDMI:EDID found CEA detail timing format: 1280x720p @ 60 Hz (4)
HDMI:EDID found CEA detail timing format: 720x480p @ 60 Hz (2)
HDMI:EDID found CEA detail timing format: 1920x1080i @ 60 Hz (5)
HDMI:EDID found CEA format: code 16, 1920x1080p @ 60Hz (native)
HDMI:EDID found CEA format: code 5, 1920x1080i @ 60Hz
HDMI:EDID found CEA format: code 4, 1280x720p @ 60Hz
HDMI:EDID found CEA format: code 3, 720x480p @ 60Hz
HDMI:EDID found CEA format: code 2, 720x480p @ 60Hz
HDMI:EDID found CEA format: code 1, 640x480p @ 60Hz
HDMI:EDID found CEA format: code 17, 720x576p @ 50Hz
HDMI:EDID found CEA format: code 18, 720x576p @ 50Hz
HDMI:EDID found CEA format: code 19, 1280x720p @ 50Hz
HDMI:EDID found CEA format: code 20, 1920x1080i @ 50Hz
HDMI:EDID found CEA format: code 31, 1920x1080p @ 50Hz
HDMI:EDID found audio format 2 channels PCM, sample rate: 32|44|48 kHz, sample size: 16|20|24 bits
HDMI:EDID found HDMI VSDB length 5
HDMI:EDID HDMI VSDB has physical address 1.0.0.0
HDMI:EDID HDMI VSDB has no extension fields
HDMI:EDID filtering formats with pixel clock unlimited MHz or h. blanking unlimited
HDMI:EDID best score mode initialised to CEA (1) 640x480p @ 60 Hz with pixel clock 25 MHz (score 0)
HDMI:EDID best score mode is now CEA (1) 640x480p @ 60 Hz with pixel clock 25 MHz (score 61864)
HDMI:EDID best score mode is now CEA (2) 720x480p @ 60 Hz with pixel clock 27 MHz (score 3066472)
HDMI:EDID CEA mode (3) 720x480p @ 60 Hz with pixel clock 27 MHz has a score of 66472
HDMI:EDID best score mode is now CEA (4) 1280x720p @ 60 Hz with pixel clock 74 MHz (score 3635592)
HDMI:EDID DMT mode (4) 640x480p @ 60 Hz with pixel clock 25 MHz has a score of 18432
HDMI:EDID CEA mode (5) 1920x1080i @ 60 Hz with pixel clock 74 MHz has a score of 2773832
HDMI:EDID DMT mode (5) 640x480p @ 72 Hz with pixel clock 31 MHz has a score of 5529
HDMI:EDID DMT mode (6) 640x480p @ 75 Hz with pixel clock 31 MHz has a score of 5760
HDMI:EDID DMT mode (8) 800x600p @ 56 Hz with pixel clock 36 MHz has a score of 26880
HDMI:EDID DMT mode (9) 800x600p @ 60 Hz with pixel clock 40 MHz has a score of 28800
HDMI:EDID DMT mode (10) 800x600p @ 72 Hz with pixel clock 50 MHz has a score of 8640
HDMI:EDID DMT mode (11) 800x600p @ 75 Hz with pixel clock 49 MHz has a score of 9000
HDMI:EDID best score mode is now CEA (16) 1920x1080p @ 60 Hz with pixel clock 148 MHz (score 5398248)
HDMI:EDID DMT mode (16) 1024x768p @ 60 Hz with pixel clock 65 MHz has a score of 47185
HDMI:EDID CEA mode (17) 720x576p @ 50 Hz with pixel clock 27 MHz has a score of 66472
HDMI:EDID DMT mode (17) 1024x768p @ 70 Hz with pixel clock 75 MHz has a score of 13762
HDMI:EDID CEA mode (18) 720x576p @ 50 Hz with pixel clock 27 MHz has a score of 66472
HDMI:EDID DMT mode (18) 1024x768p @ 75 Hz with pixel clock 78 MHz has a score of 14745
HDMI:EDID CEA mode (19) 1280x720p @ 50 Hz with pixel clock 74 MHz has a score of 117160
HDMI:EDID CEA mode (20) 1920x1080i @ 50 Hz with pixel clock 74 MHz has a score of 128680
HDMI:EDID DMT mode (21) 1152x864p @ 75 Hz with pixel clock 108 MHz has a score of 43662
HDMI:EDID CEA mode (31) 1920x1080p @ 50 Hz with pixel clock 148 MHz has a score of 232360
HDMI:EDID DMT mode (32) 1280x960p @ 60 Hz with pixel clock 108 MHz has a score of 98728
HDMI:EDID DMT mode (35) 1280x1024p @ 60 Hz with pixel clock 108 MHz has a score of 103643
HDMI:EDID DMT mode (36) 1280x1024p @ 75 Hz with pixel clock 135 MHz has a score of 24576
HDMI:EDID DMT mode (47) 1440x900p @ 60 Hz with pixel clock 106 MHz has a score of 102760
HDMI:EDID DMT mode (51) 1600x1200p @ 60 Hz with pixel clock 162 MHz has a score of 140200
HDMI:EDID DMT mode (58) 1680x1050p @ 60 Hz with pixel clock 146 MHz has a score of 130840
HDMI:EDID DMT mode (81) 1366x768p @ 60 Hz with pixel clock 85 MHz has a score of 4062945
HDMI:EDID DMT mode (82) 1920x1080p @ 60 Hz with pixel clock 148 MHz has a score of 149416
HDMI0:EDID preferred mode remained as CEA (16) 1920x1080p @ 60 Hz with pixel clock 148 MHz
HDMI:EDID has HDMI support and audio support
edidparser exited with code 0

Онлайн инструмент для декодирования

Вы также можете загрузить этот файл в онлайновый инструмент декодирования, например edid.tv

Примечание: в моем тесте edid.tv жаловался на неправильную контрольную сумму для одного из моих EDID - в настоящее время я не знаю обходного пути решения этой проблемы.

EDID.tv предоставляет богатый обзор информации EDID
EDID.tv

Поиск и устранение неисправностей tvservice / дамп EDID

Ничего не написано

Когда я бегу

tvservice -device 2 -d tmp/edid.dat

Я получаю "Ничего не написано!".

Итак, попробуйте проверить следующее:

  • подключен ли ваш монитор к порту HDMI (нет, серьезно).
  • правильно ли указан идентификатор устройства? пожалуйста, используйте tvservice -list чтобы получить список идентификаторов, не просто скопируйте и вставьте мой пример с идентификатором устройства 2
  • попробуйте tvservice без -device 2
  • попробуйте перезагрузить Raspberry Pi (в этом конкретном случае возникают проблемы при горячем подключении мониторов, AFAIK) и снова запустите команды.
  • попробуйте другие параметры tvservice, чтобы отладить, возможен ли вывод данных с этого конкретного монитора (вот документация по tvservice)
  • некоторые телевизоры/мониторы неисправны и не могут предоставить EDID - попробуйте другой монитор, чтобы увидеть, есть ли разница.

Заключение

И вот теперь, когда данные идентификации расширенного дисплея вашего монитора наконец-то обрели смысл, вы можете приступить к реализации своего следующего проекта Raspberry Pi!

Ищете идеи? Посмотрите серия проектов "Парагон.

2 комментариев

  1. Yoann Январь 26, 2022 в 5:32 пп

    Bonjour, j'obtiens cette erreur :
    tvservice не поддерживается при использовании драйвера vc4-kms-v3d.
    Аналогичные возможности доступны в стандартных инструментах linux
    например, modetest из libdrm-tests.

    Есть ли альтернатива?

    Мерси,

Комментировать