EDID: почему фьюзер должен выдавать себя за монитор
Каждое устройство в видеоцепочке должно отдавать блок EDID. Разбираем, что в нём записано, что значат чёрный экран или урезанная частота и как EDID хранят, подменяют и клонируют.
Коротко
EDID — это блок данных, который дисплей отправляет вверх по цепочке: в нём идентификатор устройства, поддерживаемые тайминги и предпочтительный режим. Фьюзер стоит там, где раньше был монитор, поэтому он обязан отдавать корректный EDID каждому ПК. Чёрный экран или урезанная частота обычно означают, что этого блока нет, он универсальный или неверный.
На странице9
Что такое EDID?
Extended Display Identification Data — небольшой блок байтов, который хранится в дисплее и передаётся вверх по цепочке тому, что этим дисплеем управляет. Базовый блок на 128 байт содержит идентификатор производителя и модели, версию EDID, основные параметры дисплея, цветовые характеристики, список устаревших таймингов и до четырёх дескрипторов детальных таймингов. Первый из этих дескрипторов — предпочтительный режим дисплея. Более поздние стандарты добавили блоки расширения по 128 байт, CTA-861 и DisplayID, и именно в них живут современные режимы с высокой частотой, метаданные HDR и сведения о поддержке звука. Источник читает этот блок, выбирает лучший режим, который поддерживают обе стороны, и выводит его; без читаемого EDID источник действует наугад.
За что отвечает каждое поле EDID?
В каждой строке — поле базового блока и его практический эффект. Именно это проверяют, когда цепочка показывает картинку, но работает не в том режиме.
| Поле | Где находится | Что определяет |
|---|---|---|
| Заголовок (header) | Первые 8 байт, фиксированный шаблон | Поверил ли источник вообще, что прочитал EDID. При битом заголовке весь блок отбрасывается |
| ID производителя и код продукта | Байты 8–11 | Название и модель дисплея, которые показывает операционная система |
| Серийный номер, неделя и год | Байты 12–17 | Идентификация конкретного экземпляра. Windows и драйверы видеокарты привязывают к этим полям настройки каждого дисплея, поэтому после смены EDID могут сброситься настройки цвета и масштабирования |
| Версия и ревизия EDID | Байты 18 и 19 | По каким правилам разбирается остальная часть блока |
| Описание видеовхода | Байт 20 | Цифровой или аналоговый, а также цифровой интерфейс и глубина цвета, которые заявляет дисплей |
| Размер экрана или соотношение сторон | Байты 21 и 22 | Физический размер. Windows использует его для рекомендаций по масштабированию (DPI) |
| Гамма и поддерживаемые функции | Байты 23 и 24 | Управление питанием, тип цвета и то, можно ли вычислять режимы по стандартным формулам таймингов |
| Координаты цветности | Байты 25–34 | Точки красного, зелёного, синего и белого. Неверные значения здесь дают классическую блёклую или перенасыщенную картинку |
| Базовые и стандартные тайминги (established и standard) | Байты 35–53 | Список устаревших режимов. Именно отсюда берётся запасной 1024x768 |
| Дескрипторы детальных таймингов | Байты 54–125, четыре слота по 18 байт | Реальные режимы с пиксельной частотой, гашением и синхронизацией. ПЕРВЫЙ дескриптор — предпочтительный режим, и именно его источник выбирает по умолчанию |
| Число блоков расширения | Байт 126 | Сколько блоков расширения по 128 байт идёт следом. Ноль здесь скрывает все режимы, которые описали бы эти расширения |
| Контрольная сумма | Байт 127 | Можно ли доверять блоку. Неверная контрольная сумма равносильна полному отсутствию EDID |
Большинство обращений в поддержку сводится к двум полям: первому дескриптору детальных таймингов и числу блоков расширения. Цепочка, которая отдаёт корректный, но минимальный EDID, запустится в каком-нибудь безопасном низком режиме и не даст включить ничего из того, что матрица умеет на самом деле.
Зачем фьюзеру отдавать EDID?
На обоих входах фьюзер выступает приёмником (sink), так что для каждого ПК он и есть монитор. Он выставляет сигнал hot plug detect (обнаружение подключения) на каждом входе, затем отвечает на чтение по DDC своим EDID, и ни один ПК не видит сквозь него настоящую матрицу. Поэтому в цепочке не одна EDID-связка, а три: игровой ПК — фьюзер, второй ПК — фьюзер и фьюзер — монитор. Итоговый режим — это пересечение того, что фьюзер заявляет вверх по цепочке, и того, что коробка реально способна пропустить дальше.
Где хранится EDID и как его меняют?
EDID хранится на пяти разных уровнях, и если понимать, с каким из них вы работаете, можно сэкономить массу сил.
- В дисплее
- Небольшая последовательная EEPROM, которая читается по линиям DDC (это шина I2C) по адресу 0x50. Для настоящего монитора это первоисточник
- В транзитном устройстве
- Фьюзер, сплиттер, свитч или устройство захвата хранит собственный EDID и отдаёт его вместо монитора. Некоторые умеют копировать блок монитора, подключённого за ними, — именно это и делает режим passthrough или clone
- В драйвере видеокарты
- Windows поддерживает подмену EDID для отдельного дисплея через реестр. Утилиты вроде ToastyX CRU записывают такие подмены и меняют то, что видит Windows, не трогая никакого железа
- В INF-файле монитора
- Более старый механизм для той же задачи: пакет драйвера, который подставляет блок подмены для одного дисплея
- В отдельном эмуляторе
- Небольшой проходной донгл, который выставляет hot plug detect и отвечает фиксированным EDID. Используется в AV-инсталляциях, чтобы источник не терял дисплей, когда свитч или KVM разрывает соединение
Зачем клонировать EDID собственного монитора?
Универсальный EDID безопасен и компактен, потому что заявляет режимы, которые может показать почти любой дисплей. Проблема начинается, когда ваша матрица — 1440p 165 Гц, а коробка перед ней заявляет 1080p 60 Гц. Клонирование копирует настоящий блок матрицы, включая предпочтительный тайминг, блоки расширения и идентификационные данные, так что игровому ПК предлагается тот же список режимов, что и при прямом подключении. Везде, где можно, клонируйте, а не пишите блок вручную: настоящий блок серийного монитора внутренне согласован, а отредактированный руками — зачастую нет.
Как клонировать или записать EDID
Конкретная утилита зависит от модели, а порядок шагов — нет.
- Подключите монитор напрямую к игровому ПК и убедитесь, что он работает в нужном режиме: если нет, дело не во фьюзере
- Пока монитор подключён напрямую, прочитайте и сохраните его EDID утилитой от производителя или стандартной программой для чтения EDID
- Соберите цепочку как положено: игровой ПК и второй ПК — во входы коробки, выход коробки — на монитор
- Если у модели есть режим passthrough или clone, сначала включите его и проверьте заново: это самый безопасный вариант, и его часто хватает
- Если такого режима нет или passthrough не помогает, запишите сохранённый блок средствами производителя. На нескольких моделях Dichen для этого служит сервисный порт USB-C, который используется только для обновления прошивки и записи EDID
- Перезапустите коробку по питанию и переподключите вход игрового ПК, чтобы сработал hot plug detect и EDID прочитался заново
- Проверьте режим в параметрах дисплея Windows, а затем явно выставьте частоту обновления, не полагаясь на значение по умолчанию
- Если вместо этого вы подменили EDID на стороне ПК через реестр, запишите это: подмена переживает смену кабелей и собьёт с толку при следующей диагностике
Что значит каждый симптом и как это исправить
Идите сверху вниз: первыми стоят причины, которые дешевле всего устранить.
| Симптом | Вероятная причина | Решение |
|---|---|---|
| Чёрный экран, монитор пишет «нет сигнала» | Корректный EDID не прочитан или hot plug detect так и не был выставлен, поэтому источнику не на что выводить картинку | Включите коробку раньше ПК и переподключите оба конца каждого кабеля, используя комплектные кабели. Затем включите на коробке EDID passthrough или запишите сохранённый блок |
| Картинка идёт в низком разрешении, и сменить его не получается | Цепочка отдаёт минимальный EDID, или число блоков расширения равно нулю, и высокие режимы не видны | Клонируйте в коробку родной EDID монитора. Если коробка не может его хранить, реальным ограничением может оказаться её собственный потолок |
| Разрешение правильное, но частота ниже возможностей матрицы | Либо в заявленном EDID нет этого тайминга, либо коробка действительно не может пропустить этот режим | Сначала проверьте заявленный потолок модели в ВАШЕМ разрешении. Никакие манипуляции с EDID не поднимут аппаратный потолок |
| Игровой ПК работает, а второй ПК не получает картинку, или наоборот | Два входа — это отдельные EDID-связки, и согласование прошло только на одной из них | Поменяйте местами кабели двух входов и посмотрите, уходит ли неисправность вместе с кабелем или остаётся на порту, а затем разбирайтесь с этим участком отдельно |
| Windows показывает дисплей с названием, совсем не похожим на ваш монитор | Вы видите собственный EDID-идентификатор коробки, а не матрицы | Для фьюзера без passthrough это нормально, и проблемой это становится, только если неверен ещё и список режимов |
| После подключения коробки цвета неправильные или блёклые | Цветность или заявленное цветовое пространство в отдаваемом EDID не совпадает с матрицей, либо не совпадают формат RGB/YCbCr и диапазон | Клонируйте EDID матрицы, затем проверьте в панели управления видеокарты выходной формат цвета и динамический диапазон |
| Всё работало, а после обновления Windows или драйвера видеокарты сломалось | Подмена EDID в реестре слетела, или драйвер заново провёл согласование и выбрал другой режим | Перепроверьте подмену, снова явно выставьте частоту обновления и перезапустите коробку по питанию, чтобы EDID прочитался заново |
Частые вопросы об EDID
Подмена EDID — это то же самое, что подмена идентификаторов железа?
Нет, хотя одно и то же слово (spoofing) действительно сбивает с толку. EDID описывает дисплей для графического выхода. Он не имеет никакого отношения ни к тому, за что выдаёт себя прошивка DMA-карты, ни к DNA ID, ни к HWID-спуферу, который подменяет серийные номера дисков и материнской платы.
Может ли неправильный EDID повредить монитор?
Современные матрицы отвергают тайминги, которые не могут показать, так что на практике вы получите чёрный экран или сообщение «вне диапазона» (Out of Range), а не поломку. Делайте изменения обратимыми и храните копию исходного блока.
Нужно ли клонировать EDID, если у фьюзера есть режим passthrough?
Обычно нет. Сначала попробуйте passthrough: он для того и существует, чтобы коробка отдавала реальные возможности матрицы без ручной работы.
Почему обычный HDMI-сплиттер вызывает те же симптомы?
Механизм тот же: любое устройство между источником и матрицей становится тем, кто отвечает на чтение EDID. Поэтому сплиттеры, свитчи и KVM дают ровно такие же жалобы на режимы и чёрный экран.
Влияет ли смена EDID на детект?
Нет. EDID — это согласование дисплея между графическим выходом и тем, что стоит после него, и античиту до этого нет дела. Никакие манипуляции с EDID не делают сборку безопасной.
Источники
Симптомы фьюзеров и шаги записи EDID средствами производителей взяты из нашей работы на стенде с этими коробками, а не из стандарта EDID.
- 01VESA E-EDID standard, release A2
базовый блок на 128 байт, смещения байтов из таблицы полей и дескрипторы детальных таймингов
glenwing.github.io
- 02EDID overview, Wikipedia
общие сведения об EDID, его блоках расширения и о том, как источник читает его по линиям DDC дисплея
en.wikipedia.org
Читать дальше
Не получилось? Откройте тикет в Discord
Все гайды