Definir resolução não detectada com xrandr

Definir resolução não detectada com xrandr

Estou tentando executar um monitor Samsung SyncMaster 226 NW com um adaptador HDMI para VGA no Debian 10. A GPU é uma RTX 2060 Super, com drivers proprietários da Nvidia da versão 440.64.

No Linux, as únicas resoluções detectadas como utilizáveis ​​são 1280x720, 1024x768, 800x600 e 640x480.

No entanto, a resolução nativa real é 1680×1050 e, durante a inicialização dupla do Windows, essa resolução pode ser definida e usada.

Tentei usar xrandrpara adicionar uma resolução personalizada, primeiro usando cvtpara gerar o modeline. O comando usado para criar um novo modo para o xrandr foi

xrandr --newmode "1680×1050_60.00"  146.25  1680 1784 1960 2240  1050 1053 1059 1089 -hsync +vsync

Depois de fazer isso, a execução xrandrretornou

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

Porém, ao tentar usar

xrandr --addmode HDMI-0 "1680×1050_60.00"`

o erro

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

foi devolvido. Usando

xrandr --output HDMI-0 --mode "1680×1050_60.00"

devolvida

xrandr: não é possível encontrar o modo 1680x1050_60.00` como um erro.

Como defino corretamente a resolução de saída para 1680x1050?

Responder1

Acabei de passar de 2 a 3 horas exatamente no mesmo problema. Tão irritante que o xrandr parece não funcionar com os novos drivers da nvidia. Agora, depois de ficar louco e furioso, finalmente encontrei uma solução, esperando que funcione para você também.

Inicie no terminal "nvidia-settings", mude para "X Server Display Configuration", clique no botão na parte inferior "Salvar no arquivo de configuração X" e depois em "Mostrar visualização". Agora nesta prévia vá até o bloco 'Seção "Monitor"..... EndSection' e salve-o para mais tarde. Foi assim que descobri as configurações do meu monitor para o xorg.conf. Observe que existem outras maneiras, mas esta deve ser bastante segura e conveniente para usuários da nvidia.

Então pegue o “Modeline” para sua resolução, digite no terminal:

cvt 1680x1050

e salve a saída para mais tarde.

Ok, agora você só precisa adicionar tudo isso em um arquivo xorg.conf, chame-o, por exemplo, /etc/X11/xorg.conf.d/10-monitor.conf (esse é pelo menos o caminho para minha distro). Como não tenho sua Monitor-Section nem sua Modeline vou dar um exemplo com minha monitor-section e minha modeline (minha resolução desejada/não detectada era 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

Portanto, na seção Monitor, você apenas mantém a primeira linha (Identificador) e substitui o restante pelo salvamento das configurações da nvidia, além da última linha ser a saída do seu comando cvt. A seção de dispositivos deve servir para você. A seção da tela só precisa da linha "Modos" alterada para o nome do seu modo, então provavelmente algo como Modos "1680x1050_60.00"

Na minha seção de dispositivos também há uma linha 'BusID "PCI:39:0:0"', mas acho que você não precisa disso. No entanto, recebi essa linha ao executar "X -configure" (o xorg não deve estar em execução). O BusID deve estar no xorg.conf.new gerado. Estranhamente, no meu caso era diferente do BusID do lspci.

Além disso, se você quiser executar vários monitores (como eu), basta adicionar novas seções de monitor com o identificador "Monitor2" e assim por diante, em seguida, na seção de dispositivo, adicione, por exemplo, 'Opção "HDMI-1" "Monitor2"' de acordo, e finalmente adicione o Monitor na seção de tela como 'Monitor "Monitor2"'.

A parte estranha no meu caso é que tenho 3 monitores exatamente idênticos e um deles nem sempre foi reconhecido pelo nvidia-modeset. Tem algo a ver com EDID e o erro pode ser encontrado em:

dmesg | grep EDID

informação relacionada