Второй монитор не просыпается после перехода в режим ожидания (без раздражающего обходного решения)

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

Фон

У меня была эта проблема таким или иным образом уже долгое время (годы), и в нескольких конфигурациях. Я обновлял драйвер и ядро несколько раз, и сейчас я действительно не знаю, где искать причину.

Похоже, что это какая-то гонка состояний, при которой если один монитор “готов” раньше другого, то другой просто показывает “Нет сигнала”, несмотря на то, что xrandr (и i3) думают, что он подключен и должен работать.

Старая конфигурация

  • Один 4K монитор
  • Один 1080p монитор

Поведение: Оба монитора уходят в спящий режим (из-за бездействия), и при перемещении мыши только один из них (1080p монитор) правильно просыпается. Другой просыпается через несколько секунд, но затем показывает “Нет сигнала”.

Временное решение:

  • Запустите xrandr.sh (старая версия, новая версия ниже)
    • Не могу точно сказать, нужно ли было делать что-то еще, чтобы это заработало (весь процесс стал более-менее мышечной памятью…)

Новая конфигурация

  • Один 4K монитор (такой же, как в предыдущей конфигурации)
  • Один 4K монитор (новый)

Поведение: Похожее поведение, но теперь оно касается нового монитора. Старый работает отлично (так же, как старый 1080p монитор).

Временное решение 1 (не забыть разбудить монитор первым):

  • (перед пробуждением экранов, двигая мышь/клавиатуру) Разбудите “медленный” экран, используя кнопки меню на мониторе
  • Когда монитор завершил выход из сна и показывает элементы меню, переместите мышь/клавиатуру, чтобы разбудить мониторы.
  • Оба монитора работают корректно!

Временное решение 2 (забывая разбудить монитор первым):

  • (двигайте мышь/клавиатуру) Оба монитора просыпаются. Один работает корректно, другой требует больше времени для пробуждения из сна и затем просто показывает “Нет сигнала”.
  • Запустите xrandr --output HDMI-0 --off, что отправляет монитор обратно в режим ожидания.
  • Примените временное решение 1.
  • Оба монитора работают корректно!

Детали

Версия драйвера Nvidia (из репозиториев Arch): 455.45.01-6

$ lspci | grep NV
01:00.0 VGA совместимый контроллер: NVIDIA Corporation GP104 [GeForce GTX 1070] (rev a1)
01:00.1 Аудиоустройство: NVIDIA Corporation GP104 Высококачественный аудиоконтроллер (rev a1)
$ xrandr
Экран 0: минимум 8 x 8, текущий 7680 x 2160, максимальный 32767 x 32767
DVI-D-0 отключен (нормальный левый перевернутый правый ось x ось y)
HDMI-0 подключен первичный 3840x2160+0+0 (нормальный левый перевернутый правый ось x ось y) 621mm x 341mm
   3840x2160     60.00*+  59.94    50.00    30.00    29.97    25.00    23.98    23.98
   2560x1600     59.97
   2560x1440     59.95
   1920x1080     60.00    59.94    50.00    60.00    50.04
   1680x1050     59.95
   1440x900      59.89
   1440x576      50.00
   1440x480      59.94
   1280x1024     75.02    60.02
   1280x960      60.00
   1280x800      59.81
   1280x720      60.00    59.94    50.00
   1024x768      75.03    70.07    60.00
   800x600       75.00    72.19    60.32    56.25
   720x576       50.00
   720x480       59.94
   640x480       75.00    72.81    59.94
   640x350       70.07
DP-0 отключен (нормальный левый перевернутый правый ось x ось y)
DP-1 подключен 3840x2160+3840+0 (нормальный левый перевернутый правый ось x ось y) 1280mm x 720mm
   4096x2160     29.97 +  25.00    24.00    23.98
   3840x2160     29.97*   25.00    23.98    23.98
   1920x1080     60.00    59.94    50.00    29.97    25.00    23.98    60.00    50.04
   1280x1024     60.02
   1280x720      59.94    50.00
   1024x768      60.00
   800x600       60.32
   720x576       50.00
   720x480       59.94
   640x480       59.95    59.93    59.94
DP-2 отключен (нормальный левый перевернутый правый ось x ось y)
DP-3 отключен (нормальный левый перевернутый правый ось x ось y)
DP-4 отключен (нормальный левый перевернутый правый ось x ось y)
DP-5 отключен (нормальный левый перевернутый правый ось x ось y)

dmesg не показывает ничего необычного.

xrandr.sh:

