У меня эта проблема возникла, когда я захотел подключить вторым старенький 17-дюймовый монитор с разрешением 1280х1024х60Гц к видеокарте GeForce GT 440 к разъёму HDMI через переходник HDMI -> Dsub (обычный разъём VGA, через который обычно и подключается провод монитора к видеокарте). Такого разрешения в списке драйвера не оказалось, как и разрешения основного монитора 1680х1050х60Гц. Иначе всё решилось бы просто сменой разъёмов местами. ☺ Но - не сложилось, пришлось искать способ добавить новое разрешение в список. Итак…
Замечание: все манипуляции справедливы и в том случае, если у вас только один монитор.
Смотрим, что за карта и драйвер у нас установлены, командой
$ nvidia-detect
Видим:
Detected NVIDIA GPUs:
01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GF108 [GeForce GT 440] [10de:0de0] (rev a1)
Checking card: NVIDIA Corporation GF108 [GeForce GT 440] (rev a1)
Your card is only supported up to the 390 legacy drivers series.
It is recommended to install the
nvidia-legacy-390xx-driver
Если такой команды нет, устанавливаем её:
$ sudo apt install nvidia-detect
Убеждаемся, что драйвера нас установлены:
$ sudo apt search nvidia-legacy-390xx-driver | grep 'installed
’
Получаем что-то вроде:
libegl-nvidia-legacy-390xx0/stable,now 390.144-1 amd64 [installed,automatic]
libgl1-nvidia-legacy-390xx-glx/stable,now 390.144-1 amd64 [installed,automatic]
libgles-nvidia-legacy-390xx1/stable,now 390.144-1 amd64 [installed,automatic]
libgles-nvidia-legacy-390xx2/stable,now 390.144-1 amd64 [installed,automatic]
libglx-nvidia-legacy-390xx0/stable,now 390.144-1 amd64 [installed,automatic]
...
и т.д.
То есть у нас установлен проприетарный драйвер, версия 390.144-1. Предполагаю, что всё ниже написанное справедливо и для стандартного свободного драйвера, но не проверял, поэтому наверняка утверждать не буду.
Смотрим, как обзываются наши мониторы, командой
$ xrandr
, и видим что-то вроде этого:
Screen 0: minimum 8 x 8, current 1680 x 2074, maximum 16384 x 16384
DVI-I-0 connected 1024x768+0+1050 (normal left inverted right x axis y axis) 444mm x 355mm
1024x768 59.81*+
1280x960 60.00
1152x864 75.00
1024x768 75.03 60.00
...
и т.д.
То есть основной монитор 1680х1050х60Гц, подключенный через обычный разъём Dsub, определился нормально, а подключенный через переходник HDMI -> Dsub - нет, потому что такого разрешения нет в списке драйвера. Посмотреть, что там вообще есть, проще всего в данном случае через графический конфигуратор nVidia (его можно запустить и просто из меню программ, кстати):
$ nvidia-settings
Выбираем нужные монитор (если он не один), раскрываем список Resolution
и убеждаемся, что нужного нам разрешения нет и его нужно добавить.
Я нашёл два способа. Первый - при помощи инструмента xrandr с написанием простенького bash-скриптика в пару строчек, и второй - добавлением строчки в конфигурационный файл графического сервера Xorg. Второй путь мне понравился больше, по нему и пойдём.
Идём на сайт https://github.com/akatrevorjay/edid-generator и скачиваем оттуда бинарный файл конфигурации монитора с нужным разрешением, в нашем случае 1280х1024. Поместить его можно в любой папке, но феншуйнее всё-таки в тематическую системную /etc/X11
.
Переходим на страницу нужного файла - 1280x1024.bin (или другого, нужного нам): https://github.com/akatrevorjay/edid-generator/blob/master/1280x1024.bin. Правой кнопкой мышки кликаем на кнопке Download
, выбираем в выпавшем меню Copy link (Скопировать ссылку)
, и идём в терминал от имени суперпользователя root, поскольку папка системная и обычному пользователю туда доступа для изменений нет.
$ su
-> вводим пароль суперпользователя, и переходим в папку /etc/X11
# cd /etc/X11
и скачиваем по скопированной нами в браузере ссылке:
# wget
https://github.com/akatrevorjay/edid-generator/raw/master/1280x1024.bin
Это конфигурационный файл монитора с разрешением 1280х1024.
Теперь нам нужно создать в этой же папке конфигурационный xorg.conf
. По умолчанию его в системе нет, Linux давно уже определяет все настройки автоматически, но не запрещает и добавить свои специфические. В данном случае нам проще всего сгенерировать его с помощью всё той же утилиты nvidia-settings
, только запущенной от суперпользователя, от имени которого мы и находимся сейчас в терминале.
# nvidia-settings
Там идём в X Server Display Configuration
и нажимаем внизу кнопку Save X Configuration File
. Нам будет предложено сохранить все существующие настройки в файл /etc/X11/xorg.conf
- с чем мы и согласимся. Можно создать его и другими, более linux-way способами, например описанным в руководстве Debian (https://wiki.debian.org/ru/NvidiaGraphicsDrivers#A.2BBBAEMgRCBD4EPAQwBEIEOARHBDUEQQQ6BDg-), но коли мы поставили проприетарный драйвер, то этот способ самый простой.
Закрываем nvidia-settings
и редактируем файл xorg.conf
:
# nano /etc/X11/xorg.conf
В разделе устройств
Section "Device"
Identifier "Device0"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BoardName "GeForce GT 440"
EndSection
перед EndSection
добавляем строчку:
Option "CustomEDID" "DVI-I-0:/etc/X11/1280x1024.bin
:
Section "Device"
Identifier "Device0"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BoardName "GeForce GT 440"
Option "CustomEDID" "DVI-I-0:/etc/X11/1280x1024.bin
EndSection
Далее идём в Section "Screen"
и в строке
Option "metamodes" "DVI-I-0: 1024x768 +0+1050 {viewportin=1024x768}, VGA-0: 1680x1050_60 +0+0"
изменяем значения на нужные нам:
Option "metamodes" "DVI-I-0: 1280x1024 +0+1050 {viewportin=1280x1024}, VGA-0: 1680x1050_60 +0+0"
У вас значения и “имя” монитора, подключенного через DVI, будут, конечно же, другие, но нас интересует только то, что находится после DVI… и до VGA (в случае двух мониторов), так что заблудиться тут сложно. :)
Сохраняем отредактированный файл (Ctrl+О), закрываем редактор nano (Ctrl+X) и остальные открытые приложения, перезагружаемся и наслаждаемся чёткой картинкой на втором мониторе.
Способ, возможно, не самый техничный, но он точно работает в Debian 11. Я исходил из соображений простоты и удобства. Если кто-то может предложить что-то более простое и удобное, буду рад прочитать об этом в комментариях.
Comments
No comments yet. Be the first to react!