- Как получить EDID для одного монитора?
- Ведущий № 1: монитор-Edid
- Ведущий № 2: ddcontrol
- Ведущий № 3: / sys
- Ссылки
- Help Linux — найди себе Гуру
- linux and opensource
- Управление
- Blogroll
- Community
- PS: В процессе настройки каждый раз смотрите лог X-Window на предмет validated modes. Он подскажет где вы ошибаетесь.
- PPS: Для видео-драйвера nvidia: иногда нужно отключить использование EDID.
- Как вы узнаете производителя /модель экрана для экрана ноутбука с Linux? (Samsung, LG, Chi Mei и т. Д.)
- 5 ответов
- Как узнать марку / модель монитора?
- 5 ответов
- Патчим EDID телевизора из-под Linux
- Анализируем EDID
- Патчим EDID наживую
Как получить EDID для одного монитора?
В ожидании ответа на xrandr обнаружение усилителя в качестве монитора возможный обходной путь — занести в черный список устройства с определенными значениями EDID . К сожалению, xrandr —verbose печатает все в формате, который является громоздким для анализа и не поддерживает запросы к отдельным устройствам, и get-edid выходные данные, кажется, не легко сопоставить xrandr с идентификаторами монитора (например DVI-1 ).
Есть ли способ получить легко разбираемый EDID для одного монитора?
Ведущий № 1: монитор-Edid
Я не особо разбираюсь в EDID и мониторах, но я нашел этот инструмент, monitor-edid который может быть полезен и здесь.
Простите, если это не так, я пытаюсь узнать больше об этом пространстве, учитывая множество вопросов, которые вы задаете по этой теме.
Ведущий № 2: ddcontrol
Был еще один инструмент, который я нашел ddccontrol , который может помочь в получении информации, которую вы ищете.
Ведущий № 3: / sys
Наконец, пробираясь, /sys я заметил, что на различных видеоинтерфейсах свисали листовые узлы.
Однако на моем ноутбуке Lenovo эти «файлы» были пустыми, возможно, они другие в вашей системе. Я нашел эту ветку форума, которая показала пример выходных данных из VGA EDID.
Ссылки
Вывод xrandr —props содержит шестнадцатеричные строки EDID для каждого подключенного дисплея менее подробным способом. Вот простой скрипт Python, использующий это для получения EDID для конкретного подключенного монитора.
Я не нашел других дистрибутивных инструментов CLI, которые бы работали для извлечения EDID в моей системе на базе NVidia, но большинство инструментов для анализа двоичного EDID, похоже, работают нормально.
Если вы используете x86 или powerpc arch, вы можете использовать read-edid . На Debian это доступно здесь .
Использование просто (вам нужно быть пользователем root):
а затем проанализировать структуру:
Часто это объединяется в:
Смотрите также здесь о том, как передать этот пользовательский файл edid на вашу графическую карту, используя либо:
- CustomEDID или,
- drm_kms_helper.edid_firmare
Последняя версия инструмента под названием edid-decode может анализировать информацию EDID, а также может читать и записывать текстовые и двоичные файлы EDID. Хорошо работает на выходе xrandr —verbose . Например, его можно использовать для сохранения EDID в двоичном файле:
Версия edid-decode, поставляемая с Fedora 27 (package: xorg-x11-utils), слишком старая и не работает идеально. Я использовал самую последнюю версию .
В двоичном виде EDID доступен по адресу /sys/class/drm/card%d-%s/edid , где %d представляет индекс устройства DRM (возможно, индекс GPU) и %s представляет собой идентификатор соединителя, который вы видите в xrandr выходных данных.
Чтобы просмотреть все доступные, запустите ls -1 /sys/class/drm/*/edid
Если ваш драйвер GPU не поддерживает DRM, вы не сможете получить EDID таким образом.
Чтобы просмотреть в шестнадцатеричном виде, бегите hexdump по нему.
Если вы хотите удобочитаемую форму, передайте ее edid-decode , например:
(вам может понадобиться установить его, используя менеджер пакетов, sudo apt install edid-decode для Ubuntu)
Источник
Help Linux — найди себе Гуру
linux and opensource
Управление
Blogroll
Community
Q: Почему нужное разрешение экрана может отсутствовать в списке доступных?
A: Потому, что операционная система не знает о том, что монитор поддерживает нужный нам режим.
Q: Откуда система может об этому узнать?
A: Она может узнать об этом из EDID или же мы можем сами ей об этом рассказать
Q: Что такое EDID?
A: EDID (Extended display identification data — расширенные данные идентификации монитора) — блок информации, получаемый от монитора по каналу DDC (Display_Data_Channel) через видеокарту, позволяющий корректно определить допустимые видеорежимы. В некоторых случаях эта информация считывается драйвером неправильно или не считывается вовсе, в этом случае система будет использовать режимы, которые она считает безопасными для данного монитора.
Q: Как посмотреть информацию EDID получаемую от монитора?
A: Для Ubuntu
- Из пакета read-edid: sudo get-edid|parse-edid
- Из пакета xresprobe: sudo ddcprobe
- Если первые два способа не дали положительный результат попробуйте поправить кабель монитора и повторить
- Если и 3-й способ не помог ищите информацию о своём мониторе в документации или в Google (вам нужны в первую очередь горизонтальная (HorizSync) и вертикальная (VertRefresh) частоты развёртки, а во вторую рекомендуемый режим, например 1024×768@75Hz)
Q: И как всё же решить проблему с разрешением и частотой экрана?
A: Для этого нужно рассказать X-Window (Xorg) что умеет ваш монитор на самом деле (какие видеорежимы поддерживает) выполняя следующие настройки в xorg.conf (/etc/X11/xorg.conf). После каждой добавленной строки перезапускайте X-Window (для Ubuntu screen sudo /etc/init.d/gdm restart) пока не добьётесь нужного результата:
- Для начала проверяем присутствие разрешение в списке Modes, если его там нет — дописываем, перезапускаем X-Window и проверяем, это выглядит примерно так:
- Если результата нет, вписываем в секцию Monitor параметры HorizSync и VertRefresh и перезапускаем X-Window. Эти параметры для вашего монитора можно узнать с помощью вышеописанных утилит или найти в интернет, например:
- Если это не помогло, оставляем эти строки и дописываем новую — Modeline. Получаем строку Modeline воспользовавшись утилитой gtf и паспортными данными монитора. После этого помещаем её в секцию Monitor и ссылку этот новый режим в секцию Screen, например:
- Если вы подключаете монитор по DVI и используете драйвер nvidia, то поиск решения нужно начинать с опции «ModeValidation» «NoMaxPClkCheck» в секции Device (с другими драйверами не проверялось):
PS: В процессе настройки каждый раз смотрите лог X-Window на предмет validated modes. Он подскажет где вы ошибаетесь.
PPS: Для видео-драйвера nvidia: иногда нужно отключить использование EDID.
В том случае, если информацию EDID система получает, но неправильно, то перечисленное выше может не работать и нужно принудительно отключить использование EDID, а после этого повторить все этапы снова.
Источник
Как вы узнаете производителя /модель экрана для экрана ноутбука с Linux? (Samsung, LG, Chi Mei и т. Д.)
Как вы узнаете производителя /модель экрана для экрана ноутбука с Linux? (Samsung, LG, Chi Mei и т. Д.) + Номер модели?
Я пробовал использовать эту команду «lshw» в Ubuntu, но, похоже, там не указана панель.
5 ответов
Используйте любую утилиту, отображающую информацию EDID. Одно место для поиска этой информации находится в /var/log/Xorg.0.log
Моя информация не отображалась в XOrg.log. Но я понял, что могу получить информацию от подкомпонента DRM (Direct Rendering Manager) ядра linux, который отображается в sysfs. Поэтому я сделал следующее:
Вы можете выяснить, какие экраны активны, сделав здесь несколько пробных событий:
Затем я проанализировал информацию EDID с экранов, которые меня интересовали следующим образом:
Используется read-edid , чтобы получить эту информацию на Ubuntu 14.04.
Сотрясание /sys /class /drm /card0 оказалось простым вариантом.
В Fedora Core вы можете установить monitor-edid ( read-edid , похоже, доступен только для Ubuntu — я предлагаю добавить информацию Fedora здесь, так как этот форум не является askubuntu , но superuser ).
Он выводит EISA ID , с помощью которого вы можете найти информацию о поставщике и устройстве в Интернете.
Я нашел два инструмента для Linux Mint 18.1, которые дают разные результаты. Сначала я попробовал read-edid:
С этим я получил следующее, но не нашел номер модели:
Итак, я попробовал другой инструмент для анализа EDID:
Это, казалось, дало больше информации о модели панели:
Источник
Как узнать марку / модель монитора?
Мой друг недавно купил подержанный автомобиль с автомобильным компьютером, и он подключен к сенсорному монитору на приборной панели (очень впечатляет!).
Теперь я помог ему установить Ubuntu на нем сегодня, но мы не можем установить марку и модель подключенного монитора с сенсорным экраном, чтобы попытаться найти драйверы для работы функции сенсорного экрана.
Существуют ли какие-либо команды Linux для определения марки / модели подключенного монитора? Я пробовал Google, который указал мне на /etc/X11 каталог, но не было радости с этим.
5 ответов
lshw или же sudo lshw будет работать лучше чем lspci ,
Я могу увидеть марку и модель моего монитора в /var/log/Xorg.0.log , Однако он выводится видеодрайвером, поэтому я не уверен, что он универсален:
[ 26.795] (II) RADEON(0): Monitor name: DELL U2412M
Если это не работает, установите edid-decode и укажите его /sys/class/drm/*/edid поскольку его руководство предлагает:
Установить пакет read-edid и используйте команду:
В моей системе соответствующий вывод:
«SAM» — это код «Samsung», который можно найти по http://edid.tv/manufacturer/.
Ваш монитор должен быть там где-то указан.
Что-то вроде этого должно работать лучше (все остальные ответы здесь не работали на 100%):
Я тестировал здесь с двумя мониторами. Мой основной — это встроенный монитор ноутбука, а вторичный — DELL 25″. Это был результат:
Вы должны были установить edid-decode в вашем дистрибутиве. Моя установка — DELL Latitude e5450 с Ubuntu 20.04.
Сам искал ответ на Fedora. Это даст вам длинный список для всех вопросов, связанных с видео:
Найдите строку EDID и скопируйте / вставьте ее в файл, например, monitor.txt (возможно, есть лучший способ.) Затем используйте:
чтобы получить всю информацию о вашем мониторе из строки EDID.
Если у вас есть только один монитор, вы можете сделать что-то вроде:
Источник
Патчим EDID телевизора из-под Linux
Мой телевизор («старая» модель 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 года использовал именно эту версию.
После непродолжительного гуглинга, я нашел сообщения об ошибке EDID в этой модели, и что на самом деле это EDID 1.3. Я попробовал обновить прошивку на последнюю версию, однако это никак не помогло. Итак, у меня было два выхода:
- Пропатчить ядро и убрать проверку версии. Это некрасиво, да и придется, как минимум, drm-модуль пересобирать с каждым обновлением ядра.
- Пропатчить EDID и заставить либо ядро, либо ТВ использовать его.
Я жаждил приключений, поэтому выбрал второе. Загружаем модуль i2c-dev получаем прямой i2c доступ к EDID, используем get-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, оно все равно через скейлер пойдет.
Источник