# Это раньше было раскомментировано, но больше не работает с новой конфигурацией
#xrandr --output HDMI-0 --off

sleep 0.5

xrandr --output HDMI-0 --primary --mode 3840x2160 --panning 0x0
xrandr --output DP-1 --mode 3840x2160 --right-of HDMI-0

Попытки решения

За эти годы я несколько раз гуглил похожие проблемы и никогда не находил ничего многообещающего. Я думал, что это что-то странное со старым 4K монитором (например, плохой EDID), но теперь, когда у меня та же проблема с новым монитором, эту подозрительность я отбросил.

Я нашел много тем о том, как экраны не удается восстановить после сна (обычно это устраняется с помощью modeset), но в моем случае никакого реального сна не происходит, экран просто выключается/затемняется (и это происходит только с одним из мониторов!). Более того, я также не нашел ни одной проблемы, подобной моей, касающейся природы проблемы и временного решения в духе “гонки состояний”.

Сохраните ваш скрипт “временного решения”, который настраивает оба монитора так, как вам нужно, с командой xrandr. Я предлагаю написать небольшое правило udev, чтобы запускать ваш скрипт, активируемый событием ядра “пробуждение из энергосбережения”. Вы можете отслеживать, какие триггеры вы получаете, запустив:

udevadm monitor -u

Вы также можете получить информацию обо всех возможных атрибутах в формате ключей правил udev для ваших мониторов, запустив:
udevadm info -a -n /dev/dri/card0

Где card0 – это ваша встроенная видеокарта. Почитайте о правилах udev:
https://linux.die.net/man/7/udev

Обычно вы помещаете файл в
/etc/udev/rules.d/

Что-то, что просто содержит следующее:

KERNEL=="card0", SUBSYSTEM=="drm", RUN+="/opt/xrandr.sh"

Может сработать, с правильным путем к вашему скрипту. Надеюсь, это поможет.

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

Проблема: Второй монитор не просыпается после перехода в спящий режим

Введение

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

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

Вы наблюдаете проблемное поведение на установках с двумя мониторами, когда один из них не включается сразу после выхода из спящего режима, в то время как другой работает должным образом. При этом система, похоже, видит оба монитора как подключенные, но один из них показывает сообщение "No Input".

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

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

  1. Несоответствие режимов видеовыхода: Каждый монитор может поддерживать разные режимы и разрешения, что может приводить к тому, что один из них просыпается быстрее другого. Это создает «состояние гонки» (race condition), где один монитор получает сигнал прежде, чем готов другой.

  2. Ошибка в драйверах видеокарты: Обновленный драйвер NVIDIA (455.45.01-6) может все еще содержать баги. Возможно, стоит попытаться установить более свежую или стабильную версию драйвера, если они доступны.

  3. Настройки энергосбережения: Параметры управления электропитанием в системе могут быть настроены так, что один из мониторов отключается неправильно или выходит из спящего режима с задержкой.

  4. EDID (Extended Display Identification Data): Неисправные данные EDID, поступающие от одного из мониторов, могут привести к проблемам с его определением при пробуждении.

Решения

1. Изменение параметров энергосбережения

Проверьте настройки управления электропитанием для каждого монитора в операционной системе. Убедитесь, что параметры «Сон» или «Спящий режим» настроены так, чтобы оба монитора реагировали одинаково. Это можно сделать, пока вы находитесь в разделе параметров дисплея.

2. Обновление и переустановка драйверов

Несмотря на то, что вы уже обновили драйверы, возможно, потребуется провести переустановку ваших видеодрайверов. Используйте следующие команды для полного удаления и установки драйверов:

sudo pacman -Rns nvidia
sudo pacman -S nvidia

Проверьте наличие более свежих версий на официальном сайте NVIDIA или в репозиториях Arch.

3. DPMS (Display Power Management Signaling)

Попробуйте вручную установить параметры DPMS для каждого монитора с помощью команды xrandr. Например:

xrandr --output HDMI-0 --dpms
xrandr --output DP-1 --dpms

Это поможет контролировать поведение мониторов во время их работы и при переходе в спящий режим.

4. Использование udev правил

Как уже упоминалось в контексте, настройка udev правил может помочь в автоматизации частично обходных путей. Создайте файл в /etc/udev/rules.d/, чтобы связать событие пробуждения с выполнением вашего xrandr.sh:

KERNEL=="card0", SUBSYSTEM=="drm", RUN+="/opt/xrandr.sh"

Это может помочь автоматически конфигурировать оба монитора каждый раз, когда система пробуждается от спящего режима.

Заключение

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

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

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