Установить необнаруженное разрешение с помощью xrandr

Установить необнаруженное разрешение с помощью xrandr

Я пытаюсь запустить дисплей 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

Связанный контент