EDID: различия между версиями

Материал из ALT Linux Wiki
м (source tags deprecated)
Строка 1: Строка 1:
=== Подмена EDID монитора ===
== Подмена EDID монитора ==
{{w|Extended_display_identification_data}}
{{w|Extended_display_identification_data}}


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


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


===Формат EDID===
== Формат EDID ==


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


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


В данной статье рассматривается вариант передачи X-серверу информации об правильном EDID монитора.
В данной статье рассматривается вариант передачи X-серверу информации об правильном EDID монитора.
Статья основана на  статье [https://mycyberuniverse.com/ru/linux/podstanovka-fayla-proshivki-vmesto-vshitogo-edid-monitora.html Подстановка файла прошивки вместо вшитого EDID монитора] и адаптирована к особенности ALT Linux
Статья основана на  статье [https://mycyberuniverse.com/ru/linux/podstanovka-fayla-proshivki-vmesto-vshitogo-edid-monitora.html Подстановка файла прошивки вместо вшитого EDID монитора] и адаптирована к особенности ALT Linux.
 
===Создание дампа прошивки===
Устанавливаем {{pkg|read-edid}}
$ su -
# apt-get install read-edid


Считываем EDID
== Создание дампа прошивки ==
Устанавливаем {{pkg|read-edid}}:
<syntaxhighlight lang="bash">$ su -
# apt-get install read-edid
</syntaxhighlight>


# get-edid | parse-edid
Считываем EDID:
{{cmd|get-edid}} - считывает EDID, а {{cmd|read-edid}} преобразует его в читабельный вид
<syntaxhighlight lang="bash"># get-edid | parse-edid</syntaxhighlight>
{{cmd|get-edid}} считывает EDID, а {{cmd|read-edid}} преобразует его в читабельный вид.


Считать EDID и записать его в файл:
Считать EDID и записать его в файл:
# get-edid > edid.bin
<syntaxhighlight lang="bash"># get-edid > edid.bin</syntaxhighlight>


Прочитать содержимое EDID из файла:
Прочитать содержимое EDID из файла:
<source lang=bash>
<syntaxhighlight lang="bash">
# parse-edid < edid.bin
# parse-edid < edid.bin
Checksum Correct
Checksum Correct
Строка 52: Строка 50:
         Modeline        "Mode 0" -hsync -vsync  
         Modeline        "Mode 0" -hsync -vsync  
EndSection
EndSection
</source>
</syntaxhighlight>


{{Note|     Если возникает такая ошибка:
{{Note| Если возникает такая ошибка:


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


тогда попробуйте ещё раз.  
тогда попробуйте ещё раз.  
Строка 65: Строка 63:
В {{cmd|nvidia-settings}} есть кнопка '''Adquire EDID''', которая сохраняет '''EDID''' дисплея в двоичном или текстовом формате.
В {{cmd|nvidia-settings}} есть кнопка '''Adquire EDID''', которая сохраняет '''EDID''' дисплея в двоичном или текстовом формате.


== Редактор EDID ==


===Редактор EDID===
Помимо 16-ричного редактора, существует [https://sourceforge.net/projects/wxedid/ Проект wxEDID].
 
Помимо 16-ричного редактора, существует [https://sourceforge.net/projects/wxedid/ Проект wxEDID].
Пакет {{pkg|wxEdid}} на сегодня есть в Сизифе.
Пакет {{pkg|wxEdid}} на сегодня есть в Сизифе.
Пока это проект начального уровня, запуск идёт из командной строки, проект не локализован,  
Пока это проект начального уровня, запуск идёт из командной строки, проект не локализован, автор описывает его современное состояние так:
автор описывает его современное состояние так:


<source lang=text>
<pre>
wxEDID — это основанный на wxWidgets редактор EDID (Extended Display Identification Data).
wxEDID — это основанный на wxWidgets редактор EDID (Extended Display Identification Data).
Это ранняя стадия разработки, позволяющая модифицировать базовые структуры EDID v1.3+.
Это ранняя стадия разработки, позволяющая модифицировать базовые структуры EDID v1.3+.
Строка 79: Строка 75:
Помимо обычных функций редактора, в настоящее время он позволяет экспортировать и импортировать данные EDID.
Помимо обычных функций редактора, в настоящее время он позволяет экспортировать и импортировать данные EDID.
из текстовых файлов (шестнадцатеричный формат), а также сохранять структуры в удобочитаемом текстовом формате.
из текстовых файлов (шестнадцатеричный формат), а также сохранять структуры в удобочитаемом текстовом формате.
</source>
</pre>


[[Файл:WxEdid.png|мини|слева|Внешний вид программы wxEdid]]
[[Файл:WxEdid.png|мини|слева|Внешний вид программы wxEdid]]
[[Файл:WxEdid 2.png.png|мини|слева|Окно DTD констуктора wxEdid]]
[[Файл:WxEdid 2.png.png|мини|слева|Окно DTD констуктора wxEdid]]


===Подстановка дампа прошивки EDID в xorg.conf.d===
== Подстановка дампа прошивки EDID в xorg.conf.d ==
Выясняем "порт", к каторому подключена ваша видеокарта :
Выясняем "порт", к которому подключена ваша видеокарта:
<source lang=bash`>
<syntaxhighlight lang="bash">
xrandr | grep "\<"connec
xrandr | grep "\<"connec
eDP connected primary 1366x768+0+0 (normal left inverted right x axis y axis) 345mm x 194mm
eDP connected primary 1366x768+0+0 (normal left inverted right x axis y axis) 345mm x 194mm
</source>
</syntaxhighlight>
 
Создаём произвольный файл в '''/etc/X11/xorg.conf.d''' с разрешением .conf, например 20-edid.conf, например такого содержания:


Создаём произвольный файл в {{path|/etc/X11/xorg.conf.d}} с разрешением .conf, например 20-edid.conf, например такого содержания:
<syntaxhighlight lang="ini">
  Section "Device"
  Section "Device"
   Identifier    "my_videocard"
   Identifier    "my_videocard"
Строка 100: Строка 96:
   Option        "UseEDID" "true"
   Option        "UseEDID" "true"
  EndSection
  EndSection
</syntaxhighlight>


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


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


===Ссылки===
== Ссылки ==
[[DPI | Неверный размер шрифтов]]
[[DPI | Неверный размер шрифтов]]



Версия от 17:40, 10 ноября 2022

Подмена EDID монитора

Логотип Википедии
В Википедии есть обзорная статья по теме «Extended_display_identification_data».

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.

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

Устанавливаем read-edid:

$ su -
# apt-get install read-edid

Считываем EDID:

# get-edid | parse-edid

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

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

# get-edid > edid.bin

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

# parse-edid < edid.bin
Checksum 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 есть кнопка Adquire EDID, которая сохраняет 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 "\<"connec
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 телевизора из-под Linux

Подстановка файла прошивки вместо вшитого EDID монитора

Домашняя страница проекта read-edid

Описание пакета read-edid на packages.altlinux.org

Домашняя страница проекта wxedid

Описание пакета wxedid на packages.altlinux.org