Establecer resolución no detectada con xrandr

Establecer resolución no detectada con xrandr

Estoy intentando ejecutar una pantalla Samsung SyncMaster 226 NW con un adaptador HDMI a VGA en Debian 10. La GPU es una RTX 2060 Super, con los controladores propietarios de Nvidia de la versión 440.64.

En Linux, las únicas resoluciones que se detectan como utilizables son 1280×720, 1024×768, 800×600 y 640x480.

Sin embargo, la resolución nativa real es 1680×1050, y cuando Windows arranca dualmente, esta resolución se puede configurar y utilizar.

Intenté usarlo xrandrpara agregar una resolución personalizada, primero usándolo cvtpara generar la línea de modelo. El comando utilizado para crear un nuevo modo para xrandr fue

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

Después de hacer esto, xrandrvolvió a correr.

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

Sin embargo, al intentar utilizar

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

el error

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

fue devuelto. Usando

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

regresó

xrandr: no se puede encontrar el modo 1680x1050_60.00` como error.

¿Cómo configuro correctamente la resolución de salida en 1680x1050?

Respuesta1

Acabo de pasar 2 o 3 horas exactamente con el mismo problema. Muy molesto, xrandr parece no funcionar en absoluto con los nuevos controladores nvidia. Ahora, después de volverme loco y enojado, finalmente se me ocurrió una solución, esperando que funcione para ti también.

Inicie en la terminal "nvidia-settings", cambie a "Configuración de pantalla del servidor X", haga clic en el botón en la parte inferior "Guardar en el archivo de configuración X", luego "Mostrar vista previa". Ahora en esta vista previa vaya al bloque 'Sección "Monitor"..... EndSection' y guárdelo para más tarde. Así es como descubrí la configuración de mi monitor para xorg.conf. Tenga en cuenta que hay otras formas, pero esta debería ser bastante segura y conveniente para los usuarios de nvidia.

Luego obtenga el "Modeline" para su resolución, escriba en la terminal:

cvt 1680x1050

y guarde el resultado para más tarde.

Ok, ahora sólo tienes que agregar todo esto en un archivo xorg.conf, llámalo, por ejemplo, /etc/X11/xorg.conf.d/10-monitor.conf (esa es al menos la ruta para mi distribución). Como no tengo tu sección de monitor ni tu línea de modelo, te daré un ejemplo con mi sección de monitor y mi línea de modelo (mi resolución deseada/no 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

Entonces, en la sección Monitor, simplemente conserva la primera línea (Identificador) y reemplaza el resto con lo que guardó desde la configuración de nvidia y la última línea es la salida de su comando cvt. La sección del dispositivo debería estar bien para usted. La sección de pantalla solo necesita cambiar la línea "Modos" por el nombre de su modo, por lo que probablemente algo como Modos "1680x1050_60.00"

En mi sección de dispositivos también hay una línea 'BusID "PCI:39:0:0"', pero creo que no la necesitas. Sin embargo, obtuve esa línea al ejecutar "X -configure" (xorg no debe estar ejecutándose). BusID debe estar en el xorg.conf.new generado. Curiosamente, en mi caso era diferente del BusID de lspci.

Además, si desea ejecutar varios monitores (como yo), simplemente agregue nuevas secciones de monitor con el identificador "Monitor2" y así sucesivamente, luego en la sección de dispositivo agregue, por ejemplo, 'Opción "HDMI-1" "Monitor2"' en consecuencia, y finalmente agregue el Monitor en la Sección de Pantalla como 'Monitor "Monitor2"'.

Lo extraño en mi caso fue que tengo 3 monitores exactamente idénticos y nvidia-modeset nunca reconoció uno de ellos. Tiene algo que ver con EDID y el error se puede encontrar con:

dmesg | grep EDID

información relacionada