Перейти к содержимому

Edid что это в телевизоре

  • автор:

Патчим EDID телевизора из-под Linux

Эта проблема меня не сильно-то и беспокоила, т.к. я не часто им пользовался, да и VGA-порт работал, хоть и с максимальным разрешением 1360×768. Однако сегодня, когда я решил посмотреть фильм, качество вывода через VGA было невероятно хреновым, и я решил с этим покончить.

Анализируем EDID

Для тех, кто не знает, EDID — небольшое количество данных, содержащих в себе информацию о возможностях монитора, в основном разрешения и тайминги, которые он поддерживает. Сообщение об ошибке интересно тем, что в нем говорится об EDID 2.0, которого (почти) никогда не существовало. Вот что нам говорит Wikipedia:

Структура EDID имеет версии от v1.0 до v1.4 размером в 128 байт, каждая последующая версия обратно совместима с предыдущей. Структура EDID v2.0 была размером 256 байт, однако позже была объявлена устаревшей и на замену ей пришла v1.3.

Похоже, EDID 2.0 был объявлен устаревшим где-то в 2000. Довольно забавно, что ТВ 2008 года использовал именно эту версию.

  1. Пропатчить ядро и убрать проверку версии. Это некрасиво, да и придется, как минимум, drm-модуль пересобирать с каждым обновлением ядра.
  2. Пропатчить EDID и заставить либо ядро, либо ТВ использовать его.
# get-edid > /tmp/edid.bin This is read-edid version 3.0.1. Prepare for some fun. Attempting to use i2c interface No EDID on bus 0 No EDID on bus 1 No EDID on bus 2 No EDID on bus 4 No EDID on bus 5 No EDID on bus 7 2 potential busses found: 3 6 Will scan through until the first EDID is found. Pass a bus number as an option to this program to go only for that one. 256-byte EDID successfully retrieved from i2c bus 3 Looks like i2c was successful. Have a good day.

Получили EDID из i2c bus 3. Теперь посмотрим, что же там.

# parse-edid < /tmp/edid.bin Checksum Correct Section "Monitor" Identifier "32LG5000" ModelName "32LG5000" VendorName "GSM" # Monitor Manufactured week 9 of 2008 # EDID version 2.0 # Digital Display DisplaySize 700 390 Gamma 2.20 Option "DPMS" "true" Horizsync 28-67 VertRefresh 50-75 # Maximum pixel clock is 150MHz #Not giving standard mode: 640x480, 60Hz #Not giving standard mode: 800x600, 60Hz #Not giving standard mode: 1024x768, 60Hz #Not giving standard mode: 1920x1080, 60Hz #Extension block found. Parsing. Modeline "Mode 16" +hsync +vsync Modeline "Mode 0" -hsync -vsync Modeline "Mode 1" -hsync +vsync Modeline "Mode 2" 27.027 720 736 798 858 480 489 495 525 -hsync -vsync Modeline "Mode 3" 27.000 720 732 796 864 576 581 586 625 -hsync -vsync Modeline "Mode 4" 25.200 640 656 752 800 480 490 492 525 -hsync -vsync Modeline "Mode 5" 27.027 720 736 798 858 480 489 495 525 -hsync -vsync Modeline "Mode 6" 27.000 720 732 796 864 576 581 586 625 -hsync -vsync Modeline "Mode 7" 74.250 1280 1720 1760 1980 720 725 730 750 +hsync +vsync Modeline "Mode 8" 74.250 1280 1390 1420 1650 720 725 730 750 +hsync +vsync Modeline "Mode 9" 74.250 1920 2448 2492 2640 1080 1082 1089 1125 +hsync +vsync interlace Modeline "Mode 10" 74.250 1920 2008 2052 2200 1080 1082 1087 1125 +hsync +vsync interlace Modeline "Mode 11" 74.250 1920 2448 2492 2640 1080 1084 1089 1125 +hsync +vsync Modeline "Mode 12" 148.500 1920 2448 2492 2640 1080 1084 1089 1125 +hsync +vsync Modeline "Mode 13" 74.250 1920 2558 2602 2750 1080 1084 1089 1125 +hsync +vsync Modeline "Mode 14" 74.250 1920 2008 2052 2200 1080 1084 1089 1125 +hsync +vsync Modeline "Mode 15" 148.500 1920 2008 2052 2200 1080 1084 1089 1125 +hsync +vsync Modeline "Mode 17" +hsync +vsync Modeline "Mode 18" +hsync +vsync interlace Modeline "Mode 19" -hsync -vsync Option "PreferredMode" "Mode 16" EndSection

Убеждаемся, что это правильный EDID, по идентификатору модели. Видим EDID version 2.0, которую сообщает parse-edid, на что собственно ядро и ругается. Также можем видеть, что parse-edid нашел блок с таймингами и разрешениями, которые ТВ поддерживает. Теперь взглянем на RAW-данные:

