[ @hdmi @monitor @xrandr @debian ]
В моём ноутбуке занятная и когда-то дорогая игровая Nvidia «GeForce GTX 1050 Ti (Mobile)». С другими видеокартами надо искать другие решения.
Исходные данные: в моем ноутбуке видео обслуживают два устройства:
- встроенный «Intel Corporation HD Graphics 630»
- отдельное Nvidia «GeForce GTX 1050 Ti Mobile»
Задача: первое устройство будет обслуживать монитор ноут, а второе будет обслуживать внешний монитор через hdmi.
Подразумеваю, что загружена X11.
Нужна будет перезагрузка всей системы.
Установить драйвера Nvidia
Убедиться в том, что монитор НЕ подключен к ноуту.
Их можно скачать с официального сайта в виде файла ***.run, но лучше сделать это стандартным путём по предписанному рецепту с https://wiki.debian.org/NvidiaGraphicsDrivers — при установке будет проще с зависимостями, а в будущем будет проще с обновлениями.
Определить серию и драйвера видеокарты
У меня «GeForce GTX 1050 Ti Mobile». Она из семества ’10’ — https://ru.wikipedia.org/wiki/GeForce_10
У меня Debian 12 "Bookworm" (lsb_release -d && cat /etc/debian_version), поэтому смотрю в https://wiki.debian.org/NvidiaGraphicsDrivers#Debian_12_.22Bookworm.22
Надо решить, будем ли ставить новейшие драйвера (но тогда будет бэкпорт), или те, что постарее (но не факт, что всё запустится). Чем новее, тем лучше.
Разрешить бэкпорт
sudo mcedit /etc/apt/sources.list
Дважды перепроверить название дистрибутива.
Добавить в строку для снятия main апдейтов добавить открытие бэкпорта. В норме обращаемся к „deb.debian.org/debian/”, но адрес сервера может быть любым из наиболее подходящих:
Сохранить изменения.
sudo apt update && sudo apt upgrade
Установить новейшие драйвера
Эта команда может поменяться, ее надо перепроверить на шаге «Определить серию и драйвера видеокарты»:
sudo apt install nvidia-driver firmware-misc-nonfree
Будет установлен пакет nvidia-kernel-dkms.
При установке драйвер Nouveau не будет удалён (это и не надо), но он автоматически заблэклистится: появится файл /etc/modprobe.d/blacklist-nvidia-nouveau.conf с содержимым «blacklist nouveau»
- blacklist vga16fb
- blacklist nouveau
- blacklist rivafb
- blacklist nvidiafb
- blacklist rivatv
sudo reboot
Обновить систему
sudo apt-get update && sudo apt-get upgrade
Если будут устаревшие пакеты nvidia, их будет предложено автоудалить:
sudo apt autoremove
Затем ещё раз
sudo apt-get update && sudo apt-get upgrade
Поставить утилиту контроля настроек nvidia
Вероятнее всего, она уже была незаметно установлена вместе с драйверами:
В списке программ > Настройка появится «NVIDIA X Server Settings». Если она успешно запускается, то уже почти всё норм. Если нет:
sudo aptitude install nvidia-settings
Подключить внешний монитор в ноут через дырку hdmi.
И включить его в розетку…
В некоторых случаях этого достаточно, монитор «оживает». Если нет — продолжить с настройками утилиты xrandr.
Настройки xrandr
Когда-то это всё делалось через настраивание в файле Xorg.conf, но теперь есть утилита Xrandr.
It can also set the screen size.
xrandr
Ожидаемый ответ:
- Screen 0: minimum 320 x 200, current 1920 x 1080, maximum 16384 x 16384
- eDP-1 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 382mm x 215mm
1920x1080 60.02*+ 60.01 59.97 59.96 59.93
1680x1050 59.95 59.88
и тд
Ок, это отображается "встроенная" видеокарта процессора, Теперь нужна ещё и внешняя Nvidia.
Выявить все доступные видеокарты ноута
lspci | grep VGA
Ожидаемый ответ:
- 00:02.0 VGA compatible controller: Intel Corporation HD Graphics 630 (rev 04)
- 01:00.0 VGA compatible controller: NVIDIA Corporation GP107M [GeForce GTX 1050 Ti Mobile> (rev a1)
Хорошо, система видит оба источника.
Subsystem: Acer Incorporated [ALI> HD Graphics 630
Kernel driver in use: i915
Kernel modules: i915
--
01:00.0 VGA compatible controller: NVIDIA Corporation GP107M [GeForce GTX 1050 Ti Mobile> (rev a1)
Subsystem: Acer Incorporated [ALI> GP107M [GeForce GTX 1050 Ti Mobile]
Kernel driver in use: nvidia
Kernel modules: nvidia
Выяснить внутреннюю нумерацию источников видео
xrandr --listproviders
Ожидаемый ответ:
Здесь:
Provider 1 — видеокарта Nvidia.
Если в ответ отображается только «встроенный монитор», то что-то пошло не так, надо смотреть.
Настроить порядок чтения видеоисточников
xrandr --setprovideroutputsource 1 0
В ответ ожидается тишина.
Убедимся в том, что теперь система видит оба монитора:
xrandr -q
eDP-1 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 382mm x 215mm
1920x1080 60.02*+ 60.01 59.97 59.96 59.93
1680x1050 59.95 59.88
1600x1024 60.17
1400x1050 59.98
2560x1440 59.95 + 143.91 120.00
3840x2160 59.94 50.00
1920x1080 119.88 60.00 59.94 50.00 60.00 50.04
Видит!
Включить вывод в hdmi
xrandr --output HDMI-1-0 --auto
Второй монитор ОЖИЛ.
Можно запустить nvidia-settings, где теперь количество бесполезной информации зашкаливает гангстерскую душу немногочисленными, но рабочими настройками.
Дальнейше управление мониторами:
Параметры системы > Оборудование > Экран
Сделать скрипт для автозагрузки
Изменения не сохранятся после первой же перезагрузки. Разумно сделать исполняемый скрипт и положить его в автозагрузку профиля.
- Создать в отдельной папке файл с условным названием engage_external_monitor.sh и следующим содержимым:
xrandr --setprovideroutputsource 1 0
xrandr --output HDMI-1-0 --auto
- Сделать файл исполняемым
chmod u+x engage_external_monitor.sh
./engage_external_monitor.sh
- Добавить файл в автозагрузку:
Параметры системы
> Рабочая среда > Запуск и завершение > Автозапуск > Add… > Add login script