
Я пытаюсь запустить дисплей Samsung SyncMaster 226 NW с адаптером HDMI-VGA на Debian 10. Графический процессор — RTX 2060 Super с фирменными драйверами Nvidia версии 440.64.
В Linux единственными разрешениями, которые определяются как пригодные для использования, являются 1280×720, 1024×768, 800×600 и 640x480.
Однако фактическое собственное разрешение составляет 1680×1050, и при двойной загрузке Windows это разрешение можно установить и использовать.
Я попытался использовать xrandr
для добавления пользовательского разрешения, сначала используя cvt
для генерации modeline. Команда, используемая для создания нового режима для xrandr, была
xrandr --newmode "1680×1050_60.00" 146.25 1680 1784 1960 2240 1050 1053 1059 1089 -hsync +vsync
После этого бег xrandr
вернулся .
Screen 0: minimum 8 x 8, current 1024 x 768, maximum 32767 x 32767
DP-0 disconnected (normal left inverted right x axis y axis)
DP-1 disconnected (normal left inverted right x axis y axis)
HDMI-0 connected primary 1024x768+0+0 (normal left inverted right x axis y axis) 304mm x 228mm
1024x768 60.00*+ 60.00
1280x720 60.00
800x600 60.32
640x480 59.94
DP-2 disconnected (normal left inverted right x axis y axis)
DP-3 disconnected (normal left inverted right x axis y axis)
DP-4 disconnected (normal left inverted right x axis y axis)
DP-5 disconnected (normal left inverted right x axis y axis)
USB-C-0 disconnected (normal left inverted right x axis y axis)
1680x1050_60.00 (0x1e4) 146.250MHz -HSync +VSync
h: width 1680 start 1784 end 1960 total 2240 skew 0 clock 65.29KHz
v: height 1050 start 1053 end 1059 total 1089 clock 59.95Hz
Однако при попытке использования
xrandr --addmode HDMI-0 "1680×1050_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: 43
Current serial number in output stream: 44
был возвращен. Используя
xrandr --output HDMI-0 --mode "1680×1050_60.00"
вернулся
xrandr: не удается найти режим 1680x1050_60.00` как ошибка.
Как правильно установить выходное разрешение 1680x1050?
решение1
Я только что потратил 2-3 часа на точно такую же проблему. Так раздражает, xrandr, кажется, вообще не работает с новыми драйверами nvidia. Теперь, после того, как я сошел с ума и разозлился, я, наконец, нашел решение, надеюсь, оно сработает и для вас.
Запустите в терминале "nvidia-settings", переключитесь на "X Server Display Configuration", нажмите кнопку внизу "Save to X configuration File", затем "Show Preview". Теперь в этом предварительном просмотре перейдите в блок "Section "Monitor"..... EndSection" и сохраните его на потом. Вот как я узнал о своих настройках монитора для xorg.conf. Обратите внимание, есть и другие способы, но этот должен быть достаточно безопасным и удобным для пользователей nvidia.
Затем получите «Modeline» для вашего разрешения, введите в терминале:
cvt 1680x1050
и сохраните вывод для дальнейшего использования.
Хорошо, теперь вам просто нужно добавить все это в файл xorg.conf, назовите его, например, /etc/X11/xorg.conf.d/10-monitor.conf (это по крайней мере путь для моего дистрибутива). Поскольку у меня нет ни вашего Monitor-Section, ни вашего Modeline, я приведу вам пример с моим monitor-section и моим modeline (мое желаемое/необнаруженное разрешение было 1920x1080):
Section "Monitor"
Identifier "Monitor1"
VendorName "Unknown"
ModelName "Acer B246HL"
HorizSync 30.0 - 80.0
VertRefresh 55.0 - 76.0
Option "DPMS"
Modeline "1920x1080_60.00" 173.00 1920 2048 2248 2576 1080 1083 1088 1120 -hsync +vsync
EndSection
Section "Device"
Identifier "Card0"
Driver "nvidia"
Option "HDMI-0" "Monitor1"
EndSection
Section "Screen"
Identifier "Screen0"
Device "Card0"
Monitor "Monitor1"
DefaultDepth 24
SubSection "Display"
Depth 24
Modes "1920x1080_60.00"
EndSubSection
EndSection
Итак, в разделе Monitor вы просто сохраняете первую строку (Identifier) и заменяете остальное вашим сохранением из nvidia-settings, а последняя строка — это вывод вашей команды cvt. Раздел Device-Section должен вас устроить. В разделе Screen-Section нужно просто изменить строку "Modes" на имя вашего режима, так что, вероятно, что-то вроде Modes "1680x1050_60.00"
В моем разделе устройств также есть одна строка 'BusID "PCI:39:0:0"', но я думаю, что она вам не нужна. Однако я получил эту строку, выполнив "X -configure" (xorg не должен быть запущен). BusID должен быть в сгенерированном xorg.conf.new. Странно, но в моем случае он отличался от BusID lspci.
Кроме того, если вы хотите запустить несколько мониторов (как я), просто добавьте новые разделы мониторов с идентификатором «Monitor2» и т. д., затем в разделе устройств добавьте, например, «Option «HDMI-1» «Monitor2»» соответственно, и, наконец, добавьте монитор в раздел экрана, например, «Monitor «Monitor2»».
Странность в моем случае заключалась в том, что у меня было 3 совершенно одинаковых монитора, и один из них всегда не распознавался nvidia-modeset. Это как-то связано с EDID, и ошибку можно найти с помощью:
dmesg | grep EDID