Вопрос или проблема
Я пробую Kubuntu 18.10, у меня есть Nvidia GTX 1060 (драйвер 418), LG 27″ 4k монитор (27UD58-B) и старый HP 22″ монитор с разрешением 1680×1050 (HPw2207) с VGA кабелем и VGA-> DP адаптером.
Мои проблемы заключаются в следующем:
1) Я не могу заставить экран с VGA адаптером использовать разрешение выше 1280*1024
2) Я бы хотел использовать масштабирование экрана, потому что все слишком маленькое на 4k дисплее. Я бы хотел, чтобы масштабирование применялось только к дисплею с высоким разрешением, если это возможно.
Текущая настройка:
Я использую драйверы Nvidia 418.56.
$ nvidia-smi
Mon Apr 15 15:07:47 2019
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 418.56 Driver Version: 418.56 CUDA Version: 10.1 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 GeForce GTX 106... Off | 00000000:23:00.0 On | N/A |
| 10% 64C P0 25W / 120W | 739MiB / 6076MiB | 3% Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| 0 958 G /usr/lib/xorg/Xorg 386MiB |
| 0 1413 G /usr/bin/kwin_x11 192MiB |
| 0 1432 G /usr/bin/krunner 1MiB |
| 0 1434 G /usr/bin/plasmashell 111MiB |
| 0 1509 G /usr/bin/latte-dock 29MiB |
| 0 9387 G /usr/lib/firefox/firefox 1MiB |
+-----------------------------------------------------------------------------+
и нормальные разрешения выше не доступны:
$ xrandr
Screen 0: minimum 8 x 8, current 4864 x 2160, maximum 32767 x 32767
DVI-D-0 disconnected (normal left inverted right x axis y axis)
HDMI-0 disconnected (normal left inverted right x axis y axis)
DP-0 connected primary 3840x2160+0+0 (normal left inverted right x axis y axis) 600mm x 340mm
3840x2160 60.00*+ 30.00
2560x1440 59.95
1920x1080 60.00 59.94
1600x900 60.00
1280x1024 60.02
1280x800 59.81
1280x720 60.00 59.94
1152x864 59.96
1024x768 60.00
800x600 60.32
720x480 59.94
640x480 59.94 59.93
DP-1 disconnected (normal left inverted right x axis y axis)
DP-2 disconnected (normal left inverted right x axis y axis)
DP-3 disconnected (normal left inverted right x axis y axis)
DP-4 connected 1024x1280+3840+832 left (normal left inverted right x axis y axis) 376mm x 301mm
1280x1024 60.02*+
1280x960 60.00
1152x864 75.00
1024x768 85.00 75.03 70.07 60.00
800x600 85.06 75.00 72.19
640x480 85.01 59.94
DP-5 disconnected (normal left inverted right x axis y axis)
Первая проблема: исправление разрешения
Я пытался использовать “addmode” с помощью xrandr, но получил ошибку BadMatch. Это, видимо, нормально для видеокарт nvidia.
$ cvt 1680 1050 60
# 1680x1050 59.95 Hz (CVT 1.76MA) hsync: 65.29 kHz; pclk: 146.25 MHz
Modeline "1680x1050_60.00" 146.25 1680 1784 1960 2240 1050 1053 1059 1089 -hsync +vsync
$ xrandr --newmode "1680x1050_60.00" 146.25 1680 1784 1960 2240 1050 1053 1059 1089 -hsync +vsync
$ xrandr --addmode DP-4 1680x1050_60.00
X Error of failed request: BadMatch (invalid parameter attributes)
Major opcode of failed request: 140 (RANDR)
Minor opcode of failed request: 18 (RRAddOutputMode)
Serial number of failed request: 45
Current serial number in output stream: 46
Мой файл /etc/X11/xorg.conf был сгенерирован nvidia с использованием sudo nvidia-xconfig:
$ sudo nvidia-xconfig
Using X configuration file: "/etc/X11/xorg.conf".
Backed up file '/etc/X11/xorg.conf' as '/etc/X11/xorg.conf.backup'
New X configuration file written to '/etc/X11/xorg.conf'
Файл xorg.conf содержит только один монитор, это нормально. Я пытался добавить строку “Modeline” под Monitor0, но это ничего не изменило.
# nvidia-xconfig: X configuration file generated by nvidia-xconfig
# nvidia-xconfig: version 418.56
Section "ServerLayout"
Identifier "Layout0"
Screen 0 "Screen0" 0 0
InputDevice "Keyboard0" "CoreKeyboard"
InputDevice "Mouse0" "CorePointer"
EndSection
Section "Files"
EndSection
Section "InputDevice"
# generated from default
Identifier "Mouse0"
Driver "mouse"
Option "Protocol" "auto"
Option "Device" "/dev/psaux"
Option "Emulate3Buttons" "no"
Option "ZAxisMapping" "4 5"
EndSection
Section "InputDevice"
# generated from default
Identifier "Keyboard0"
Driver "kbd"
EndSection
Section "Monitor"
Identifier "Monitor0"
VendorName "Unknown"
ModelName "Unknown"
HorizSync 28.0 - 33.0
VertRefresh 43.0 - 72.0
Option "DPMS"
EndSection
Section "Device"
Identifier "Device0"
Driver "nvidia"
VendorName "NVIDIA Corporation"
EndSection
Section "Screen"
Identifier "Screen0"
Device "Device0"
Monitor "Monitor0"
DefaultDepth 24
SubSection "Display"
Depth 24
EndSubSection
EndSection
Вторая проблема: масштабирование
Я предпринял два шага, чтобы позволить экрану HiDPI отображать текст и GUI в более читаемом размере:
1) Системные настройки – шрифты – Принудительно установить DPI шрифтов 144 (вместо 96)
2) Системные настройки – дисплей и мониторы – масштабирование дисплея 1,5 (вместо 1).
Я хотел бы, чтобы эти настройки применялись только к 4k монитору, возможно ли это вообще?
Я нашел обходное решение: я подключил дисплей напрямую к старой башне, у которой есть VGA, и экспортировал edid с использованием
sudo apt install read-edid
sudo get-edid -m 0 > edid.bin
затем я стер старый xorg.conf на машине и создал новый, где принудительно установил edid для монитора на дисплее порт 4:
sudo rm /etc/X11/xorg.conf
nvidia-xconfig --custom-edid="GPU-0.DP-4:/home/MYNAME/edid.bin"
Та-дам, более высокое разрешение теперь работает. Когда я смотрю на мой файл xorg.conf, я вижу, что была добавлена следующая строка в секцию “Screen”:
Option "CustomEDID" "GPU-0.DP-4:/home/MYNAME/Downloads/edid.bin"
вот что я в итоге сделал в отношении масштабирования с монитором высокого разрешения и монитором стандартного разрешения:
Ок, но теперь все слишком большое на 22” .. Нужно уменьшить масштаб до 1.4 в обратном направлении.
Это дает мне экран 3840 + 1.4 * 1680 = 6192 пикселей по ширине, который я должен указать в кадровом буфере.
Затем я указываю позицию экранов с помощью –pos, где 0x0 это верхний левый угол экрана.
https://askubuntu.com/questions/393400/is-it-possible-to-have-different-dpi-configurations-for-two-different-screens
xrandr –output DP-0 –scale 1×1 –pos 0x0 –fb 6192×2160
xrandr –output DP-4 –scale 1.4×1.4 –pos 3840×690
.
Ответ или решение
Решение проблем с разрешением и масштабированием на двух мониторах с использованием NVIDIA (один 4K HiDPI, другой VGA с конвертером) может быть сложной задачей. Давайте рассмотрим данную ситуацию более детально и предложим возможные способы её разрешения.
Теория
-
Разрешение: VGA-соединения часто имеют ограниченные возможности по поддержке высоких разрешений. Это может быть связано с ограничениями самого кабеля, конвертера или портов на мониторе и графической карте. Использование конвертера может накладывать дополнительные ограничения.
-
Масштабирование: При работе с HiDPI мониторами (например, 4K) и стандартными мониторами, возникает необходимость в избирательном масштабировании интерфейса для улучшения читаемости. Однако иногда программное обеспечение или драйверы не предоставляют очевидных инструментов для индивидуального масштабирования каждого дисплея.
Пример
Вы столкнулись со следующими проблемами:
-
Проблема с разрешением: Ваш VGA-монитор через конвертер ограничен разрешением 1280×1024. Попытки использования команды
xrandr
с добавлением новой модели линии (modeline
) привели к ошибке BadMatch, что может указывать на несовместимость вашего дисплея или конвертера с указанным разрешением. -
Проблема с масштабированием: Вы хотите настроить масштабирование только для HiDPI монитора, так как интерфейс выглядит слишком мелким.
Применение
Решение проблемы с разрешением:
Вы обнаружили, что создание пользовательского файла EDID и его принудительная загрузка в конфигурацию NVIDIA может обойти ограничения разрешения, возникшие из-за использования конвертера. Порядок действий:
-
Извлечение EDID: Подключите монитор через VGA к старому ПК и воспользуйтесь
read-edid
, чтобы экспортировать EDID монитора в файл.sudo apt install read-edid sudo get-edid -m 0 > edid.bin
-
Обновление xorg.conf: Удалите старый файл xorg.conf и создайте новый с использованием edid, принудительно задавая его NVIDIA.
sudo rm /etc/X11/xorg.conf nvidia-xconfig --custom-edid="GPU-0.DP-4:/home/USER/edid.bin"
Эти действия позволят использовать разрешение, превышающее 1280×1024, и подтвердят работоспособность решения.
Решение проблемы с масштабированием:
Для настройки индивидуального масштабирования на разных дисплеях воспользуйтесь командой xrandr
для изменения параметров framebuffer и позиционирования экранов, как указано:
xrandr --output DP-0 --scale 1x1 --pos 0x0 --fb 6192x2160
xrandr --output DP-4 --scale 1.4x1.4 --pos 3840x690
Этим вы обеспечите соответствующее масштабирование для каждого из мониторов, без влияния на другой, учитывая, что итоговый framebuffer будет учитывать оба экрана.
Эти подходы помогут в решении поставленных задач, предоставляя более гибкий контроль над отображением и комфортом работы на разных мониторах.