EDID: различия между версиями
(→Ссылки) |
м (source tags deprecated) |
||
Строка 1: | Строка 1: | ||
== Подмена 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. | ||
== Формат 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}}: | |||
<syntaxhighlight lang="bash">$ su - | |||
# apt-get install read-edid | |||
</syntaxhighlight> | |||
Считываем EDID: | |||
{{cmd|get-edid}} | <syntaxhighlight lang="bash"># get-edid | parse-edid</syntaxhighlight> | ||
{{cmd|get-edid}} — считывает EDID, а {{cmd|read-edid}} преобразует его в читабельный вид. | |||
Считать EDID и записать его в файл: | Считать EDID и записать его в файл: | ||
<syntaxhighlight lang="bash"># get-edid > edid.bin</syntaxhighlight> | |||
Прочитать содержимое EDID из файла: | Прочитать содержимое EDID из файла: | ||
< | <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 | ||
</ | </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 == | |||
Помимо 16-ричного редактора, существует [https://sourceforge.net/projects/wxedid/ Проект wxEDID]. | |||
Помимо 16-ричного редактора, существует | |||
Пакет {{pkg|wxEdid}} на сегодня есть в Сизифе. | Пакет {{pkg|wxEdid}} на сегодня есть в Сизифе. | ||
Пока это проект начального уровня, запуск идёт из командной строки, проект не локализован, | Пока это проект начального уровня, запуск идёт из командной строки, проект не локализован, автор описывает его современное состояние так: | ||
автор описывает его современное состояние так: | |||
< | <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. | ||
из текстовых файлов (шестнадцатеричный формат), а также сохранять структуры в удобочитаемом текстовом формате. | из текстовых файлов (шестнадцатеричный формат), а также сохранять структуры в удобочитаемом текстовом формате. | ||
</ | </pre> | ||
[[Файл:WxEdid.png|мини|слева|Внешний вид программы wxEdid]] | [[Файл:WxEdid.png|мини|слева|Внешний вид программы wxEdid]] | ||
[[Файл:WxEdid 2.png.png|мини|слева|Окно DTD констуктора wxEdid]] | [[Файл:WxEdid 2.png.png|мини|слева|Окно DTD констуктора wxEdid]] | ||
== Подстановка дампа прошивки EDID в xorg.conf.d == | |||
Выясняем "порт", к | Выясняем "порт", к которому подключена ваша видеокарта: | ||
< | <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 | ||
</ | </syntaxhighlight> | ||
Создаём произвольный файл в {{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 (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. из текстовых файлов (шестнадцатеричный формат), а также сохранять структуры в удобочитаемом текстовом формате.
Подстановка дампа прошивки 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