Драйвер дисплея отображает призрачные пиксели в Linux, но не в Windows.

Вопрос или проблема

Недавно я купил LCD-панель для устройства отображения на Raspberry Pi, которое я создаю. Raspberry Pi выводит HDMI-видео на драйвер дисплея для панели. Он выводит 1366x768 @ 60hz.

Проблема в том, что примерно на 800 пикселей слева появляется странный оранжево-синий эффект размытости, а затем экран полностью повторяет последние 50-100 пикселей. Это также происходит, когда я пытаюсь использовать его в качестве второго монитора на своем ноутбуке с Ubuntu. Когда я использую его как второй монитор на Windows, этой проблемы не возникает, хотя в Windows также указано, что выводится 1366x768 @ 60hz. Вот изображение:

Проблема с экраном

Секция с магентовым квадратом вокруг нее — это место, где наблюдается размытость оранжевого и синего. Секция с циановым квадратом — это место, где полностью повторяется конец изображения экрана (обратите внимание на два X в верхнем правом углу окна просмотра изображений). Кто-нибудь когда-либо видел что-то подобное? Что Windows отправляет на драйвер дисплея, чего не делают операционные системы Linux?

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

Пример из источника 2 для Linux devicetree.dts:

/* MXC frame buffer on HDMI, RGB24, разрешение 1920x1080 на 60MHz, 32 бита на цвет, использовать внутренние часы как pixclk */
/* (c) 2020 Digi International Inc. Все права защищены. */
mxcfb1: fb@0 {
    совместимый = "fsl,mxc_sdc_fb";
    disp_dev = "hdmi";
    interface_pix_fmt = "RGB24";
    mode_str ="1920x1080M@60";
    default_bpp = <32>;
    int_clk = <0>;
    late_init = <0>;
    status = "okay";
};

Пример из источника 1 для нового Pi config.txt:

# Устанавливает разрешение дисплея 800x480 на 60Hz для обоих HDMI-портов с конкретными параметрами времени
# (c) 2024 Newhaven Display International. Все права защищены.
[HDMI:0]
hdmi_timings=800 0 40 24 72 480 0 13 3 29 0 0 0 60 0 32000000 6
[HDMI:1]
hdmi_timings=800 0 40 24 72 480 0 13 3 29 0 0 0 60 0 32000000 6

Ответ или решение

Проблема с «призраками» пикселей на дисплее: Анализ на Linux и Windows

Введение

Недавно вы приобрели LCD-панель для вашего проекта на базе Raspberry Pi, и вы столкнулись с проблемой отображения пикселей. Ваше устройство выводит изображение через HDMI при разрешении 1366×768 и частоте 60 Гц. Однако вы заметили неоднородности в отображении на Linux, которые не появляются в Windows. В этой статье мы подробно рассмотрим возможные причины проблемы и методы их решения.

Описание проблемы

Проблема проявляется в виде «призраков» различных цветов на экране, а также повторения изображения на краевых участках. Ваша платформа на Linux испытывает это поведение как при подключении к отдельному дисплею, так и при использовании в качестве второго монитора на ноутбуке. Однако переход к Windows устраняет эти артефакты, что указывает на наличие различий в передаваемых данных между двумя операционными системами.

Возможные причины проблемы

  1. Необходимые настройки дисплея:

    • Дисплеям может требоваться точная настройка временных параметров, чтобы избежать графических артефактов. Windows, возможно, адаптирует эти параметры автоматически, чего может не происходить на Linux.
    • Проверьте и измените config.txt для Raspberry Pi, установив пользовательские временные параметры HDMI. Пример настройки:
      hdmi_timings=1366 0 40 24 72 768 0 13 3 29 0 0 0 60 0 32000000 6
  2. Обновления и драйвера:

    • Убедитесь, что у вас установлены все последние обновления для вашего дистрибутива Linux, особенно в отношении графических драйверов. Неправильно работающие или устаревшие драйвера могут приводить к визуальным сбоям.
    • Проверьте, используете ли вы проприетарные драйвера или открытые графические драйвера, такие как Nouveau для NVIDIA.
  3. Установка параметров устройства:

    • В зависимости от используемого драйвера в Linux вы можете настроить параметры устройства, используя файл device tree (dts). Образец настройки может выглядеть так:
      mxcfb1: fb@0 {
       compatible = "fsl,mxc_sdc_fb";
       disp_dev = "hdmi";
       interface_pix_fmt = "RGB24";
       mode_str ="1366x768M@60";
       default_bpp = <32>;
       int_clk = <0>;
       late_init = <0>;
       status = "okay";
      };
  4. Глубина цвета и частота обновления:

    • Хотя и Linux, и Windows показывают одинаковое разрешение и частоту обновления, может возникнуть путаница из-за глубины цвета, что также может повлиять на корректное отображение. Убедитесь, что параметры bpp (bits per pixel) совпадают в обоих системах.

Заключение

Представленная проблема с дисплеем, вызванная «призраками» пикселей, может иметь несколько причин — от неправильных временных настроек до несовместимости драйверов и параметров оборудования. Рассмотренные шаги по Diagnostics и корректировке конфигурации могут помочь устранить артефакты при работе на Linux. Настройка HDMI и использование правильных драйверов, а также глубокая проверка конфигураций и параметров устройства значительно увеличат шансы на успешное разрешение проблемы.

Если проблема все еще сохраняется после выполнения всех шагов, может быть полезно обратиться к сообществу Raspberry Pi или форумам поддержки для дальнейшего анализа.

Оцените материал
Добавить комментарий

Капча загружается...