¿Por qué ocurren los errores xrandr "BadMatch", "BadName", "Gamma Failed"?

13

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

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

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

Ejemplos:

Error de 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 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*
Dime por qué
fuente
¿Qué comando ejecutas para generar cada uno?
user.dz
1
cvt resolution- luego lo habitual --newmode, --addmodey --outputcomandos
TellMeWhy

Respuestas:

12

Información mínima

Hará una pregunta y luego agregará 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 xrandr. A veces, recibo errores inesperados. Este es un verano para mi experiencia.

Aquí hay una lista de pila completa simplificada, según tengo entendido.

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

Es realmente una gran pila para solucionar problemas, más difícil con el hardware antiguo y las actualizaciones de los controladores patentados, incluso un mal contacto de clavija en el cable DB-15 VGA (o cable barato) puede marcar la diferencia. En realidad, la mayoría de los problemas que leí aquí en Ask Ubuntu son simplemente datos EDID faltantes / incorrectos del monitor, culpando a: cables (conmutador kvm / adaptador de conexión). Puede notarlo rápidamente desde la xrandr --verbosesalida.

Muchos casos también son controladores que restringen algunos modos debido a datos EDID incompletos / parcialmente incorrectos del Monitor (error del fabricante), el usuario supera esto escribiendo personalizado xorg.confpara anular: Modo, HSync y VSync, EDID, DPI ... dependiendo del controlador ( nvidiapara ejemplo puede IgnoreEDID del monitor)

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

Darse cuenta:

Tenga cuidado al leer viejas documentaciones y publicaciones que brinden 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, DRIo fbtipo de controlador (framebuffer). (solo ten en cuenta que no soy un experto).
  • Xorg ha hecho mucho hacia la configuración automática, por xorg.conflo que no se crea de forma predeterminada. Incluso si el usuario ha creado uno, no debe crear todas las secciones, sino que solo anula 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 estar al tanto de lo que su padre puede o estará de acuerdo en comprarlo (todas las capacidades del conductor), por lo que simplemente va con su madre (Xorg) y le pide que le pida a su padre las cosas que quiere. Entonces, cualquiera de los siguientes escenarios sucederá:

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

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

  • Configuración actual de Xorg
  • Capacidades del conductor
  • Capacidades de adaptador de gráficos
  • Supervisar las capacidades obtenidas de EDID
  • Un error en uno de ellos, incluido xrandr

¡Recopilación de información de depuración para gráficos genéricos!

¿Por qué? Observé muchas preguntas relacionadas con xrandr& resolución , les falta mucha información sobre la configuración de la pila completa. El conjunto considerado solo menciona el último comando fallido. Incluso, sugeriría poner los resultados completos 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 ex. HDMI a VGA?
  • ¿Has probado con otro cable?
  • ¿Cuál 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/<driver-module-from-lshw>/parameters/ | xargs -L1 -i{} sh -c 'echo -n {} \" \" ; cat /sys/module/<driver-module-from-lshw>/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

    Añadir Option "ModeDebug" "true"a Section "Device"que xorg.conf, ver depuración nvidia los detalles a continuación.

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

  • cat /proc/driver/nvidia/version para versión precisa
  • Activar 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"`
    
  • Documentación completa en file:///usr/share/doc/nvidia-*/html/, busque la misma versión en ejecución, hay muchos cambios en las opciones disponibles y la configuración predeterminada.


Un caso de prueba de depuración con controlador Intel

Aquí hay un caso en el que puedo reproducirlo y parece un error xrandr. Está claro de 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: pci@0000: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 de controlador o Problema sin unidad cargada, esto es famoso con nomodesetgráficos antiguos. xrandrno funciona bien sin KMS. Indicadores

    1. sudo lshw -c display*-display UNCLAIMEDTambién podría estar driver=vacío.
    2. maximum 1920 x 1080el tamaño del búfer es exactamente el tamaño de la pantalla como mínimo, la mayoría de los gráficos ahora lo son maximum 8192 x 8192, maximum 16384 x 16384o incluso 32Kx32K.
    3. ¡Sin nombre de conexión regular default!
    4. Se utiliza un software de representación de OpenGL, cheque glxinfo, ejemplo: Gallium3D/llvmpipe.

    Para reproducir un problema similar

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

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

    Se usó un nombre de propiedad incorrecto xrandr --output .. --set <name> <value>, 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 utilizados, por lo que podría ser el resultado de un problema anterior del punto del controlador, ya que no hay propiedades declaradas a xrandr.

    Para reproducir un problema similar

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

    Mi teoría actual, planeando probar más tarde cuando tenga tiempo. documentado aquí. así que no lo olvido y otros pueden dar algunos comentarios.

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

    1. Los datos EDID del monitor no son perfectos
    2. Controladores no robustos en el procesamiento de EDID
    3. La entrada del 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 una 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 bajo, por ejemplo 1280 800 59.80.

user.dz
fuente
1
Esto es lo que estaba empezando a pensar ... parece que descubriste una gran cantidad en tan poco tiempo. Revisaré todos los comandos / archivos que has dado, y veré cómo puedo ampliar eso. Gracias de nuevo Sneetsher!
TellMeWhy
@DevRobot, noté que buscaste la fuente xrandr, así que pensé que es posible que estés más interesado en la depuración. He agregado un caso interesante que podría reproducirlo con toda la información que pudiera recopilar.
user.dz
2
Wow, qué trabajo tan minucioso.
Jacob Vlijm
¿Dónde diablos encontraste todo esto?
TellMeWhy
@DevRobot, Bueno, después de la primera vez que puse una respuesta aquí, empiezo a seguir los casos sobre la pila de gráficos aquí en AU. Y más interesado en las publicaciones que obtuvieron una solución. También pasé algún tiempo tratando de reproducir algunos problemas y leyendo algunos documentos externos (vinculé los que me parecieron interesantes).
user.dz