¿Por qué ocurren los errores de xrandr “BadMatch”, “BadName”, “Gamma Failed”?

No he encontrado una solución única para tales errores, a pesar de la gran cantidad de usuarios que los tienen.

Así que quiero intentar encontrar una solución yo mismo. Sin embargo, no tengo idea de por qué ocurren …

¿Hay alguien que sepa por qué? No tienes que decir por qué ocurre cada error, ¡solo uno sería genial!

Ejemplos:

Error BadMatch:

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

Error de BadName:

 Error of failed request: BadName (named color or font does not exist) Major opcode of failed request: 140 (RANDR) Minor opcode of failed request: 11 (RRQueryOutputProperty) Serial number of failed request: 39 Current serial number in output stream: 39 

Error de error de gamma:

 xrandr: Failed to get size of gamma for output default Screen 0: minimum 1920 x 1080, current 1920 x 1080, maximum 1920 x 1080 default connected primary 1920x1080+0+0 0mm x 0mm 1920x1080 0.0* 

Información mínima

Va a hacer una pregunta y luego agregue el enlace generado por este comando

sudo apt-get install pastebinit; sudo sh -c "lsb_release -sd; dmidecode -s system-product-name; echo ==; lshw -c display; echo ==; xrandr --verbose; echo ==; cat /etx/X11/xorg.conf" | tee ~/Desktop/ubuntu-graphic-info.txt | pastebinit


Solución de problemas

Pequeña charla

Mucho más complicado de lo que pensaba, ya que intenté jugar con mi GPU Intel durante algún tiempo usando xrandr . A veces me sale un error inesperado. Este es un verano para mi experiencia.

Aquí hay una lista de stack completa simplificada, tal como la entiendo.

 xrandr └─ Xorg (w/ driver specific module) └─ kernel └─ driver │ graphic card └─ cables (kvm switch/connection adapter) └─ monitor 

Es realmente una stack grande para solucionar problemas, más difícil con el hardware antiguo y las actualizaciones de los controladores propietarios rodantes, incluso un mal contacto de pin en el cable VGA DB-15 (o cable barato) puede marcar la diferencia. En realidad, la mayoría de los problemas que leo aquí en Ask Ubuntu se refieren a datos EDID simplemente faltantes / incorrectos del monitor, culpando a: cables (conmutador kvm / adaptador de conexión). Puedes notar eso rápidamente desde la salida xrandr --verbose .

Muchos casos también son controladores Los controladores restringen algunos modos debido a datos EDID incompletos / parcialmente incorrectos del Monitor (error del fabricante). El usuario supera esto escribiendo xorg.conf personalizado para anular: Modo, HSync y VSync, EDID, DPI … dependiendo de controlador ( nvidia por ejemplo, puede ignorar EDID del monitor)

Recomiendo esto para leer para usuarios avanzados o para aquellos que brindan ayuda aquí:

  • Ubuntu Wiki: X Solución de problemas (bastante antiguo y genérico)
  • ¿KMS UXA DRM OMG WTF BBQ? / Gráficos de Linux desmitificados por Martin Fiedler de Dream Chip Technologies GmbH en Chemnitzer Linux-Tage 2014

Darse cuenta:

Tenga cuidado al leer las documentaciones antiguas y las publicaciones que proporcionan soluciones. Mejor, buscar documentación para esa unidad específica en uso.

  • Verifique la fecha de publicación, la última fecha de edición o la versión del software.
  • modeset , DRI o tipo de controlador fb (framebuffer). (Solo se consciente, no soy un experto).
  • Xorg ha avanzado mucho en la configuración automática, por lo que xorg.conf no se crea de forma predeterminada. Incluso si el usuario tiene uno, no debería crear todas las secciones, sino que solo reemplaza lo que se necesita. Es una especie de configuración sobre la marcha.

Mi comprensión ficticia de esos errores xrandr / X

El hijo ( xrandr ) parece no darse cuenta de lo que su padre puede o estará de acuerdo en comprarle (todas las capacidades del conductor), así que solo va con su madre (Xorg) y le pide que le pida a su padre las cosas que quiere. Entonces, cualquiera de los siguientes escenarios ocurrirá:

  • alta proporción: Hijo → (:) aceptar) Mamá → (:) aceptar) papá, ¡todos están felices!
  • baja proporción: Hijo → (: | aceptar) Mamá → (XD rechazar) papá, ¡la vida es difícil a veces!
  • caso raro: Hijo → (X / rechazar) Mamá -x- (: | neutral) papá, ¡hora de plan B!

