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

Материал из ALT Linux Wiki
Строка 68: Строка 68:
===Редактор EDID===
===Редактор EDID===


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

Версия от 22:26, 4 июня 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

Подстановка дампа прошивки 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