Эмулятор edid 4k сигналов hdmi с поддержкой hdr at etu sync
Мой телевизор («старая» модель LG 32LG5000) никогда не работал в Linux. Каждый раз, когда я подключал его через HDMI-порт, ядро сообщало мне ошибку:
и полностью игнорировало его.
Эта проблема меня не сильно-то и беспокоила, т.к. я не часто им пользовался, да и VGA-порт работал, хоть и с максимальным разрешением 1360×768. Однако сегодня, когда я решил посмотреть фильм, качество вывода через VGA было невероятно хреновым, и я решил с этим покончить.
Анализируем EDID
Структура EDID имеет версии от v1.0 до v1.4 размером в 128 байт, каждая последующая версия обратно совместима с предыдущей. Структура EDID v2.0 была размером 256 байт, однако позже была объявлена устаревшей и на замену ей пришла v1.3.
Похоже, EDID 2.0 был объявлен устаревшим где-то в 2000. Довольно забавно, что ТВ 2008 года использовал именно эту версию.
- Пропатчить ядро и убрать проверку версии. Это некрасиво, да и придется, как минимум, drm-модуль пересобирать с каждым обновлением ядра.
- Пропатчить EDID и заставить либо ядро, либо ТВ использовать его.
Получили EDID из i2c bus 3. Теперь посмотрим, что же там.
Убеждаемся, что это правильный EDID, по идентификатору модели. Видим EDID version 2.0, которую сообщает parse-edid, на что собственно ядро и ругается. Также можем видеть, что parse-edid нашел блок с таймингами и разрешениями, которые ТВ поддерживает. Теперь взглянем на RAW-данные:
EDID состоит из 2 секций, каждая размером по 128 байт (мы же помним, что это EDID 1.3, некорректно названый 2.0).
Первая секция основная, а вторая — дополнительная, EIA/CEA-861 extension block, которая содержит информацию о разрешениях и таймингах. Используя статью в Wikipedia понимаем, что байты по смещению 0x12 и 0x13 содержат версию EDID (0x02 и 0x00 в нашем случае), а смещение 0xf7f содержит контрольную сумму (0xf9).
Патчим EDID наживую
По идее, если мы заменим значения по смещению 0x12 и 0x13 на 0x01 и 0x03 соответственно и подправим контрольную сумму, мы получим правильный EDID. Это легко можно сделать в HEX-редакторе; контрольную сумму установим в 0x7f (сумма всех 128 байт по модулю 256 должна быть равна нулю).
Попробуем распарсить измененный EDID:
Теперь, когда у нас есть правильный EDID, нам нужно как-то попробовать записать его в телевизор (да и, похоже, есть люди, у которых это получалось). В Debian есть пакет i2c-tools, в котором есть утилиты i2cget для чтения и i2cset для записи в I²C-устройство. Вспомним, что get-edid читал из шины 3, а EDID находится по адресу 0x50, так что давайте попробуем прочитать наши байты напрямую:
Получилось! Невзирая на риск брикнуть (и так бесполезный) HDMI-порт, я решил перезаписать байты напрямую.
Внимание! Повторяйте это действие на свой страх и риск и только если понимаете возможные последствия. Вас предупреждали.
Никаких ошибок нет. Проверим, получилось ли:
Ага! У меня получилось выставить разрешение 1080p через xrandr. Похоже, изменение постоянное, так что не придется каждый раз перезаписывать байты при каждом выключении ТВ.
От переводчика: на этом ТВ матрица с разрешением 1366×768, поэтому не совсем понятно, откуда такое желание выставить 1920×1080, оно все равно через скейлер пойдет.
Для преодоления проблем, связанных с передачей EDID-данных, которые могут возникнуть при использовании с различным аудио/видео или KVM-оборудованием, таким как, удлинители, коммутаторы и разветвители (сплиттеры) компания ATEN выпустила эмулятор EDID для HDMI True 4K модели VC081.
Cигнал от источника для корректного отображения на мониторе (или ином другом устройстве отображения) должен соответствовать возможностям монитора по ряду важных параметров. Для этой цели в мониторе имеется EDID (Extended Display Identification Data) - стандартизованная информация о мониторе, передаваемая видеокарте источника сигнала в определенном формате. Данная информация передается по специальному каналу, именуемому DDC.
Если монитор напрямую (интерфейсным шнуром) подключен к источнику сигнала, никто не мешает корректно передать EDID. В такой ситуации система работает нормально. Но бывают ситуации, когда необходимо запустить источник без монитора, или между монитором и источником установлены компоненты сложной AV-системы, такие как коммутаторы, усилители и т.п., а служебный канал передачи данных (DDC - Display Data Channel) не работает. Для таких ситуаций компания ATEN предлагает использовать устройство эмулирующие прямое подключение средства отображения к источнику сигнала.
Изучая EDID-данные, выдаваемые HDMI-дисплеем и передавая их источнику видеосигнала, эмулятор VC081 может эффективно разрешать проблемы при процессе передачи видеоинформации, возникающие в случае неправильной синхронизации данных EDID между источником видеосигнала и HDMI-дисплеем. Кроме того, после завершения изучения EDID-данных дисплея, эмулятор VC081 может использоваться вместо монитора, чтобы поддерживать ПК или сервер в активном состоянии для получения к ним удаленного доступа по IP-соединению.
Эмулятор EDID для HDMI True 4K модели VC081 предназначен для преодоления проблем, связанных с передачей EDID-данных, которые могут возникнуть при использовании с различным аудио/видео или KVM-оборудованием, таким как, удлинителями, коммутаторами и разветвителями (сплиттерами). Изучая EDID-данные, выдаваемые HDMI-дисплеем и передавая их источнику видеосигнала, эмулятор VC081 может эффективно разрешать проблемы при процессе передачи видеоинформации, возникающие в случае неправильной синхронизации данных EDID между источником видеосигнала и HDMI-дисплеем. Кроме того, после завершения изучения EDID-данных дисплея, эмулятор VC081 может использоваться вместо монитора, чтобы поддерживать ПК или сервер в активном состоянии для получения к ним удаленного доступа по IP-соединению.
В своем применении эмулятор VC081 является идеальным продуктом при монтаже кабельных соединений на транспортных станциях и в торговых центрах.
Комплектация
- 1x эмулятор EDID для HDMI True 4K VC081
- 1x руководство пользователя
- Управляет процессом передачи EDID-данных между подключенными устройствами
- Эффективно изучает EDID-данные HDMI-дисплея и передает их источнику видеосигнала
- Совместим с HDMI 2.0 (3D, Deep Color, True 4K) и HDCP 2.2
- Превосходное качество изображения - до True 4K (3840 x 2160 при 60 Гц 4:4:4)
- Наличие светодиодных индикаторов для отображения состояния устройства
- Питание от HDMI-источника
- Компактный и облегченный дизайн
Светодиодные индикаторы | |
Питание | Состояние питания (1 х зеленого цвета) |
Состояние | Обучение (1 х синего цвета) |
Видеовход | |
Интерфейсы | 1 x разъем HDMI тип А |
Импеданс | 100 Ω |
Видеовыход | |
Интерфейсы | 1 x гнездо HDMI тип А (черного цвета) |
Импеданс | 100 Ω |
Видео | |
Соответствие | HDMI 2.0 (3D, Deep Color) Совместимость с HDCP 2.2 Consumer Electronic Control (CEC) |
Параметры EDID | Режимы EDID: По-умолчанию (Default) / Обучение (Learning) |
Разъемы | |
Питание | Питание от шины (5В постоянного тока от устройства-источника) |
Энергопотребление | DC5V:0.1W:0.4BTU |
Температура и влажность | |
Рабочая температура | 0 - 50 ºC |
Температура хранения | -20 - 60 ºC |
Влажность | 0 - 80% рт. ст. без образования конденсата |
Физические свойства | |
Корпус | Пластмассовый (АБС-пластик) |
Масса | 0.08 kg ( 0.18 lb ) |
Размеры (Д х Ш х В) | 4.40 x 2.40 x 1.18 cm (1.73 x 0.94 x 0.46 in.) |
Картонная упаковка | 20 штук |
Примечание | Обратите внимание, что для некоторых изделий монтируемых стойку, физические размеры (ШxГxВ) выражаются в формате (ДxШxВ). |
Описание и спецификации продукта
Краткое руководство по установке
На веб-сайте нашего партнерского центра (e-service) зарегистрируйте устройство KE. После этого вы можете бесплатно загрузить приложение Matrix Manager Lite.
Мой телевизор («старая» модель LG 32LG5000) никогда не работал в Linux. Каждый раз, когда я подключал его через HDMI-порт, ядро сообщало мне ошибку:
и полностью игнорировало его.
Эта проблема меня не сильно-то и беспокоила, т.к. я не часто им пользовался, да и VGA-порт работал, хоть и с максимальным разрешением 1360×768. Однако сегодня, когда я решил посмотреть фильм, качество вывода через VGA было невероятно хреновым, и я решил с этим покончить.
Анализируем EDID
Структура EDID имеет версии от v1.0 до v1.4 размером в 128 байт, каждая последующая версия обратно совместима с предыдущей. Структура EDID v2.0 была размером 256 байт, однако позже была объявлена устаревшей и на замену ей пришла v1.3.
Похоже, EDID 2.0 был объявлен устаревшим где-то в 2000. Довольно забавно, что ТВ 2008 года использовал именно эту версию.
- Пропатчить ядро и убрать проверку версии. Это некрасиво, да и придется, как минимум, drm-модуль пересобирать с каждым обновлением ядра.
- Пропатчить EDID и заставить либо ядро, либо ТВ использовать его.
Получили EDID из i2c bus 3. Теперь посмотрим, что же там.
Убеждаемся, что это правильный EDID, по идентификатору модели. Видим EDID version 2.0, которую сообщает parse-edid, на что собственно ядро и ругается. Также можем видеть, что parse-edid нашел блок с таймингами и разрешениями, которые ТВ поддерживает. Теперь взглянем на RAW-данные:
EDID состоит из 2 секций, каждая размером по 128 байт (мы же помним, что это EDID 1.3, некорректно названый 2.0).
Первая секция основная, а вторая — дополнительная, EIA/CEA-861 extension block, которая содержит информацию о разрешениях и таймингах. Используя статью в Wikipedia понимаем, что байты по смещению 0x12 и 0x13 содержат версию EDID (0x02 и 0x00 в нашем случае), а смещение 0xf7f содержит контрольную сумму (0xf9).
Патчим EDID наживую
По идее, если мы заменим значения по смещению 0x12 и 0x13 на 0x01 и 0x03 соответственно и подправим контрольную сумму, мы получим правильный EDID. Это легко можно сделать в HEX-редакторе; контрольную сумму установим в 0x7f (сумма всех 128 байт по модулю 256 должна быть равна нулю).
Попробуем распарсить измененный EDID:
Теперь, когда у нас есть правильный EDID, нам нужно как-то попробовать записать его в телевизор (да и, похоже, есть люди, у которых это получалось). В Debian есть пакет i2c-tools, в котором есть утилиты i2cget для чтения и i2cset для записи в I²C-устройство. Вспомним, что get-edid читал из шины 3, а EDID находится по адресу 0x50, так что давайте попробуем прочитать наши байты напрямую:
Получилось! Невзирая на риск брикнуть (и так бесполезный) HDMI-порт, я решил перезаписать байты напрямую.
Внимание! Повторяйте это действие на свой страх и риск и только если понимаете возможные последствия. Вас предупреждали.
Никаких ошибок нет. Проверим, получилось ли:
Ага! У меня получилось выставить разрешение 1080p через xrandr. Похоже, изменение постоянное, так что не придется каждый раз перезаписывать байты при каждом выключении ТВ.
От переводчика: на этом ТВ матрица с разрешением 1366×768, поэтому не совсем понятно, откуда такое желание выставить 1920×1080, оно все равно через скейлер пойдет.
EDID — Extended Display Identification Data (EDID), это расширенные данные идентификации дисплея. Эта информация передаётся монитором или телевизором на устройство которое генерирует видео сигнал. EDID передается по HDMI портом, Display Port и другим цифровым портам. Необходима двум устройствам для правильного создания (кодирования видео) и правильного отображения (декодирования видео).
Зачем применяется EDID и как работает
Рассмотрим ситуацию у вас есть ноутбук с разрешением Full HD, вы подключаете его к телевизору с разрешением 4K (UHD). В итоге вы получаете прекрасное изображение на экране телевизора. Если вы зайдёте в меню настроек дисплея в компьютере вы увидите, что ваш телевизор определён как устройство с разрешением UHD. Вот для этого и нужно EDID. При подключении ноутбука к телевизору по HDMI, от телевизора на компьютер передана информация о том какое разрешение экрана поддерживается телевизором, кроме того какая частота кадров может быть обработана дисплеем . Компьютер адаптирует передаваемое изображение к возможностям монитора или телевизора.
Если бы EDID не использовался, то на телевизоре вы бы получили небольшое изображение посередине экрана и вам бы пришлось вручную менять настройки .
Какая информация передается EDID
На самом деле информации передаётся очень много, но основная информация, это следующие данные:
- разрешение экрана,
- поддерживаемая глубина цвета, это нужно для правильной цветопередачи
- поддерживаемое разрешение и частота кадров монитором, телевизором
- соотношение сторон дисплея
- время обработки дисплем информации и вывода на экран, это нужно для синхронизации звука и изображения.
- Поддерживаемый формат звука, например если телевизор поддерживает только формат 2.0CH, то зачем компьютеру передавать в формате 5.1
Версии EDID
В зависимости от года выпуска телевизора или монитора, поддерживаемая версия EDID может быть, v1.0-v1.4, v2.0, v3.0 и другие модификации. В мониторе или телевизоре информация записывается производителем в соответствующем стандарте и не может быть изменена пользователем.
Эмуляторы EDID
Иногда возникают ситуации когда вам нужно настроить несколько экранов для работы с вашим компьютером. Например вы подключаете два монитора и на каждом выводите необходимую вам информацию. Но когда вы выключите один из мониторов операционная система отреагирует на это и изменить настройки системы. Что бы компьютер не реагировал на отключения монитра, можно использовать эмулятор EDID, включив монитор через эмулятор вы можете включать или отключать монитор без необходимости настройки компьютера.
Читайте также: