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

Материал из ALT Linux Wiki
Нет описания правки
 
(не показаны 24 промежуточные версии 3 участников)
Строка 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'''
Все мониторы, аналоговые или цифровые, должны поддерживать EDID. Эти данные хранятся в памяти EEPROM монитора в формате, заданном стандартом VESA.


В данной статье рассматривается вариант передачи X-серверу информации об правильном EDID монитора.
== Формат EDID ==
Статья основана на  статье [https://mycyberuniverse.com/ru/linux/podstanovka-fayla-proshivki-vmesto-vshitogo-edid-monitora.html Подстановка файла прошивки вместо вшитого EDID монитора] и адаптирована к особенности ALT Linux
 
Данные 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 монитора.
Устанавливаем {{pkg|read-edid}}
Статья основана на статье [https://mycyberuniverse.com/ru/linux/podstanovka-fayla-proshivki-vmesto-vshitogo-edid-monitora.html Подстановка файла прошивки вместо вшитого EDID монитора] и адаптирована к особенности ALT Linux.
   
$ 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
Строка 41: Строка 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


тогда попробуйте ещё раз.  
тогда попробуйте ещё раз.  
Строка 52: Строка 61:


Особый способ сделать дамп прошивки для использующих проприетарный драйвер '''nvidia'''.
Особый способ сделать дамп прошивки для использующих проприетарный драйвер '''nvidia'''.
В {{cmd|nvidia-settings}} есть кнопка '''Adquire EDID''', которая сохраняет '''EDID''' дисплея в двоичном или текстовом формате.
В {{cmd|nvidia-settings}} есть кнопка '''Acquire EDID''', которая сохраняет '''EDID''' дисплея в двоичном или текстовом формате.
[[Файл:Adquire EDID.png|центр|альт=Расположение кнопки Aсquire EDID|Создание дампа прошивки для использующих проприетарный драйвер nvidia.]]


===Подстановка дампа прошивки EDID в xorg.conf.d===
== Редактор EDID ==
Выясняем "порт", к каторому подключена ваша видеокарта :
 
xrandr | grep "\<"connec
Помимо 16-ричного редактора, существует [https://sourceforge.net/projects/wxedid/ Проект wxEDID].
Пакет {{pkg|wxEdid}} на сегодня есть в Сизифе.
Пока это проект начального уровня, запуск идёт из командной строки, проект не локализован, автор описывает его современное состояние так:
 
<pre>
wxEDID — это основанный на wxWidgets редактор EDID (Extended Display Identification Data).
Это ранняя стадия разработки, позволяющая модифицировать базовые структуры EDID v1.3+.
Поддержка расширений EDID запланирована, но еще не реализована.
Помимо обычных функций редактора, в настоящее время он позволяет экспортировать и импортировать данные EDID.
из текстовых файлов (шестнадцатеричный формат), а также сохранять структуры в удобочитаемом текстовом формате.
</pre>
 
[[Файл:WxEdid.png|мини|слева|Внешний вид программы wxEdid]]
[[Файл:WxEdid 2.png.png|мини|слева|Окно DTD констуктора wxEdid]]
 
== Подстановка дампа прошивки EDID в xorg.conf.d ==
Выясняем "порт", к которому подключена ваша видеокарта:
<syntaxhighlight lang="bash">
xrandr | grep "\<"connected
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
</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"
Строка 68: Строка 97:
   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 | Неверный размер шрифтов]]


===Ссылки===
[https://habr.com/ru/post/217583/ Патчим EDID телевизора из-под Linux]
[https://habr.com/ru/post/217583/ Патчим EDID телевизора из-под Linux]
[https://mycyberuniverse.com/ru/linux/podstanovka-fayla-proshivki-vmesto-vshitogo-edid-monitora.html Подстановка файла прошивки вместо вшитого EDID монитора]
[https://mycyberuniverse.com/ru/linux/podstanovka-fayla-proshivki-vmesto-vshitogo-edid-monitora.html Подстановка файла прошивки вместо вшитого EDID монитора]


[http://www.polypux.org/projects/read-edid/ Домашняя страница проекта read-edid]
[https://packages.altlinux.org/ru/sisyphus/srpms/read-edid/ Описание пакета read-edid на packages.altlinux.org]
[https://sourceforge.net/projects/wxedid/ Домашняя страница проекта wxedid]
[https://packages.altlinux.org/ru/sisyphus/srpms/wxedid/  Описание пакета wxedid на packages.altlinux.org]
[https://learn.microsoft.com/ru-ru/previous-versions/windows/drivers/display/monitor-inf-file-sections Описание файла inf в Windows]
[https://learn.microsoft.com/ru-ru/windows-hardware/drivers/display/overriding-monitor-edids#sample-inf-file-monsampinf Пример INF-файла: Monsamp.inf для Windows]


[[Категория:Hardware]]
[[Категория:Hardware]][[Категория:HOWTO]]

Текущая версия от 11:31, 21 сентября 2024

Подмена 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 есть кнопка 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 телевизора из-под Linux

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

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

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

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

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

Описание файла inf в Windows

Пример INF-файла: Monsamp.inf для Windows