# hd /tmp/edid.bin 00000000 00 ff ff ff ff ff ff 00 1e 6d f0 75 01 01 01 01 |. m.u. | 00000010 09 12 02 00 80 46 27 78 ea d9 b0 a3 57 49 9c 25 |. F'x. WI.%| 00000020 11 49 4b a5 6e 00 31 40 45 40 61 40 d1 c0 01 01 |.IK.n.1@E@a@. | 00000030 01 01 01 01 01 01 26 36 80 a0 70 38 1f 40 50 20 |. &6..p8.@P | 00000040 85 00 bc 86 21 00 00 18 1b 21 50 a0 51 00 1e 30 |. P.Q..0| 00000050 48 88 35 00 bc 86 21 00 00 1c 00 00 00 fc 00 33 |H.5. 3| 00000060 32 4c 47 35 30 30 30 0a 20 20 20 20 00 00 00 fd |2LG5000. . | 00000070 00 32 4b 1c 43 0f 00 0a 20 20 20 20 20 20 01 f9 |.2K.C. ..| 00000080 02 03 21 f1 4e 02 11 01 03 12 13 04 14 05 21 1f |. N. | 00000090 20 22 10 23 09 07 07 83 01 00 00 65 03 0c 00 30 | ".#. e. 0| 000000a0 00 01 1d 00 bc 52 d0 1e 20 b8 28 55 40 c4 8e 21 |. R.. .(U@. | 000000b0 00 00 1e 01 1d 00 72 51 d0 1e 20 6e 28 55 00 c4 |. rQ.. n(U..| 000000c0 8e 21 00 00 1e 01 1d 80 d0 72 1c 16 20 10 2c 25 |. r.. .,%| 000000d0 80 c4 8e 21 00 00 9e 8c 0a d0 90 20 40 31 20 0c |. @1 .| 000000e0 40 55 00 c4 8e 21 00 00 18 4e 1f 00 80 51 00 1e |@U. N. Q..| 000000f0 30 40 80 37 00 bc 88 21 00 00 18 00 00 00 00 ac |0@.7. | 00000100

EDID состоит из 2 секций, каждая размером по 128 байт (мы же помним, что это EDID 1.3, некорректно названый 2.0).
Первая секция основная, а вторая — дополнительная, EIA/CEA-861 extension block, которая содержит информацию о разрешениях и таймингах. Используя статью в Wikipedia понимаем, что байты по смещению 0x12 и 0x13 содержат версию EDID (0x02 и 0x00 в нашем случае), а смещение 0xf7f содержит контрольную сумму (0xf9).

Патчим EDID наживую

По идее, если мы заменим значения по смещению 0x12 и 0x13 на 0x01 и 0x03 соответственно и подправим контрольную сумму, мы получим правильный EDID. Это легко можно сделать в HEX-редакторе; контрольную сумму установим в 0x7f (сумма всех 128 байт по модулю 256 должна быть равна нулю).
Попробуем распарсить измененный EDID:

