Perché si verificano errori xrandr “BadMatch”, “BadName”, “Gamma Failed”?


13

Non ho trovato un'unica soluzione a tali errori, nonostante il numero piuttosto elevato di utenti che li hanno.

Quindi voglio provare a trovare una soluzione da solo. Tuttavia, non ho idea del perché si verifichino ...

C'è qualcuno che sa perché? Non hai detto perché si verifica ogni errore, solo uno sarebbe fantastico!

Esempi:

Errore 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

Errore 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

Errore gamma non riuscito:

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*

Quale comando esegui per generarli?
user.dz,

1
cvt resolution- poi i soliti --newmode, --addmodee --outputcomandi
TellMeWhy

Risposte:


12

Informazioni minime

Stai per porre una domanda, quindi aggiungi il link generato da questo 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


Risoluzione dei problemi

Chiacchiere

Molto complicato di quanto pensassi, poiché ho provato a giocare con la mia GPU Intel per qualche tempo usando xrandr . A volte, ricevo errori inaspettati. Questo è un riassunto della mia esperienza.

Ecco un elenco di stack completo semplificato, a quanto ho capito.

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

È davvero uno stack di grandi dimensioni da risolvere, più difficile con l'hardware vecchio e gli aggiornamenti dei driver proprietari a rotazione, anche un cattivo contatto del pin nel cavo VGA DB-15 (o cavo economico) può fare la differenza. In realtà, la maggior parte dei problemi che ho letto qui in Ask Ubuntu riguarda semplicemente la mancanza / errata di dati EDID dal monitor, la colpa: cavi (switch kvm / adattatore di connessione). Lo si può notare rapidamente xrandr --verbosedall'output.

Molti casi sono anche i driver limitano alcune modalità a causa di dati EDID incompleti / parzialmente errati dal monitor (errore del produttore), l'utente lo supera scrivendo personalizzato xorg.conf per sovrascrivere: Mode, HSync & VSync, EDID, DPI ... a seconda del driver ( nvidiaper esempio può IgnoreEDID dal monitor)

Consiglio questo da leggere per utenti esperti o quelli che forniscono assistenza qui:

Avviso:

Prestare attenzione durante la lettura di vecchi documenti e post che forniscono soluzioni. Meglio, cercare la documentazione per quella specifica unità in uso.

  • Verifica la data di pubblicazione, la data dell'ultima modifica o la versione del software.
  • modeset, DRIofb (framebuffer) tipo di driver. (basta essere consapevoli, non sono un esperto).
  • Xorg ha fatto molto per la configurazione automatica, quindi xorg.confnon viene creato per impostazione predefinita. Anche se l'utente ne ha creato uno, non dovrebbe creare tutte le sezioni ma sostituisce solo ciò che è necessario. È una specie di configurazione al volo.

La mia comprensione fittizia di quegli errori xrandr / X

Il figlio ( xrandr) sembra non essere al corrente di ciò che suo padre è in grado o accetterà di acquistarlo (tutte le capacità del conducente), quindi va da sua madre (Xorg) e le chiede di chiedere a suo padre le cose che vuole. Quindi si verificherà uno dei seguenti scenari:

  • alto rapporto: Figlio → (:) accetta) Mamma → (:) accetta) papà, tutti sono felici!
  • basso rapporto: Figlio → (: | accetta) Mamma → (rifiuto XD) papà, la vita a volte è dura!
  • caso raro: Figlio → (X / rifiuta) Mamma -x- (: | neutro) papà, tempo per il piano B!

Quindi riceviamo questi errori quando Xorg o Driver non sono in grado di elaborare o rifiutare la richiesta xrandr dovuta:

  • Impostazioni attuali di Xorg
  • Funzionalità del driver
  • Funzionalità dell'adattatore grafico
  • Funzionalità di monitoraggio ottenute da EDID
  • Un bug in uno di questi incluso xrandr

Raccolta delle informazioni di debug per la grafica generica!

Perché? Ho esaminato molte domande qui relative a xrandr& risoluzione , mancano molte informazioni sulla configurazione dello stack completo. L'insieme considerato ha menzionato solo l'ultimo comando non riuscito. Inoltre, suggerirei di inserire tutti i risultati nella domanda in modo da poter cercare somiglianze e collegare i problemi correlati.

Se non vengono trovati dati EDID, iniziare con:

  • Come viene fisicamente collegato il monitor, ovvero viene utilizzato un KVM? Qualsiasi adattatore di connessione es. Da HDMI a VGA?
  • Hai provato un altro cavo?
  • Qual è la marca / modello del monitor?

Ecco un elenco di alcuni comandi utili

  1. Informazioni sullo sfondo

    sudo dmidecode -s system-product-name
    lsb_release -sd
    Xorg -version
    xrandr -v
    sudo lshw -c display
    
  2. Informazioni di base

    xrandr --verbose
    cat /etx/X11/xorg.conf
    more /var/log/Xorg.0.log
    
  3. Comandi e opzioni di debug

    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. Opzioni di debug avanzate

    Aggiungere Option "ModeDebug" "true"al Section "Device"di xorg.conf, vedere il debug nvidia sotto per i dettagli.

Ulteriori informazioni di debug per la grafica NVIDIA!

  • cat /proc/driver/nvidia/version per una versione precisa
  • Attivazione delle informazioni di debug di nvidia su /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"`
    
  • Documentazione completa su file:///usr/share/doc/nvidia-*/html/, cerca la stessa versione in esecuzione, ci sono molti cambiamenti nelle opzioni disponibili e nelle impostazioni predefinite.


Un caso di test di debug con driver Intel

Ecco un caso in cui posso riprodurlo e sembra un bug xrandr. È chiaro da xtrace& Xorg.0.log, che il frame-buffer non viene ridimensionato nella prima combinazione.

#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 720x400@70.1 on VGA1 using pipe 1, position (1366, 0), rotation normal, reflection none
[  6660.882] (II) intel(0): switch to mode 1366x768@59.8 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 1366x768@59.8 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 1366x768@59.8 on VGA1 using pipe 1, position (1366, 0), rotation normal, reflection none

Casi notevoli da altre domande

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

    Supporto per driver o Nessun problema di caricamento dell'unità, questo è famoso con la nomodesetvecchia grafica. xrandrnon funziona bene senza KMS. indicatori:

    1. sudo lshw -c displaypotrebbe *-display UNCLAIMEDanche esseredriver= vuoto.
    2. maximum 1920 x 1080la dimensione del buffer è esattamente la dimensione minima dello schermo, la maggior parte della grafica ora lo è maximum 8192 x 8192, maximum 16384 x 16384o addirittura 32Kx32K.
    3. Nessun nome regolare di connessione default!
    4. Un software renderer OpenGL viene utilizzato, controllo glxinfo, ad esempio: Gallium3D/llvmpipe.

    Per riprodurre un problema simile

    Crea una virtualbox Ubuntu senza installare le aggiunte / i moduli guest (che include il driver grafico vbox). Sarà molto lento e lo stesso accadrà con la macchina reale.

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

    xrandr --output .. --set <name> <value>Usando un nome di proprietà errato , l'utente deve prima verificare le proprietà disponibili utilizzandoxrandr --prop . Lo stesso caso risolto qui:

    Impossibile modificare la luminosità nel laptop

    Le proprietà disponibili dipendono dal driver e dall'adattatore utilizzati, quindi potrebbe essere il risultato di un precedente problema con il driver, poiché nessuna proprietà dichiarata su xrandr.

    Per riprodurre un problema simile

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

    La mia teoria attuale, ho intenzione di testare più tardi quando avrò tempo. documentato qui. quindi non dimentico e altri potrebbero dare un feedback.

    Errore prodotto xrandr .. --addmodequando il conducente lo rifiuta, a causa della convalida EDID. Ho notato che nvidia rimuove alcune modalità dopo aver abilitato "ModeDebug". O:

    1. I dati EDID dal monitor non sono perfetti
    2. Driver non robusti nell'elaborazione di EDID
    3. La voce della modalità generata non è nell'intervallo di monitoraggio dichiarato in EDID

    La soluzione (1 e 2) è l'override personalizzato di Hsync / Vsync / PixelClock o il file EDID locale completo, alcuni driver possono ignorare EDID.

    (3) la soluzione è provare l'immissione in modalità diversa. Notare la differenza

    $ 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
    

    Alcuni casi risolti semplicemente cambiando il vsync un po 'più in basso, per esempio 1280 800 59.80.


1
Questo è quello che stavo iniziando a pensare ... sembra che tu abbia scoperto una quantità enorme in così poco tempo. Esaminerò tutti i comandi / file che hai dato e vedrò come posso espandermi. Grazie ancora Sneetsher!
TellMeWhy,

@DevRobot, ho notato che hai cercato la fonte xrandr, quindi ho pensato che potresti essere più interessato al debug. Ho aggiunto un caso interessante che potrebbe riprodurlo con tutte le informazioni che sono riuscito a raccogliere.
user.dz,

2
Wow, che lavoro accurato.
Jacob Vlijm,

Dove diavolo hai trovato tutto questo ??
TellMeWhy,

@DevRobot, Beh, dopo la prima volta che ho inserito una risposta qui, inizio a seguire i casi sullo stack grafico qui in Australia. E più interessato ai post che hanno ottenuto una soluzione. Inoltre ho trascorso un po 'di tempo cercando di riprodurre alcuni problemi e leggere alcuni documenti esterni (ho collegato quelli che li ho trovati interessanti).
user.dz,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.