Por que ocorrem os erros xrandr “BadMatch”, “BadName”, “Gamma Failed”?

13

Não encontrei uma solução única para esses erros, apesar do grande número de usuários que os possuem.

Então, eu quero tentar encontrar uma solução eu mesmo. No entanto, eu não tenho idéia do por que eles ocorrem ...

Existe alguém que sabe o porquê? Você não sabe por que ocorre cada erro, apenas um seria ótimo!

Exemplos:

Erro 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

Erro 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

Erro de falha de gama:

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*
Diga-me o porquê
fonte
Qual comando você executa para gerar cada um?
usar o seguinte comando
1
cvt resolution- então o habitual --newmode, --addmodee --outputcomandos
TellMeWhy

Respostas:

12

Informações mínimas

Você fará uma pergunta e depois adicionará o link gerado 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


Solução de problemas

Conversa fiada

Muito complicado do que eu pensava, pois tentei jogar com minha GPU Intel por algum tempo xrandr. Às vezes, recebo erros inesperados. Este é um verão para a minha experiência.

Aqui está uma lista simplificada de pilha completa, como eu a entendo.

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

É realmente uma pilha grande para solucionar problemas, mais difícil com o hardware antigo e as atualizações dos drivers proprietários rolantes, até mesmo um contato incorreto com pinos no cabo VGA DB-15 (ou cabo barato) pode fazer a diferença. Na verdade, a maioria dos problemas que li aqui no Ask Ubuntu são simplesmente dados EDID ausentes ou incorretos no monitor, culpando: cabos (switch kvm / adaptador de conexão). Você pode perceber isso rapidamente da xrandr --verbosesaída.

Em muitos casos, os drivers também restringem alguns modos devido a dados EDID incompletos / parcialmente incorretos do Monitor (erro do fabricante). O usuário supera isso escrevendo xorg.confsobrescrever personalizado : Mode, HSync & VSync, EDID, DPI ... dependendo do driver ( nvidiapor exemplo pode IgnoreEDID do monitor)

Eu recomendo que você leia para usuários avançados ou para os que fornecem ajuda aqui:

Aviso prévio:

Tenha cuidado ao ler documentações e postagens antigas que fornecem soluções. Melhor, procurar documentação para essa unidade específica em uso.

  • Verifique a data da postagem, a data da última edição ou a versão do software.
  • modeset, DRIou fbtipo de driver (framebuffer). (esteja ciente de que não sou especialista).
  • O Xorg fez muito pela configuração automática, portanto xorg.confnão é criado por padrão. Mesmo que o usuário tenha feito uma, ele não deve criar todas as seções, mas substitui apenas o necessário. É um tipo de configuração em tempo real.

Meu entendimento fictício desses erros xrandr / X

O filho ( xrandr) parece não estar ciente do que seu pai pode ou vai concordar em comprá-lo (todos os recursos do driver), então ele vai até a mãe (Xorg) e pede que ela peça ao pai o que ele quer. Portanto, qualquer um dos seguintes cenários acontecerá:

  • proporção alta: Filho → (:) aceita) Mãe → (:) aceita) pai, todo mundo está feliz!
  • proporção baixa: Filho → (: | aceita) Mãe → (rejeita XD) pai, a vida é difícil às vezes!
  • caso raro: Filho → (X / rejeitar) Mãe -x- (: | neutro) pai, hora do plano B!

Portanto, obtemos esse erro quando o Xorg ou o Driver não conseguem processar ou recusar a solicitação do xrandr devido:

  • Configurações atuais do Xorg
  • Recursos de driver
  • Recursos do adaptador gráfico
  • Monitorar recursos obtidos do EDID
  • Um bug em um deles, incluindo xrandr

Coletando informações de depuração para gráficos genéricos!

Por quê? Eu olhei para muitas perguntas aqui relacionadas a xrandr& resolution , elas estão faltando muita informação sobre a configuração de pilha cheia. Conjunto considerado mencionado apenas o último comando com falha. Mesmo assim, eu sugeriria colocar os resultados completos na pergunta para que possamos procurar semelhanças e vincular os problemas relacionados.

Se nenhum dado EDID encontrado, comece com:

  • Como o monitor está fisicamente conectado, ou seja, é usado um KVM? Qualquer adaptador de conexão ex. HDMI para VGA?
  • Você já tentou outro cabo?
  • Qual é a marca / modelo do monitor?

Aqui está uma lista de alguns comandos úteis

  1. Informação de fundo

    sudo dmidecode -s system-product-name
    lsb_release -sd
    Xorg -version
    xrandr -v
    sudo lshw -c display
    
  2. Informações básicas

    xrandr --verbose
    cat /etx/X11/xorg.conf
    more /var/log/Xorg.0.log
    
  3. Comandos e opções de depuração

    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. Opções avançadas de depuração

    Adicionar Option "ModeDebug" "true"para Section "Device"a xorg.conf, ver depuração nvidia abaixo para detalhes.

Informações de depuração adicionais para gráficos da nvidia!

  • cat /proc/driver/nvidia/version para versão precisa
  • Ativar informações de depuração da nvidia para /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"`
    
  • Documentação completa em file:///usr/share/doc/nvidia-*/html/, procure a mesma versão em execução, há muitas alterações nas opções disponíveis e nas configurações padrão.


Um caso de teste de depuração com driver Intel

Aqui está um caso em que eu posso reproduzi-lo e parece um bug xrandr. Está claro em xtrace& Xorg.0.log, que o buffer de quadros não é redimensionado na 1ª combinação.

#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 notáveis ​​de outras perguntas

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

    Suporte ao driver ou problema no drive não carregado, isso é famoso com nomodesetgráficos antigos. xrandrnão funciona bem sem o KMS. Indicadores:

    1. sudo lshw -c display*-display UNCLAIMEDtambém pode estar driver=vazio.
    2. maximum 1920 x 1080O tamanho do buffer é exatamente o tamanho da tela, no mínimo, a maioria dos gráficos agora é maximum 8192 x 8192, maximum 16384 x 16384ou mesmo 32Kx32K.
    3. Nenhum nome regular de conexão default!
    4. Um renderizador de software OpenGL é usado, verificação glxinfo, exemplo: Gallium3D/llvmpipe.

    Para reproduzir um problema semelhante

    Crie uma caixa virtual do Ubuntu sem instalar as adições / módulos de convidados (que inclui o driver de gráficos vbox). Vai ser muito lento e o mesmo acontece com a máquina real.

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

    Um nome de propriedade errado usado com xrandr --output .. --set <name> <value>, o usuário deve verificar primeiro as propriedades disponíveis usando xrandr --prop. Mesmo caso resolvido aqui:

    Não é possível alterar o brilho no laptop

    As propriedades disponíveis dependem do driver e do adaptador usados, portanto, isso pode ser resultado de um problema anterior do driver, pois nenhuma propriedade foi declarada como xrandr.

    Para reproduzir um problema semelhante

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

    Minha teoria atual, planejando testar mais tarde, quando tiver tempo. documentou aqui. então não esqueço e outros podem dar algum feedback.

    Erro produzido com xrandr .. --addmodea recusa do driver, devido à validação do EDID. Notei que a nvidia remove alguns modos depois de ativar o "ModeDebug". Ou:

    1. Os dados EDID do monitor não são perfeitos
    2. Drivers não robustos no processamento de EDID
    3. A entrada do modo gerado não está no intervalo do monitor declarado em EDID

    (1 e 2) é uma substituição personalizada do Hsync / Vsync / PixelClock ou do arquivo EDID local completo, alguns drivers podem ignorar o EDID.

    (3) solução é tentar a entrada de modo diferente. Observe a diferença

    $ 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
    

    Alguns casos foram resolvidos apenas alterando um pouco o vsync, por exemplo 1280 800 59.80.

user.dz
fonte
1
Isto é o que eu estava começando a pensar ... você parece ter descoberto uma quantidade enorme em tão pouco tempo. Vou verificar todos os comandos / arquivos que você forneceu e ver como posso expandir isso. Mais uma vez obrigado Sneetsher!
TellMeWhy
@ DevRobot, notei que você procurou a fonte xrandr, então pensei que talvez você estivesse interessado mais em depuração. Eu adicionei um caso interessante que poderia reproduzi-lo com todas as informações que eu poderia coletar.
user.dz
2
Uau, que trabalho completo.
Jacob Vlijm
Onde diabos você encontrou tudo isso?
TellMeWhy
@ DevRobot, Bem, após a primeira vez que coloquei uma resposta aqui, começo a seguir os casos sobre a pilha de gráficos aqui na AU. E mais interessado nos posts que obtiveram uma solução. Também passei algum tempo tentando reproduzir alguns problemas e lendo algum documento externo (vinculei os que achei interessantes).
user.dz