$ diff -u <(parse-edid 

Теперь, когда у нас есть правильный EDID, нам нужно как-то попробовать записать его в телевизор (да и, похоже, есть люди, у которых это получалось). В Debian есть пакет i2c-tools, в котором есть утилиты i2cget для чтения и i2cset для записи в I²C-устройство. Вспомним, что get-edid читал из шины 3, а EDID находится по адресу 0x50, так что давайте попробуем прочитать наши байты напрямую:

# for byte in 0x12 0x13 0x7f; do i2cget -y 3 0x50 $byte; done 0x02 0x00 0xf9

Получилось! Невзирая на риск брикнуть (и так бесполезный) HDMI-порт, я решил перезаписать байты напрямую.

Внимание! Повторяйте это действие на свой страх и риск и только если понимаете возможные последствия. Вас предупреждали.

# i2cset -y 3 0x50 0x12 0x01 # i2cset -y 3 0x50 0x13 0x03 # i2cset -y 3 0x50 0x7f 0xf7

Никаких ошибок нет. Проверим, получилось ли:

$ xrandr -q Screen 0: minimum 320 x 200, current 1920 x 1080, maximum 8192 x 8192 eDP1 connected 1920x1080+0+0 (normal left inverted right x axis y axis) 294mm x 165mm 1920x1080 60.0*+ 59.9 40.0 1680x1050 60.0 59.9 1600x1024 60.2 1400x1050 60.0 1280x1024 60.0 1440x900 59.9 1280x960 60.0 1360x768 59.8 60.0 1152x864 60.0 1024x768 60.0 800x600 60.3 56.2 640x480 59.9 VGA1 disconnected (normal left inverted right x axis y axis) HDMI1 connected 1920x1080+0+0 (normal left inverted right x axis y axis) 700mm x 390mm 1920x1080 60.0*+ 60.0 50.0 59.9 30.0 25.0 24.0 30.0 24.0 1920x1080i 60.1 50.0 60.0 1360x768 59.8 1280x768 60.4 1280x720 60.0 50.0 59.9 1024x768 75.1 70.1 60.0 832x624 74.6 800x600 75.0 60.3 720x576 50.0 720x480 60.0 59.9 640x480 75.0 60.0 59.9 59.9 720x400 70.1 DP1 disconnected (normal left inverted right x axis y axis)

Ага! У меня получилось выставить разрешение 1080p через xrandr. Похоже, изменение постоянное, так что не придется каждый раз перезаписывать байты при каждом выключении ТВ.

От переводчика: на этом ТВ матрица с разрешением 1366×768, поэтому не совсем понятно, откуда такое желание выставить 1920×1080, оно все равно через скейлер пойдет.

EDID

Extended Display Identification Data (EDID) — стандарт формата данных VESA, который содержит базовую информацию о мониторе и его возможностях, включая информацию о производителе, максимальном размере изображения, цветовых характеристиках, заводских предустановленных таймингах, границах частотного диапазона, а также строках, содержащих название монитора, его размер и серийный номер.

Все мониторы, аналоговые или цифровые, должны поддерживать EDID. Эти данные хранятся в памяти EEPROM монитора в формате, заданном стандартом VESA.

Формат EDID

Данные EDID форматируются в виде одного или нескольких 128 блоков.

EDID версии 1,0 – 1,2 состоит из одного блока данных в соответствии со спецификацией VESA. С EDID версии 1,3 или расширенным EDID (E-EDID) изготовители могут указать один или несколько блоков расширения в дополнение к основному блоку.

Каждый блок пронумерован, начиная с 0 для начального блока. Чтобы обновить сведения EDID, производители мониторов выпускают для Windows INF-файл. INF файл изготовителя указывает номер обновляемого блока и предоставляет 128 байт данных EDID для замены исходного блока. Драйвер монитора Windows получает обновленные данные для исправленных блоков из реестра и использует данные EEPROM для оставшихся блоков.

Бывают случаи, когда монитор, или внешний телевизор не выдают, или дают неправильный EDID.

В данной статье рассматривается вариант передачи X-серверу информации об правильном EDID монитора. Статья основана на статье Подстановка файла прошивки вместо вшитого EDID монитора и адаптирована к особенности ALT Linux.

Создание дампа прошивки

$ su - # apt-get install read-edid 
# get-edid | parse-edid 

get-edid — считывает EDID, а read-edid преобразует его в читабельный вид.

Считать EDID и записать его в файл:

# get-edid > edid.bin 

Прочитать содержимое EDID из файла:

# parse-edid < edid.binChecksum Correct Section "Monitor" Identifier "" ModelName "" VendorName "LGD" # Monitor Manufactured week 0 of 2014 # EDID version 1.3 # Digital Display DisplaySize 350 190 Gamma 2.20 Option "DPMS" "false" Modeline "Mode 0" -hsync -vsync EndSection

Примечание: Если возникает такая ошибка:

Error: output block unchanged parse-edid: IO error reading EDID

тогда попробуйте ещё раз.

Если эта ошибка возникает постоянно тогда это значит, что ваш EDID монитора скорее всего повреждён и делать дамп бессмысленно.

Особый способ сделать дамп прошивки для использующих проприетарный драйвер nvidia. В nvidia-settings есть кнопка Acquire EDID, которая сохраняет EDID дисплея в двоичном или текстовом формате.

Расположение кнопки Aсquire EDID

Редактор EDID

Помимо 16-ричного редактора, существует Проект wxEDID. Пакет wxEdid на сегодня есть в Сизифе. Пока это проект начального уровня, запуск идёт из командной строки, проект не локализован, автор описывает его современное состояние так:

wxEDID — это основанный на wxWidgets редактор EDID (Extended Display Identification Data). Это ранняя стадия разработки, позволяющая модифицировать базовые структуры EDID v1.3+. Поддержка расширений EDID запланирована, но еще не реализована. Помимо обычных функций редактора, в настоящее время он позволяет экспортировать и импортировать данные EDID. из текстовых файлов (шестнадцатеричный формат), а также сохранять структуры в удобочитаемом текстовом формате.

Внешний вид программы wxEdid

Окно DTD констуктора wxEdid

Подстановка дампа прошивки EDID в xorg.conf.d

Выясняем "порт", к которому подключена ваша видеокарта:

xrandr | grep "\connected eDP connected primary 1366x768+0+0 (normal left inverted right x axis y axis) 345mm x 194mm

Создаём произвольный файл в /etc/X11/xorg.conf.d с расширением .conf, например 20-edid.conf, например такого содержания:

Section "Device" Identifier "my_videocard" Option "ConnectedMonitor" "eDP" Option "CustomEDID" "eDP:/ec/X11/edid.bin" Option "IgnoreEDID" "false" Option "UseEDID" "true" EndSection 

После рестарта X-сервера, он считает EDID дисплея из нашего дампа прошивки, а не из дисплея.

Это бывает полезным, например, если монитор подключают к "плохому" видеовыходу (через который по какой-то причине неправильно считывается EDID). Тогда, подключив его заранее к хорошему видеовыходу, вы можете сохранить EDID монитора, а потом, при включении к плохому выходу передать EDID X-серверу. Второй случай, это если вы выявили ошибку в выдаваемом монитором EDID, вы его исправляете и передаёте исправленный X-серверу. Пример этого описан в статье Патчим EDID телевизора из-под Linux.

Телевизор-монитор, EDID и особенности дистрибутивов

На основе его железного EDID (снятого через i2c) и того Самсунгового EDID, спёртого из интернетов под Windows - сформировал свой, собственный, с указанием нужного и вырезанием ненужного.

С некоторыми приключениями, но на Ubuntu все-таки заработало - счастье есть.
Теперь и при загрузке не кашу показывает, а хорошую кратинку, и при старте lightdm правильно всё рисует, а при входе пользователя ещё и scale ему делаю - совсем всё прекрасно. Нормальные 4К с 60Гц для кин, которые выглядят как 1080p в интерфейсе. То что нужно.

Хотел повторить ту же процедуру на параллельно установленной Fedora. Делаю всё то же самое. Беру тот же самый hecmod.bin, который сформировал. Складываю в /lib/firmware/edid/. Прописываю в /etc/defult/grub строку drm.edid_firmware=HDMI-A-1:edid/hecmod.bin в параметры ядра, пересобираю initrd (тут есть различия, но не суть - результат один: этот bin успешно добавляется в ramfs).
Всё нормально подхватывается, edid подменяется.
Но.
Этот же самый edid в Fedora не даёт 3840х2160 - ни в 60, ни в 30. Вообще нет такого разрешения в xrandr.

У них разные парсеры? Надо делать разные edid для разных дистрибутивов?

Deleted
05.04.18 08:19:51 MSK

Вангую либо дрм ядреный разный либо меза.

mos ★★☆☆☆
( 05.04.18 09:42:10 MSK )

Всё нормально подхватывается, edid подменяется.

А как это проверено? Правильный ли EDID находится в /sys/class/drm/card0-HDMI-A-1/edid (или как у тебя там именован выход)?

Или поставь edid-decode и посмотри, что он говорит на этот файл. Все ли верно, сходится ли контрольная сумма, правильные ли параметры.

Zubok ★★★★★
( 05.04.18 10:15:23 MSK )
Последнее исправление: Zubok 05.04.18 10:15:37 MSK (всего исправлений: 1)

Ответ на: комментарий от Zubok 05.04.18 10:15:23 MSK

Да, вроде по всем показателям - всё сходится. Все суммы на месте. Все параметры устраивают и edid-decode, и parse-edid. Оба красивые. В dmesg отчеты об удачном разборе его. И при загрузке, и при откл./вкл. телевизора тоже переподхватывает.

Всё равно кажется, что где-то я напортачил. Сижу вот, перекладываю настройки edid туда-обратно, смотрю что получается. Пока получается только хуже сделать, чем был ночной вариант. А кажется что напортачил, потому что Ubuntu откуда-то все-таки берёт разрешения, которых точно нет edid. Или она может глядя на первый монитор, и видя на нем 1920х1200 - автоматом ещё и на второй монитор такое разрешение добавлять без спроса и вопреки edid?

Deleted
( 05.04.18 12:28:00 MSK )
Ответ на: комментарий от Deleted 05.04.18 12:28:00 MSK

А что лог иксов говорит?

Zubok ★★★★★
( 05.04.18 13:33:53 MSK )
Ответ на: комментарий от Zubok 05.04.18 13:33:53 MSK

Вот кусок из лога Fedora:

(II) AMDGPU(0): EDID (in hex): (II) AMDGPU(0): 00ffffffffffff0020a3210301000000 (II) AMDGPU(0): 0c190103805932780acf74a3574cb023 (II) AMDGPU(0): 09484c210800d1c081c0814081800101 (II) AMDGPU(0): 01010101010108e80030f2705a80b058 (II) AMDGPU(0): 8a00ba882100001e023a801871382d40 (II) AMDGPU(0): 582c4500ba882100001e000000fd0032 (II) AMDGPU(0): 4b0f873c000a202020202020000000fc (II) AMDGPU(0): 0048454334304b3332310a2020200175 (II) AMDGPU(0): 02031cf2440304106123090707830100 (II) AMDGPU(0): 006a030c003000383c000000023a8018 (II) AMDGPU(0): 71382d40582c4500ba882100001e011d (II) AMDGPU(0): 80d0721c1620102c2580c48e2100009e (II) AMDGPU(0): 011d8018711c1620582c2500c48e2100 (II) AMDGPU(0): 009e0000000000000000000000000000 (II) AMDGPU(0): 00000000000000000000000000000000 (II) AMDGPU(0): 000000000000000000000000000000cb (--) AMDGPU(0): HDMI max TMDS frequency 300000KHz (II) AMDGPU(0): Printing probed modes for output HDMI-A-0 (II) AMDGPU(0): Modeline "1920x1080"x60.0 148.50 1920 2008 2052 2200 1080 1084 1089 1125 +hsync +vsync ( (II) AMDGPU(0): Modeline "1920x1080"x59.9 148.35 1920 2008 2052 2200 1080 1084 1089 1125 +hsync +vsync ( (II) AMDGPU(0): Modeline "1920x1080i"x60.0 74.25 1920 2008 2052 2200 1080 1084 1094 1125 interlace +hsy (II) AMDGPU(0): Modeline "1920x1080i"x50.0 74.25 1920 2448 2492 2640 1080 1084 1094 1125 interlace +hsy (II) AMDGPU(0): Modeline "1920x1080i"x59.9 74.18 1920 2008 2052 2200 1080 1084 1094 1125 interlace +hsy (II) AMDGPU(0): Modeline "1280x1024"x60.0 108.00 1280 1328 1440 1688 1024 1025 1028 1066 +hsync +vsync ( (II) AMDGPU(0): Modeline "1280x960"x60.0 108.00 1280 1376 1488 1800 960 961 964 1000 +hsync +vsync (60.0 (II) AMDGPU(0): Modeline "1280x720"x60.0 74.25 1280 1390 1430 1650 720 725 730 750 +hsync +vsync (45.0 (II) AMDGPU(0): Modeline "1280x720"x59.9 74.18 1280 1390 1430 1650 720 725 730 750 +hsync +vsync (45.0 (II) AMDGPU(0): Modeline "1024x768"x60.0 65.00 1024 1048 1184 1344 768 771 777 806 -hsync -vsync (48.4 (II) AMDGPU(0): Modeline "800x600"x60.3 40.00 800 840 968 1056 600 601 605 628 +hsync +vsync (37.9 kHz (II) AMDGPU(0): Modeline "720x480"x60.0 27.03 720 736 798 858 480 489 495 525 -hsync -vsync (31.5 kHz e (II) AMDGPU(0): Modeline "720x480"x59.9 27.00 720 736 798 858 480 489 495 525 -hsync -vsync (31.5 kHz e (II) AMDGPU(0): Modeline "640x480"x60.0 25.20 640 656 752 800 480 490 492 525 -hsync -vsync (31.5 kHz e (II) AMDGPU(0): Modeline "640x480"x59.9 25.18 640 656 752 800 480 490 492 525 -hsync -vsync (31.5 kHz e

Вот это же место из лога Ubuntu:

(II) AMDGPU(0): EDID (in hex): (II) AMDGPU(0): 00ffffffffffff0020a3210301000000 (II) AMDGPU(0): 0c190103805932780acf74a3574cb023 (II) AMDGPU(0): 09484c210800d1c081c0814081800101 (II) AMDGPU(0): 01010101010108e80030f2705a80b058 (II) AMDGPU(0): 8a00ba882100001e023a801871382d40 (II) AMDGPU(0): 582c4500ba882100001e000000fd0032 (II) AMDGPU(0): 4b0f873c000a202020202020000000fc (II) AMDGPU(0): 0048454334304b3332310a2020200175 (II) AMDGPU(0): 02031cf2440304106123090707830100 (II) AMDGPU(0): 006a030c003000383c000000023a8018 (II) AMDGPU(0): 71382d40582c4500ba882100001e011d (II) AMDGPU(0): 80d0721c1620102c2580c48e2100009e (II) AMDGPU(0): 011d8018711c1620582c2500c48e2100 (II) AMDGPU(0): 009e0000000000000000000000000000 (II) AMDGPU(0): 00000000000000000000000000000000 (II) AMDGPU(0): 000000000000000000000000000000cb (--) AMDGPU(0): HDMI max TMDS frequency 300000KHz (II) AMDGPU(0): Printing probed modes for output HDMI-A-0 (II) AMDGPU(0): Modeline "3840x2160"x60.0 594.00 3840 4016 4104 4400 2160 2168 2178 2250 +hsync +vsync (135.0 kHz eP) (II) AMDGPU(0): Modeline "3840x2160"x59.9 593.41 3840 4016 4104 4400 2160 2168 2178 2250 +hsync +vsync (134.9 kHz e) (II) AMDGPU(0): Modeline "1920x1200"x60.0 594.00 1920 4016 4104 4400 1200 2168 2178 2250 +hsync +vsync (135.0 kHz e) (II) AMDGPU(0): Modeline "1920x1080"x60.0 148.50 1920 2008 2052 2200 1080 1084 1089 1125 +hsync +vsync (67.5 kHz e) (II) AMDGPU(0): Modeline "1920x1080"x59.9 148.35 1920 2008 2052 2200 1080 1084 1089 1125 +hsync +vsync (67.4 kHz e) (II) AMDGPU(0): Modeline "1600x1200"x60.0 594.00 1600 4016 4104 4400 1200 2168 2178 2250 +hsync +vsync (135.0 kHz e) (II) AMDGPU(0): Modeline "1680x1050"x60.0 594.00 1680 4016 4104 4400 1050 2168 2178 2250 +hsync +vsync (135.0 kHz e) (II) AMDGPU(0): Modeline "1280x1024"x60.0 108.00 1280 1328 1440 1688 1024 1025 1028 1066 +hsync +vsync (64.0 kHz e) (II) AMDGPU(0): Modeline "1440x900"x60.0 594.00 1440 4016 4104 4400 900 2168 2178 2250 +hsync +vsync (135.0 kHz e) (II) AMDGPU(0): Modeline "1280x960"x60.0 108.00 1280 1376 1488 1800 960 961 964 1000 +hsync +vsync (60.0 kHz e) (II) AMDGPU(0): Modeline "1280x800"x60.0 594.00 1280 4016 4104 4400 800 2168 2178 2250 +hsync +vsync (135.0 kHz e) (II) AMDGPU(0): Modeline "1280x720"x60.0 74.25 1280 1390 1430 1650 720 725 730 750 +hsync +vsync (45.0 kHz e) (II) AMDGPU(0): Modeline "1280x720"x59.9 74.18 1280 1390 1430 1650 720 725 730 750 +hsync +vsync (45.0 kHz e) (II) AMDGPU(0): Modeline "1024x768"x60.0 65.00 1024 1048 1184 1344 768 771 777 806 -hsync -vsync (48.4 kHz e) (II) AMDGPU(0): Modeline "800x600"x60.3 40.00 800 840 968 1056 600 601 605 628 +hsync +vsync (37.9 kHz e) (II) AMDGPU(0): Modeline "720x480"x60.0 27.03 720 736 798 858 480 489 495 525 -hsync -vsync (31.5 kHz e) (II) AMDGPU(0): Modeline "720x480"x59.9 27.00 720 736 798 858 480 489 495 525 -hsync -vsync (31.5 kHz e) (II) AMDGPU(0): Modeline "640x480"x60.0 25.20 640 656 752 800 480 490 492 525 -hsync -vsync (31.5 kHz e) (II) AMDGPU(0): Modeline "640x480"x59.9 25.18 640 656 752 800 480 490 492 525 -hsync -vsync (31.5 kHz e)

Оба читают один и тот же edid. Буква-в-букву. Только в Ubuntu из него получаются Modeline 3840x2160, а в Fedora нет.
Зато Ubuntu откуда-то выдумывает Modeline 1920x1200, а честная Fedora честно ничего не выдумывает, чего нет в edid.

webOS Forums - форум пользователей телевизоров LG на webOS

Начнем с ликбеза.
Что это такое EDID и как его читать и интерпретировать.
Понятие EDID пришло к нам из далеких 90-x вместе с DDC из стандартов VESA.
Телевизор, как и любой другой приемник HDMI сигнала (Sink согласно стандарта HDMI) договаривается с источником (Source) сигнала (PC, DVD/Blu-ray плейер) на своем птичьем языке о наилучшем режиме воспроизведения. Информация о поддерживаемых разрешениях и диапазонах воспроизводимых сигналов хранится в EDID(Extended Display Identification Data). Он бывает 128/256-битный для DVI-D/HDMI.
Extended display identification data
Структура EDID
DDC - Display Data Channel
На рубеже веков появились понятия
E-DDC Enhanced Display Data Channel
E-EDID Enhanced Extended Display Identification Data
Но по полной они заиграли с появлением первой спецификации HDMI в 2002 году.
Версий EDID существует тоже много - сейчас наиболее употребительна 1.3. Не путайте с версией HDMI. Например EDID 1.3 использовался еще в HDMI 1.0.

Лучшей прогой для для расшифровки EDID многие считают MonInfo http://entechtaiwan.net/util/moninfo.shtm

Итак, что мы можем увидеть в 128 байтах EDID и еще 128 байтах E-EDID.

Любознательный пользователь netcipher с форума ixbt декодировал EDID для телевизора LG OLED 2017.

Код: Выделить всё Monitor
Model name. LG TV
Manufacturer. LGE
Plug and Play ID. GSM0001
Serial number. n/a
Manufacture date. 2017, ISO week 1
Filter driver. None
-------------------------
EDID revision. 1.3
Input signal type. Digital
Color bit depth. Undefined
Display type. RGB color
Screen size. 1600 x 900 mm (72,3 in)
Power management. Not supported
Extension blocs. 1 (CEA-EXT)
-------------------------
DDC/CI. Not supported

Color characteristics
Default color space. Non-sRGB
Display gamma. 2,20
Red chromaticity. Rx 0,640 - Ry 0,330
Green chromaticity. Gx 0,300 - Gy 0,600
Blue chromaticity. Bx 0,150 - By 0,060
White point (default). Wx 0,313 - Wy 0,329
Additional descriptors. None

Timing characteristics
Horizontal scan range. 30-136kHz
Vertical scan range. 58-121Hz
Video bandwidth. 600MHz
CVT standard. Not supported
GTF standard. Not supported
Additional descriptors. None
Preferred timing. Yes
Native/preferred timing.. 3840x2160p at 60Hz (16:9)
Modeline. "3840x2160" 594,000 3840 4016 4104 4400 2160 2168 2178 2250 +hsync +vsync
Detailed timing #1. 1920x1080p at 60Hz (16:9)
Modeline. "1920x1080" 148,500 1920 2008 2052 2200 1080 1084 1089 1125 +hsync +vsync

Standard timings supported
720 x 400p at 70Hz - IBM VGA
640 x 480p at 60Hz - IBM VGA
800 x 600p at 60Hz - VESA
1024 x 768p at 60Hz - VESA
640 x 480p at 60Hz - VESA STD
800 x 600p at 60Hz - VESA STD
1024 x 768p at 60Hz - VESA STD
1152 x 864p at 60Hz - VESA STD
1280 x 1024p at 60Hz - VESA STD

EIA/CEA-861 Information
Revision number. 3
IT underscan. Supported
Basic audio. Supported
YCbCr 4:4:4. Supported
YCbCr 4:2:2. Supported
Native formats. 1
Detailed timing #1. 1360x768p at 60Hz (16:9)
Modeline. "1360x768" 85,500 1360 1424 1536 1792 768 771 777 795 +hsync +vsync

CE video identifiers (VICs) - timing/formats supported
3840x2160p at 59.94Hz/60Hz - HDTV (16:9, 1:1)
3840x2160p at 50Hz - HDTV (16:9, 1:1)
3840x2160p at 23.98Hz/24Hz - HDTV (16:9, 1:1)
3840x2160p at 25Hz - HDTV (16:9, 1:1)
3840x2160p at 29.97Hz/30Hz - HDTV (16:9, 1:1)
4096x2160p at 29.97Hz/30Hz - HDTV (256:135, 1:1)
4096x2160p at 59.94Hz/60Hz - HDTV (256:135, 1:1)
4096x2160p at 50Hz - HDTV (256:135, 1:1)
4096x2160p at 23.98Hz/24Hz - HDTV (256:135, 1:1)
4096x2160p at 25Hz - HDTV (256:135, 1:1)
"1360x768" 85,500 1360 1424 1536 1792 768 771 777 795 +hsync +vsync
"1360x768" 85,500 1360 1424 1536 1792 768 771 777 795 +hsync +vsync
1920 x 1080p at 60Hz - HDTV (16:9, 1:1)
1920 x 1080p at 50Hz - HDTV (16:9, 1:1)
1920 x 1080p at 50Hz - HDTV (16:9, 1:1)
1920 x 1080p at 50Hz - HDTV (16:9, 1:1)
1280 x 720p at 60Hz - HDTV (16:9, 1:1)
1280 x 720p at 50Hz - HDTV (16:9, 1:1)
1920 x 1080i at 60Hz - HDTV (16:9, 1:1)
1920 x 1080i at 50Hz - HDTV (16:9, 1:1)
720 x 480p at 60Hz - EDTV (16:9, 32:27)
720 x 480p at 60Hz - EDTV (4:3, 8:9)
720 x 576p at 50Hz - EDTV (16:9, 64:45)
1920 x 1080p at 24Hz - HDTV (16:9, 1:1)
1920 x 1080p at 25Hz - HDTV (16:9, 1:1)
1920 x 1080p at 30Hz - HDTV (16:9, 1:1)
720 x 576i at 50Hz - Doublescan (4:3, 16:15)
640 x 480p at 60Hz - Default (4:3, 1:1)
640 x 480p at 60Hz - Default (4:3, 1:1)
640 x 480p at 60Hz - Default (4:3, 1:1)
640 x 480p at 60Hz - Default (4:3, 1:1)
640 x 480p at 60Hz - Default (4:3, 1:1)
640 x 480p at 60Hz - Default (4:3, 1:1)
640 x 480p at 60Hz - Default (4:3, 1:1)
1920 x 1080p at 120Hz - HDTV (16:9, 1:1)
1920 x 1080p at 100Hz - HDTV (16:9, 1:1)
NB: NTSC refresh rate = (Hz*1000)/1001

CE audio data (formats supported)
LPCM 2-channel, 16/20/24 bit depths at 32/44/48/96/192 kHz
AC-3 6-channel, 640k max. bit rate at 32/44/48 kHz
DD+ 8-channel, 16-bit at 32/44/48 kHz
DTS 6-channel, 1536k max. bit rate at 44/48 kHz
DVD-A 8-channel, 16/20 bit depths at 48 kHz

CE vendor specific data (VSDB)
IEEE registration number. 0x000C03
CEC physical address. 1.0.0.0
Supports AI (ACP, ISRC).. Yes
Supports 48bpp. No
Supports 36bpp. Yes
Supports 30bpp. Yes
Supports YCbCr 4:4:4. Yes
Supports dual-link DVI. No
Maximum TMDS clock. 300MHz
Audio/video latency (p).. n/a
Audio/video latency (i).. n/a
HDMI video capabilities.. Yes
EDID screen size. No additional info
3D formats supported. Not supported
Data payload. 030C001000B83C20008001020304

CE vendor specific data (VSDB)
IEEE registration number. 0xC45DD8
CEC physical address. 0.1.7.8
Supports AI (ACP, ISRC).. Yes
Supports 48bpp. No
Supports 36bpp. No
Supports 30bpp. No
Supports YCbCr 4:4:4. No
Supports dual-link DVI. No
Maximum TMDS clock. 15MHz

CE video capability data
CE scan behavior. Supports overscan and underscan
IT scan behavior. Supports overscan and underscan
PT scan behavior. Not supported
RGB quantization range. Selectable (via AVI YQ)
YCC quantization range. Selectable (via AVI YQ)

CE colorimetry data
xvYCC709 support. No
xvYCC601 support. No
sYCC601 support. No
AdobeYCC601 support. No
AdobeRGB support. No
Metadata profile flags. 0x00
BT2020 RGB support . Yes
BT2020 YCC support. Yes
Gamut MetaData3 (MD3): 0
Gamut MetaData2 (MD2): 0
Gamut MetaData1 (MD1): 0
Gamut MetaData0 (MD0): 0

Vendor Specific Data Block HDMI 1.4
IEEE OUI: 000C03
Source Physical Address: 1000
Supports ACP, ISRC1, ISRC2. Yes
Supports 48 bits/pixel (16 bits/color)..No
Supports 36 bits/pixel (12 bits/color)..Yes
Supports 30 bits/pixel (10 bits/color)..Yes
Supports YCbCr 4:4:4 Deep Color. Yes
Supports Dual DVI. No
Max TMDS Clock Rate: 300 MHz
Video/Audio Latency Fields Present. No

Vendor Specific Data Block HDMI 2.0
IEEE OUI: C45DD8
Version: 1
Max TMDS Clock Rate: 600 MHz
Supports SCDC. Yes
Supports SCDC Read Request. No
Supports Scrambling for less Supports 3D Independent View. No
Supports 3D Dual View. No
Supports 3D OSD Disparity. No
Supports 30 bits/pixel (10 bits/color) for Deep Color YCbCr 4:2:0. Yes
Supports 36 bits/pixel (12 bits/color) for Deep Color YCbCr 4:2:0. No
Supports 48 bits/pixel (16 bits/color) for Deep Color YCbCr 4:2:0. No

Video Capability Data Block
Quantization Range selectable via AVI YQ for YCC formats: Yes
Quantization Range selectable via AVI Q for RGB formats: Yes
Overscan underscan behaviour for Preferred Video Format: No data
Overscan underscan behaviour for IT Video Formats: Supports both overscan and underscan
Overscan underscan behaviour for CE Video Formats: Supports both overscan and underscan

YCbCr 4:2:0 Capability Map Data Block
The following modes support YCbCr 4:2:0 in addition to other color formats.

3840x2160p at 59.94Hz/60Hz - HDTV (16:9, 1:1)
3840x2160p at 50Hz - HDTV (16:9, 1:1)
4096x2160p at 59.94Hz/60Hz - HDTV (256:135, 1:1)
4096x2160p at 50Hz - HDTV (256:135, 1:1)

Reserved video related data
Data payload. 060D01

Reserved video related data
Data payload. 0F33

CE vendor-specific video data
Data payload. 0146D000260A0975805B6C

Raw data
00,FF,FF,FF,FF,FF,FF,00,1E,6D,01,00,01,01,01,01,01,1B,01,03,80,A0,5A,78,0A,EE,91,A3,54,4C,99,26,
0F,50,54,A1,08,00,31,40,45,40,61,40,71,40,81,80,01,01,01,01,01,01,08,E8,00,30,F2,70,5A,80,B0,58,
8A,00,40,84,63,00,00,1E,02,3A,80,18,71,38,2D,40,58,2C,45,00,40,84,63,00,00,1E,00,00,00,FD,00,3A,
79,1E,88,3C,00,0A,20,20,20,20,20,20,00,00,00,FC,00,4C,47,20,54,56,0A,20,20,20,20,20,20,20,01,63,
02,03,60,F1,5A,61,60,10,1F,66,65,04,13,05,14,03,02,12,20,21,22,15,01,5D,5E,5F,62,63,64,3F,40,2F,
09,57,07,15,07,50,57,07,01,3D,06,C0,67,04,03,6E,03,0C,00,10,00,B8,3C,20,00,80,01,02,03,04,67,D8,
5D,C4,01,78,80,03,E2,00,CF,E3,05,C0,00,E3,06,0D,01,E2,0F,33,EB,01,46,D0,00,26,0A,09,75,80,5B,6C,
66,21,50,B0,51,00,1B,30,40,70,36,00,40,84,63,00,00,1E,00,00,00,00,00,00,00,00,00,00,00,00,00,01 Но если TV включить через OPPO UDP205, то в EDID CEA Data Block появляется еще и YCbCr 4:2:0 Video Data Block

Код: Выделить всё YCbCr 4:2:0 Video Data Block
The following modes support only YCbCr 4:2:0 color format

3840x2160p at 59.94Hz/60Hz - HDTV (16:9, 1:1)
3840x2160p at 50Hz - HDTV (16:9, 1:1)
4096x2160p at 59.94Hz/60Hz - HDTV (256:135, 1:1)
4096x2160p at 50Hz - HDTV (256:135, 1:1)

AMETKO
Сообщения: 3699 Зарегистрирован: 18 июн 2017, 22:32 Благодарил (а): 445 раз. Поблагодарили: 533 раз. Телевизор: LG 43UH603V

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *