LINUX.ORG.RU

Проблема с выводом изображения по HDMI на сенсорный экран Waveshare

 , ,


0

1

Всем привет ещё раз. Появилась возможность подробней повозиться с проблемным экраном из созданной мною ранее темы Система не выводит изображение на заведомо рабочий экран, что с X-сервером, что без

Итак. Есть мини-компьютер на проце intel и соответствующей встроенной графике. На нём не удаётся запустить сенсорный экран, подключенный по HDMI. Выглядит это следующим образом – система видит экран, утверждает, что он подключен/активен, при этом экран находится в режиме ожидания (т.е. спит и изображения на нём нет). В магазине, где был приобретён экран, ответили «у нас на raspberry pi всё работает». При этом другой экземпляр вроде как того же самого экрана вполне себе работает (сейчас уехал в составе оборудования и не доступен).

Что испробовано на мини-компьютере: live-cd Debian с различными окружениями (KDE, Gnome, XFCE, LXQT), устанавливались для более вдумчивых экспериментов Raspbian, и Debian с XFCE, а потом с KDE. Пробовал писать свой xorg.conf, по Xorg.0.log он успешно применялся, modeline’ы подхватывались и всё такое. Пробовал манипулировать экраном через xrandr – не выходит из ждущего режима. Пробовал тестировать через modetest, безрезультатно, программа не выдаёт ошибок, экран не выходит из ждущего режима.

Если воткнуть другой монитор в HDMI-выход мини-компьютера, всё ок, тем же modetest’ом цветные полосы рисует.

При этом, на моём рабочем компе стоит Debian с KDE и на нём включить проблемный экран таки удаётся. При включении компа экран включается, показывает некое лого (что обычно перед приглашением зайти в BIOS показывается), а потом уходит в режим ожидания. После того, как комп загрузился и выполнен вход в KDE, если передёрнуть его через KDE’шную утилиту настройки экранов (сделать ему disable, а потом снова enable), экран включается, на нём появляется изображение, т.е. он начинает работать, modetest’ом цветные полосы рисует и всё такое. Таким образом, экран включается и выводит изображение до старта ОС и в самой ОС, если его «дёрнуть». Разные кабеля HDMI тоже пробовал, никакой разницы.

На обоих компах один и тот же видеодрайвер lshw -c video – i915.

На обоих компах глянул логи Xorg.0.log, имеются отличия, в них ли дело или нет, не знаю, может тут кто подскажет. От использования собственного xorg.conf отказался, раз уж не помогло.

Логи Xorg.0.log с обоих компов приложу в комментарии, здесь же прилагаю строки, которые есть на рабочем компе, где оно заводится, при этом этих строк нет на мини-компе, где не работает.

[    14.825] (II) modeset(0): EDID vendor "HOT", prod id 13363
[    14.825] (II) modeset(0): Using EDID range info for horizontal sync
[    14.825] (II) modeset(0): Using EDID range info for vertical refresh
[    14.825] (II) modeset(0): Printing DDC gathered Modelines:
[    14.825] (II) modeset(0): Modeline "320x1480"x0.0   48.00  320 420 430 520  1480 1540 1550 1556 -hsync -vsync (92.3 kHz eP)
[    14.825] (WW) modeset(0): Output HDMI-1: Strange aspect ratio (320/1480), consider adding a quirk
[    14.825] (WW) modeset(0): Output HDMI-1: Strange aspect ratio (320/1480), consider adding a quirk
[    14.825] (WW) modeset(0): Output HDMI-1: Strange aspect ratio (320/1480), consider adding a quirk
[    14.825] (WW) modeset(0): Output HDMI-1: Strange aspect ratio (320/1480), consider adding a quirk
[    14.825] (WW) modeset(0): Output HDMI-1: Strange aspect ratio (320/1480), consider adding a quirk
[    14.825] (WW) modeset(0): Output HDMI-1: Strange aspect ratio (320/1480), consider adding a quirk
[    14.851] (--) modeset(0): HDMI max TMDS frequency 330000KHz
[    15.542] (II) modeset(0): EDID vendor "HOT", prod id 13363
[    15.542] (II) modeset(0): Using hsync ranges from config file
[    15.542] (II) modeset(0): Using vrefresh ranges from config file
[    15.542] (II) modeset(0): Printing DDC gathered Modelines:
[    15.542] (II) modeset(0): Modeline "320x1480"x0.0   48.00  320 420 430 520  1480 1540 1550 1556 -hsync -vsync (92.3 kHz eP)
[    15.542] (WW) modeset(0): Output HDMI-1: Strange aspect ratio (320/1480), consider adding a quirk
[    15.542] (WW) modeset(0): Output HDMI-1: Strange aspect ratio (320/1480), consider adding a quirk
[    15.542] (WW) modeset(0): Output HDMI-1: Strange aspect ratio (320/1480), consider adding a quirk
[    15.542] (WW) modeset(0): Output HDMI-1: Strange aspect ratio (320/1480), consider adding a quirk
[    15.542] (WW) modeset(0): Output HDMI-1: Strange aspect ratio (320/1480), consider adding a quirk
[    15.542] (WW) modeset(0): Output HDMI-1: Strange aspect ratio (320/1480), consider adding a quirk
[    15.568] (--) modeset(0): HDMI max TMDS frequency 330000KHz
[   126.263] (II) modeset(0): Allocate new frame buffer 2560x1440 stride
[   131.182] (II) modeset(0): Allocate new frame buffer 2880x1480 stride

Может дело в том, что «комп, где не работает» не отправляет некие команды на включение экрана или типа того (почему он этого не делает?)? Есть ли вообще способ отладить служебную информацию, которой комп обменивается по HDMI с экраном? Если даже при включении компа до показа приглашения войти в биос, он выводит лого на проблемном экране, явно чего-то совсем тупого не хватает, понять бы, с какого перепугу послать это «тупое» операционка не может, как и включить экран.

Вот ещё какой момент вспомнился. Если стартануть мини-комп с рабочим экраном, дождаться загрузки и вывода моей приложухи на него, а потом «на горячую» заменить рабочий экран на проблемный, то всё продолжает работать как ни в чём не бывало – изображение на проблемном экране появляется. Таким образом, полагаю, что проблема кроется во взаимодействии ОС и экрана, может какие команды для инициализации она ему не шлёт или что-то в этом роде.



Последнее исправление: s3rjke (всего исправлений: 2)

К сожалению, упрятывание под спойлер в комментарии не работает, поэтому прилагаю сылки.

Xorg.0.log с мини-компа, где «не работает»: https://pastebin.com/19r8dJeK

Xorg.0.log с рабочего компа, где «передёрнув, работает»: https://pastebin.com/i7hKi9cE

s3rjke
() автор топика

Судя по всему, толковые парни из Китая зашили кривой EDID в экран. Впрочем, тут и к пингвину вопросы, почему оффтопик может с этим работать, а пингвин отказывается.

Скачал EDID к себе на комп, попробовал поправить те поля, которые явно кривые, эффекта оно не дало.

В итоге, когда вернулся «рабочий» экран, слил дамп EDID с него и принудительно подсовываю его в параметрах ядра (через настройки GRUB). И «косячный» экран с EDID'ом от «рабочего» таки запускается, когда загрузка доходит до приглашения входа в систему. Не всё так просто, например, на «рабочем» экране пингвин успешно выводит лог загрузки, «косячный» же, как я и сказал, включается только к появлению экрана приглашения.

Если сравнивать два EDID'а, то с дилетантской точки зрения различий там не много: буквально несколько полей типа Pixel clock, H-Blank pix и всякое в таком духе. Ещё такой момент, что «косячный» по EDID'у выпущен раньше «рабочего», так что может быть «рабочий» экземпляр это некая исправленная версия.

s3rjke
() автор топика