Entonces obtenemos esos errores cuando Xorg o Driver no pueden procesar o rechazar la solicitud de xrandr debido:

  • Configuraciones actuales de Xorg
  • Capacidades del conductor
  • Capacidades del adaptador de gráficos
  • Capacidades de monitoreo obtenidas de EDID
  • Un error en uno de ellos incluyendo xrandr

Recostackción de información de depuración para gráficos generics!

¿Por qué? Miré muchas preguntas aquí relacionadas con xrandr y la resolución , faltan mucha información sobre la configuración de stack completa. El conjunto considerado mencionó solo el último comando fallido. Incluso, sugeriría poner todos los resultados en la pregunta para que podamos buscar similitudes y vincular los problemas relacionados.

Si no se encuentran datos EDID, comience con:

  • ¿Cómo se conecta físicamente el monitor, es decir, se utiliza un KVM? Cualquier adaptador de conexión ej. HDMI a VGA?
  • ¿Has probado otro cable?
  • ¿Qué es el monitor de Marca / Modelo?

Aquí una lista de algunos comandos útiles

  1. Información de fondo

     sudo dmidecode -s system-product-name lsb_release -sd Xorg -version xrandr -v sudo lshw -c display 
  2. Información base

     xrandr --verbose cat /etx/X11/xorg.conf more /var/log/Xorg.0.log 
  3. Depurar comandos y opciones

     sudo apt-get install edid-read ls /sys/class/drm/*/edid | xargs -i{} sh -c "echo {}; parse-edid < {}" xrandr --verbose ... xtrace xrandr --verbose ... #no need, only to compare between releases for changes, the default driver parameters sudo sh -c "ls /sys/module//parameters/ | xargs -L1 -i{} sh -c 'echo -n {} \" \" ; cat /sys/module//parameters/{}'" # additional desktop environment setting, for general cases, gnome/unity cat ~/.config/monitors.xml cat /etc/gnome-settings-daemon/xrandr/monitors.xml gsettings list-recursively org.gnome.settings-daemon.plugins.xrandr 
  4. Opciones avanzadas de depuración

    Agregue la Option "ModeDebug" "true" a la Section "Device" a xorg.conf , consulte la depuración de nvidia a continuación para obtener más detalles.

Información adicional de depuración para gráficos nvidia!

  • cat /proc/driver/nvidia/version para versión precisa
  • Activación de la información de depuración de nvidia en /var/log/Xorg.0.log

     gksu nvidia-settings # go to X configuration then export, copy only device section sudo mkdir /etc/X11/xorg.conf.d/ sudo vim /etc/X11/xorg.conf.d/90_my_nvidia_hacks.conf # paste the device section Section "Device" Identifier "Device0" Driver "nvidia" VendorName "NVIDIA Corporation" BoardName "NVS 3100M" Option "ModeDebug" "true" EndSection # add to it this line `Option "ModeDebug" "true"` 
  • La documentación completa se encuentra en el file:///usr/share/doc/nvidia-*/html/ , busque la misma versión en ejecución, hay muchos cambios en las opciones disponibles y en la configuración predeterminada.


Un caso de prueba de depuración con controlador Intel

Aquí hay un caso que puedo reproducirlo y parece un error en xrandr . Queda claro en xtrace & Xorg.0.log , que el frame-buffer no se redimensiona en la primera combinación.

 #Seems a bug in xrandr #Xorg error when changing to bigger resolution without changing a previously defined scale. #----------- #system info $ xrandr --version xrandr program version 1.4.3 Server reports RandR version 1.4 $ sudo sh -c "lsb_release -dc;echo; uname -a; Xorg -version;echo; lshw -C display" Description: Ubuntu 15.10 Codename: wily Linux BlueSkies 4.2.0-25-generic #30-Ubuntu SMP Mon Jan 18 12:31:50 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux X.Org X Server 1.17.2 Release Date: 2015-06-16 X Protocol Version 11, Revision 0 Build Operating System: Linux 3.13.0-68-generic x86_64 Ubuntu Current Operating System: Linux BlueSkies 4.2.0-25-generic #30-Ubuntu SMP Mon Jan 18 12:31:50 UTC 2016 x86_64 Kernel command line: BOOT_IMAGE=/boot/vmlinuz-4.2.0-25-generic root=UUID=9f0530d5-e0eb-43fa-b99b-000fa742cf10 ro persistent quiet splash vt.handoff=7 Build Date: 12 November 2015 05:33:29PM xorg-server 2:1.17.2-1ubuntu9.1 (For technical support please see http://www.ubuntu.com/support) Current version of pixman: 0.32.6 Before reporting problems, check http://wiki.x.org to make sure that you have the latest version. *-display description: VGA compatible controller product: 3rd Gen Core processor Graphics Controller vendor: Intel Corporation physical id: 2 bus info: [email protected]:00:02.0 version: 09 width: 64 bits clock: 33MHz capabilities: msi pm vga_controller bus_master cap_list rom configuration: driver=i915 latency=0 resources: irq:26 memory:f6400000-f67fffff memory:e0000000-efffffff ioport:f000(size=64) $ sudo sh -c "ls /sys/module/i915/parameters/ | xargs -L1 -i{} sh -c 'echo -n {} \" \" ; cat /sys/module/i915/parameters/{}'" disable_display N disable_power_well 1 disable_vtd_wa N edp_vswing 0 enable_cmd_parser 1 enable_execlists 0 enable_fbc -1 enable_hangcheck Y enable_ips 1 enable_ppgtt 1 enable_psr 0 enable_rc6 3 fastboot N invert_brightness 0 load_detect_test N lvds_channel_mode 0 lvds_downclock 0 lvds_use_ssc -1 mmio_debug 0 modeset -1 nuclear_pageflip N panel_ignore_lid 1 prefault_disable N preliminary_hw_support 0 reset Y semaphores -1 use_mmio_flip 0 vbt_sdvo_panel_type -1 verbose_state_checks Y $ modinfo i915 filename: /lib/modules/4.2.0-25-generic/kernel/drivers/gpu/drm/i915/i915.ko license: GPL and additional rights description: Intel Graphics author: Intel Corporation author: Tungsten Graphics, Inc. firmware: i915/skl_dmc_ver1.bin srcversion: BB05D6968744E69AEA30DC2 ... depends: drm_kms_helper,drm,video,i2c-algo-bit intree: Y vermagic: 4.2.0-25-generic SMP mod_unload modversions $ xrandr Screen 0: minimum 8 x 8, current 1726 x 768, maximum 32767 x 32767 LVDS1 connected primary 1366x768+0+0 (normal left inverted right x axis y axis) 309mm x 173mm 1366x768 60.07*+ 40.02 1360x768 59.80 59.96 1280x720 60.00 1024x768 60.00 1024x576 60.00 960x540 60.00 800x600 60.32 56.25 864x486 60.00 640x480 59.94 720x405 60.00 680x384 60.00 640x360 60.00 DP1 disconnected (normal left inverted right x axis y axis) DP2 disconnected (normal left inverted right x axis y axis) DP3 disconnected (normal left inverted right x axis y axis) HDMI1 disconnected (normal left inverted right x axis y axis) HDMI2 disconnected (normal left inverted right x axis y axis) HDMI3 disconnected (normal left inverted right x axis y axis) VGA1 connected 360x200+1366+0 (normal left inverted right x axis y axis) 410mm x 230mm 1366x768 59.79 + 1280x1024 60.02 1280x720 60.00 1024x768 60.00 800x600 60.32 640x480 60.00 720x400 70.08* VIRTUAL1 disconnected (normal left inverted right x axis y axis) Other info not collected $ grep intel /var/log/Xorg.0.log #------------------------- #case reproducing & debug ## 1st combination different mode & same scale $ xrandr --output VGA1 --mode 720x400 --right-of LVDS1 --scale 0.5x0.5 $ xtrace xrandr --verbose --output VGA1 --mode 1366x768 --right-of LVDS1 --scale 0.5x0.5 000:<:0030: 28: RANDR-Request(140,21): SetCrtcConfig crtc=0x00000040 timestamp=0x00000000 config timestamp=0x00010a4d x=0 y=0 mode=0x00000000 rr=Rotate_0 outputs=; 000:>:0030:32: Reply to SetCrtcConfig: status=Success(0x00) screen 0: 1726x768 453x202 mm 96.57dpi crtc 1: 720x400 70.08 +1366+0 "VGA1" 000:<:0031: 20: RANDR-Request(140,7): SetScreenSize window=0x000000d9 width=1726 height=768 width[mm]=453 height[mm]=202 000:<:0032: 32: RANDR-Request(140,21): SetCrtcConfig crtc=0x00000040 timestamp=0x00000000 config timestamp=0x00010a4d x=1366 y=0 mode=0x000000fc rr=Rotate_0 outputs=0x0000004a; 000:>:0032:32: Reply to SetCrtcConfig: status=Success(0x00) screen 0: 2049x768 538x202 mm 96.57dpi crtc 1: 1366x768 59.79 +1366+0 "VGA1" 000:<:002f: 4: Request(36): GrabServer 000:<:0030: 20: RANDR-Request(140,7): SetScreenSize window=0x000000d9 width=2049 height=768 width[mm]=538 height[mm]=202 000:<:0031: 32: RANDR-Request(140,21): SetCrtcConfig crtc=0x00000040 timestamp=0x00000000 config timestamp=0x00010a4d x=1366 y=0 mode=0x000000f8 rr=Rotate_0 outputs=0x0000004a; 000:>:0030:Error 8=Match: major=140, minor=7, bad=217 000:>:0031:32: Reply to SetCrtcConfig: status=Success(0x00) X Error of failed request: BadMatch (invalid parameter attributes) Major opcode of failed request: 140 (RANDR) Minor opcode of failed request: 7 (RRSetScreenSize) Serial number of failed request: 48 Current serial number in output stream: 49 ## 2nd combination same mode & different scale $ xtrace xrandr --verbose --output VGA1 --mode 1366x768 --right-of LVDS1 --scale 1x1 $ xtrace xrandr --verbose --output VGA1 --mode 1366x768 --right-of LVDS1 --scale 0.5x0.5 screen 0: 2732x768 718x202 mm 96.57dpi crtc 1: 1366x768 59.79 +1366+0 "VGA1" 000:<:002f: 4: Request(36): GrabServer 000:<:0030: 20: RANDR-Request(140,7): SetScreenSize window=0x000000d9 width=2732 height=768 width[mm]=718 height[mm]=202 000:<:0031: 56: RANDR-Request(140,26): SetCrtcTransform crtc=0x00000040 transform={matrix=1.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,1.000000;}; filter name='nearest' filter params=; 000:<:0032: 32: RANDR-Request(140,21): SetCrtcConfig crtc=0x00000040 timestamp=0x00000000 config timestamp=0x00010a4d x=1366 y=0 mode=0x000000f8 rr=Rotate_0 outputs=0x0000004a; 000:>:0032:32: Reply to SetCrtcConfig: status=Success(0x00) 000:<:0030: 28: RANDR-Request(140,21): SetCrtcConfig crtc=0x00000040 timestamp=0x00000000 config timestamp=0x00010a4d x=0 y=0 mode=0x00000000 rr=Rotate_0 outputs=; 000:>:0030:32: Reply to SetCrtcConfig: status=Success(0x00) screen 0: 2049x768 538x202 mm 96.57dpi crtc 1: 1366x768 59.79 +1366+0 "VGA1" 000:<:0031: 20: RANDR-Request(140,7): SetScreenSize window=0x000000d9 width=2049 height=768 width[mm]=538 height[mm]=202 000:<:0032: 56: RANDR-Request(140,26): SetCrtcTransform crtc=0x00000040 transform={matrix=0.500000,0.000000,0.000000,0.000000,0.500000,0.000000,0.000000,0.000000,1.000000;}; filter name='bilinear' filter params=; 000:<:0033: 32: RANDR-Request(140,21): SetCrtcConfig crtc=0x00000040 timestamp=0x00000000 config timestamp=0x00010a4d x=1366 y=0 mode=0x000000f8 rr=Rotate_0 outputs=0x0000004a; 000:>:0033:32: Reply to SetCrtcConfig: status=Success(0x00) $ tail /var/log/Xorg.0.log ##1st [ 6644.557] (II) intel(0): resizing framebuffer to 1726x768 [ 6644.560] (II) intel(0): switch to mode [email protected] on VGA1 using pipe 1, position (1366, 0), rotation normal, reflection none [ 6660.882] (II) intel(0): switch to mode [email protected] on VGA1 using pipe 1, position (1366, 0), rotation normal, reflection none ##2nd [ 6804.638] (II) intel(0): resizing framebuffer to 2732x768 [ 6804.647] (II) intel(0): switch to mode [email protected] on VGA1 using pipe 1, position (1366, 0), rotation normal, reflection none [ 6817.753] (II) intel(0): resizing framebuffer to 2049x768 [ 6817.757] (II) intel(0): switch to mode [email protected] on VGA1 using pipe 1, position (1366, 0), rotation normal, reflection none 

Casos notables de otras preguntas

  • xrandr: Failed to get size of gamma for output default

    Soporte del controlador o problema No hay unidad cargada, esto es famoso con nomodeset y gráficos antiguos. xrandr no funciona bien sin KMS. Indicadores:

    1. sudo lshw -c display podría ser *-display UNCLAIMED también driver= empty.
    2. maximum 1920 x 1080 tamaño maximum 1920 x 1080 búfer de maximum 1920 x 1080 es exactamente el tamaño de la pantalla como mínimo, la mayoría de los gráficos ahora tienen un maximum 8192 x 8192 , un maximum 16384 x 16384 o incluso 32Kx32K.
    3. No hay un nombre regular de conexión por default !
    4. Se utiliza un procesador de software OpenGL, verifique glxinfo , por ejemplo: Gallium3D/llvmpipe .

    Para reproducir un problema similar

    Cree un virtualbox de Ubuntu sin instalar los módulos / adiciones invitados (que incluyen el controlador de gráficos vbox). Será muy lento y lo mismo sucederá con la máquina real.

  • X Error of failed request: BadMatch (invalid parameter attributes) (RRQueryOutputProperty)

    Un nombre de propiedad incorrecto usado con xrandr --output .. --set , el usuario debe verificar primero las propiedades disponibles usando xrandr --prop . El mismo caso resuelto aquí:

    No se puede cambiar el brillo en la computadora portátil

    Las propiedades disponibles dependen del controlador y el adaptador usados, por lo que podría ser un resultado del punto anterior del problema del controlador, ya que no hay propiedades declaradas a xrandr.

    Para reproducir un problema similar

     xrandr --output  --set whatever 0 
  • X Error of failed request: BadMatch (invalid parameter attributes) (RRAddOutputMode)

    Mi teoría actual, planea probar más tarde cuando tenga tiempo. documentado aquí así que no me olvido y otros pueden dar algún comentario.

    Error producido con xrandr .. --addmode cuando el controlador lo rechaza, debido a la validación de EDID. Noté que nvidia elimina algunos modos después de habilitar “ModeDebug”. Ya sea:

    1. Los datos EDID del monitor no son perfectos
    2. Los controladores no son robustos en el procesamiento de EDID
    3. La entrada de modo generado no está en el rango de monitor declarado en EDID

    (1 y 2) la solución es la anulación personalizada de Hsync / Vsync / PixelClock o el archivo EDID local completo, algunos controladores pueden ignorar EDID.

    (3) la solución es probar entrada de modo diferente. Nota la diferencia

     $ cvt 1280 800 60 # 1280x800 59.81 Hz (CVT 1.02MA) hsync: 49.70 kHz; pclk: 83.50 MHz Modeline "1280x800_60.00" 83.50 1280 1352 1480 1680 800 803 809 831 -hsync +vsync $ gtf 1280 800 60 # 1280x800 @ 60.00 Hz (GTF) hsync: 49.68 kHz; pclk: 83.46 MHz Modeline "1280x800_60.00" 83.46 1280 1344 1480 1680 800 801 804 828 -HSync +Vsync # reduce mode only for flat monitors $ cvt -r 1280 800 60 # 1280x800 59.91 Hz (CVT 1.02MA-R) hsync: 49.31 kHz; pclk: 71.00 MHz Modeline "1280x800R" 71.00 1280 1328 1360 1440 800 803 809 823 +hsync -vsync 

    Algunos casos se resolvieron simplemente cambiando el vsync un poco más abajo, por ejemplo 1280 800 59.80 .