No se puede agregar un nuevo modo en xrandr para monitor externo


16

Hoy estaba tratando de conectar mi segundo monitor a mi computadora portátil. Yo tengo:

  • tarjeta gráfica nvidia
  • 304.43 controladores [soporte xrandr 1.2]
  • archlinux [actualizado]
  • impresionante wm
  • xrandr 1.3

Mi problema es con una resolución mayor que 640x480 para mi monitor externo (VGA). xrandr -q:

Screen 0: minimum 8 x 8, current 1920 x 800, maximum 8192 x 8192
VGA-0 connected 640x480+1280+0 (normal left inverted right x axis y axis) 0mm
   640x480        59.9*+
   320x240       120.1  
LVDS-0 connected 1280x800+0+0 (normal left inverted right x axis y axis) 331m
   1280x800       59.9*+
HDMI-0 disconnected (normal left inverted right x axis y axis)

Como podemos ver, no hay una resolución más alta para VGA, así que agrego un nuevo modo:

xrandr --newmode $(gtf 1280 1024 70.4 | grep Modeline | sed s/Modeline\ // | tr -d '"')

Verifiqué la resolución disponible y la frecuencia de actualización en Windows: uno de ellos era 1024x768x70 (el OSD de mi monitor decía que era 70.4HZ). Después de crear un nuevo modo, quería agregarlo:

xrandr --addmode VGA-0 1280x1024_70.40

Y ... falló:

X Error of failed request:  BadMatch (invalid parameter attributes)
  Major opcode of failed request:  153 (RANDR)
  Minor opcode of failed request:  18 (RRAddOutputMode)
  Serial number of failed request:  29
  Current serial number in output stream:  30

De Google aprendí que en los controladores xrandr / nvidia anteriores había problemas con la lista de modos disponibles, pero ahora con el soporte de xrandr 1.2 por parte de los controladores nvidia, debería ser mejor. También lo intento con una resolución y una frecuencia de actualización más bajas (por ejemplo, 1024x768x50), pero tengo el mismo error. No tengo ideas de qué hacer con este problema ...

Respuestas:


11

No estoy seguro de si ha creado la cadena siguiendo xrandr --newmodeusted mismo o la ha copiado de otro lugar, pero no funcionará en su forma actual.

Recomiendo hacerlo paso a paso.

Primero, necesitas generar el nuevo modo. Recomiendo usar 60Hz con LCD u 85Hz con monitor CRT

gtf 1280 1024 60

Obtendrás algo como:

 # 1280x1024 @ 60.00 Hz (GTF) hsync: 63.60 kHz; pclk: 108.88 MHz 
 Modeline "1280x1024_60.00"  108.88  1280 1360 1496 1712  1024 1025 1028 1060  -HSync Vsync

Luego presente este modo para xrandrusar --newmode(copie y pegue la línea que comienza con 'Modeline'.

 xrandr --newmode "1280x1024_60.00"  108.88  1280 1360 1496 1712  1024 1025 1028 1060  -HSync Vsync

Luego agregue este modo a VGA-0:

xrandr --addmode VGA-0 "1280x1024_60.00"

Y finalmente puedes usar este nuevo modo:

 xrandr --output VGA-0 --mode 1280x1024_60.00

Tienes razón, no creo esto: xrandr --newmode $(gtf 1280 1024 70.4 | grep Modeline | sed s/Modeline\ // | tr -d '"')solo, pero lo puse en pedazos pequeños primero para ver cómo funciona, primero gtf 1280 1024 70.4, luego con grep y finalmente con sed y tr. Le da la misma salida que tiene en Your xrandr --newmodecon un diff - Tiene "1280x1024_60.00", I have 1280x1024_60.00` - al final estoy usando tr -d '"'para eliminar '"'. Desafortunadamente todavía tengo el mismo error.
Borgo

¿Por qué una frecuencia de actualización tan extraña? 70.4? Use 60Hz si es una pantalla LCD o 85Hz en caso de CRT. Y hazlo paso a paso, exactamente como lo he escrito.
Paweł Rumian

Ahora intenté hacerlo paso a paso, usando 60Hz, y todavía tengo el mismo error.
Borgo

1
Mi resolución es 1280x1024, y estoy tratando de hacer (nuevo modo) / agregar (agregar) este modo:"1280x1024_60.00" 108.88 1280 1360 1496 1712 1024 1025 1028 1060 -HSync +Vsync
Borgo

1
Sigue siendo el mismo error: X Error of failed request: BadMatch (invalid parameter attributes) Major opcode of failed request: 153 (RANDR) Minor opcode of failed request: 18 (RRAddOutputMode) Serial number of failed request: 29 Current serial number in output stream: 30 solo han cambiado dos últimos números.
Borgo

4

Tuve este problema de Error de BadMatch hasta que eliminé un "1280x1024_60.00" agregado anteriormente porque nunca podría usar el modo de comillas dobles con éxito. Finalmente, se dio cuenta de que un mejor nombre para el modo ayudó.

Así que eliminé "1280x1024_60.00" ejecutando lo siguiente como usuario normal:

$ xrandr --version 
reports 1.4.0 and 1.4
$ xrandr | grep 1280 #Do you see any 1280x1024 anywhere?  Does it have double quotes?
$ xrandr --verbose --delmode VGA1 '"1280x1024_60.00"'
$ xrandr --verbose --rmmode '"1280x1024_60.00"' 

Eliminar y eliminar la basura en el sistema a menudo no funcionó o volvería a pesar de que lo eliminaría de mi cuenta y root. Por lo general, volvería bajo la salida denominada VIRTUAL1 en lugar de VGA1.

Me resultó mucho más fácil abandonar la basura y agregar una carta al final de mi modo recién creado e incluso solté el .00, por lo que 1280x1024_60B . Observe cuidadosamente a continuación hay comillas dobles alrededor del parámetro --newmode, pero NO --addmode ni --mode

$ xrandr --verbose --newmode "1280x1024_60B" 108.88 1280 1360 1496 1712 1024 1025 1028 1060 -HSync +Vsync
$ xrandr --verbose --addmode VGA1 1280x1024_60B
$ xrandr --verbose --output VGA1 --mode 1280x1024_60B

Un pequeño parpadeo de la pantalla y mi monitor cuadrado externo de 19 "funciona a 1280x1024.


Esta fue la única solución después de horas de investigación que funcionó, muchas gracias, me salvaste el día. Saludos
Shanil Soni

Sin embargo, la configuración se pierde después de una sesión, ¿alguna solución para que sea permanente?
Shanil Soni

0

Si está ejecutando Linux en una VM (específicamente, VirtualBox) asegúrese de que la VM tenga suficiente memoria de video.

Demasiada poca memoria de video causa este error al intentar ejecutar xrandr.


0

Paso 2 horas para resolver un problema similar y el problema estaba en el cable vga. Reemplace el cable vga. Puedo cambiar la resolución a 1920x1080 sin usar xrandr o xorg, es muy extraño.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.