Warum treten xrandr-Fehler "BadMatch", "BadName", "Gamma Failed" auf?


13

Ich habe keine einzige Lösung für solche Fehler gefunden, trotz der ziemlich großen Anzahl von Benutzern, die sie haben.

Also möchte ich versuchen, selbst eine Lösung zu finden. Ich habe jedoch keine Ahnung, warum sie auftreten ...

Gibt es jemanden, der weiß warum? Sie müssen nicht sagen, warum jeder Fehler auftritt, nur einer wäre großartig!

Beispiele:

BadMatch-Fehler:

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

BadName-Fehler:

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

Gamma-Fehler:

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*

Welchen Befehl führen Sie aus, um jeden zu generieren?
user.dz

1
cvt resolution- dann die üblichen --newmode, --addmodeund --outputBefehle
TellMeWhy

Antworten:


12

Minimum Info

Sie werden eine Frage stellen und dann den durch diesen Befehl erzeugten Link hinzufügen

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


Fehlerbehebung

Kleines Gespräch

Viel komplizierter als ich dachte, da ich versucht habe, mit meiner Intel-GPU für einige Zeit zu spielen xrandr. Manchmal erhalte ich unerwartete Fehler. Dies ist ein Sommer für meine Erfahrung.

Hier ist eine vereinfachte vollständige Stapelliste, wie ich es verstehe.

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

Es ist wirklich ein großer Stapel zur Fehlerbehebung, schwieriger mit alter Hardware und den fortlaufenden proprietären Treiberaktualisierungen, selbst eine schlechte Kontaktierung des DB-15-VGA-Kabels (oder eines billigen Kabels) kann einen Unterschied machen. Tatsächlich handelt es sich bei den meisten Problemen, die ich hier in Ask Ubuntu lese, um fehlende / falsche EDID- Daten auf dem Monitor, die Schuld sind: Kabel (kvm-Switch / Verbindungsadapter). Das merkt man schnell an der xrandr --verboseAusgabe.

In vielen Fällen schränken Treiber auch einige Modi wegen unvollständiger / teilweise falscher EDID-Daten vom Monitor ein (Herstellerfehler). Der Benutzer überwindet dies, indem er benutzerdefiniert schreibt xorg.conf, um Folgendes zu überschreiben: Modus, HSync & VSync, EDID, DPI ... je nach Treiber ( nvidiaz Beispiel kann IgnoreEDID vom Monitor)

Ich empfehle dies, um es für fortgeschrittene Benutzer oder diejenigen, die hier Hilfe anbieten, zu lesen:

Beachten:

Seien Sie vorsichtig, wenn Sie alte Dokumentationen und Beiträge lesen, die Lösungen bieten. Besser, Sie suchen nach der Dokumentation für das verwendete Laufwerk.

  • Überprüfen Sie das Veröffentlichungsdatum, das Datum der letzten Bearbeitung oder die Softwareversion.
  • modeset, DRIoder fb(Framebuffer) Treibertyp. (Sei dir nur bewusst, ich bin kein Experte).
  • Xorg hat viel für die automatische Konfiguration getan, xorg.confwird also nicht standardmäßig erstellt. Auch wenn der Benutzer einen erstellt hat, sollte er nicht alle Abschnitte erstellen, sondern nur die erforderlichen überschreiben. Es ist eine Art Konfiguration im laufenden Betrieb.

Mein bloßes Verständnis dieser xrandr / X-Fehler

Der Sohn ( xrandr) scheint nicht zu wissen, was sein Vater kann oder will, um ihn zu kaufen (alle Fahrerfähigkeiten), also geht er einfach zu seiner Mutter (Xorg) und bittet sie, seinen Vater nach Dingen zu fragen, die er möchte. So wird eines der folgenden Szenarien passieren:

  • hohes Verhältnis: Sohn → (:) akzeptieren) Mama → (:) akzeptieren) Papa, jeder ist glücklich!
  • niedriges Verhältnis: Sohn → (: | akzeptieren) Mutter → (XD ablehnen) Vater, das Leben ist manchmal schwer!
  • seltener Fall: Sohn → (X / ablehnen) Mutter -x- (: | neutral) Vater, Zeit für Plan B!

Daher erhalten wir den folgenden Fehler, wenn Xorg oder Driver die XRANDR-Anfrage nicht verarbeiten oder ablehnen können:

  • Aktuelle Xorg-Einstellungen
  • Treiberfähigkeiten
  • Grafikadapter-Funktionen
  • Die Überwachungsfunktionen stammen von EDID
  • Ein Fehler in einem von ihnen einschließlich xrandr

Sammeln von Debug-Informationen für allgemeine Grafiken!

Warum? Ich habe mir hier viele Fragen zum Thema xrandr& Auflösung angesehen , es fehlen viele Informationen zum vollständigen Stack-Setup. Als Satz wird nur der letzte fehlgeschlagene Befehl erwähnt. Ich würde sogar vorschlagen, alle Ergebnisse in die Frage einzubeziehen, damit wir nach Gemeinsamkeiten suchen und die damit verbundenen Probleme verknüpfen können.

Wenn keine EDID-Daten gefunden wurden, beginnen Sie mit:

  • Wie ist der Monitor physikalisch angeschlossen, dh wird ein KVM verwendet? Beliebiger Verbindungsadapter ex. HDMI zu VGA?
  • Hast du ein anderes Kabel ausprobiert?
  • Was ist der Monitor Marke / Modell?

Hier eine Liste einiger hilfreicher Befehle

  1. Hintergrundinformation

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

    xrandr --verbose
    cat /etx/X11/xorg.conf
    more /var/log/Xorg.0.log
    
  3. Debug-Befehle und -Optionen

    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. Erweiterte Debug-Optionen

    In Option "ModeDebug" "true"bis finden nvidia Debug unten.Section "Device"xorg.conf

Zusätzliche Debug-Informationen für NVIDIA-Grafiken!

  • cat /proc/driver/nvidia/version für genaue version
  • Aktivieren von NVIDIA-Debug-Informationen zu /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"`
    
  • Vollständige Dokumentation bei file:///usr/share/doc/nvidia-*/html/, suchen Sie nach der gleichen laufenden Version, es gibt viele Änderungen in den verfügbaren Optionen und Standardeinstellungen.


Ein Debugging-Testfall mit Intel-Treiber

Hier ist ein Fall, den ich reproduzieren kann und der wie ein Bug in scheint xrandr. Aus xtrace& ist ersichtlich Xorg.0.log, dass die Größe des Frame-Puffers in der ersten Kombination nicht geändert wurde.

#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

Bemerkenswerte Fälle aus anderen Fragen

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

    Treiberunterstützung oder kein Problem mit geladenem Laufwerk, dies ist berühmt für nomodesetalte Grafiken. xrandrfunktioniert nicht gut ohne KMS. Indikatoren:

    1. sudo lshw -c displaykönnte *-display UNCLAIMEDauch driver=leer sein.
    2. maximum 1920 x 1080Puffergröße genau Bildschirmgröße als Minimum, jetzt sind die meisten Grafiken sind maximum 8192 x 8192, maximum 16384 x 16384oder sogar 32Kx32K.
    3. Kein regulärer Name der Verbindung default!
    4. Ein OpenGL Software - Renderer verwendet wird , Scheck glxinfo, Beispiel: Gallium3D/llvmpipe.

    Um ähnliche Ausgabe zu reproduzieren

    Erstellen Sie eine Ubuntu-Virtualbox, ohne die Gast-Erweiterungen / -Module (die den vbox-Grafiktreiber enthalten) zu installieren. Es wird sehr langsam sein und dasselbe passiert mit der realen Maschine.

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

    Bei Verwendung eines falschen Eigenschaftsnamens xrandr --output .. --set <name> <value>sollte der Benutzer zuerst mithilfe von nach verfügbaren Eigenschaften suchen xrandr --prop. Gleicher Fall hier gelöst:

    Die Helligkeit des Laptops kann nicht geändert werden

    Die verfügbaren Eigenschaften hängen vom verwendeten Treiber und Adapter ab. Daher kann dies auf frühere Treiberprobleme zurückzuführen sein, da für xrandr keine Eigenschaften deklariert wurden.

    Um ähnliche Ausgabe zu reproduzieren

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

    Meine aktuelle Theorie, die ich später testen möchte, wenn ich Zeit habe. hier dokumentiert. Also vergesse ich nicht und andere können Feedback geben.

    Fehler, der bei xrandr .. --addmodeAblehnung durch den Treiber aufgrund der EDID-Validierung auftritt. Mir ist aufgefallen, dass nvidia nach dem Aktivieren des "ModeDebug" einige Modi entfernt. Entweder:

    1. EDID-Daten vom Monitor sind nicht perfekt
    2. Treiber nicht robust in der Verarbeitung von EDID
    3. Der generierte Moduseintrag befindet sich nicht in dem in EDID deklarierten Überwachungsbereich

    (1 & 2) Lösung ist benutzerdefinierte Überschreibung von Hsync / Vsync / PixelClock oder komplette lokale EDID-Datei, einige Treiber können EDID ignorieren.

    (3) Lösung besteht darin, einen anderen Moduseintrag zu versuchen. Beachten Sie den Unterschied

    $ 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
    

    Einige Fälle wurden behoben, indem zum Beispiel nur der Wert für vsync etwas niedriger eingestellt wurde 1280 800 59.80.


1
Dies ist, was ich zu denken begann ... Sie scheinen in so kurzer Zeit eine riesige Menge herausgefunden zu haben. Ich werde alle Befehle / Dateien überprüfen, die Sie angegeben haben, und sehen, wie ich das erweitern kann. Nochmals vielen Dank Sneetsher!
TellMeWhy

@ DevRobot, mir ist aufgefallen, dass Sie nach Xrandr-Quellen gesucht haben, und ich dachte, Sie interessieren sich möglicherweise mehr für das Debuggen. Ich habe einen interessanten Fall hinzugefügt, der es mit allen Informationen reproduzieren könnte, die ich sammeln könnte.
user.dz

2
Wow, was für eine gründliche Arbeit.
Jacob Vlijm

Wo um alles in der Welt hast du das alles gefunden?
TellMeWhy

@ DevRobot, Nun, nachdem ich hier das erste Mal eine Antwort gegeben habe, beginne ich, die Fälle über Grafikstapel hier in AU zu verfolgen. Und mehr interessiert an den Beiträgen, die eine Lösung haben. Außerdem habe ich einige Zeit damit verbracht, einige Probleme zu reproduzieren und ein externes Dokument zu lesen (ich habe diejenigen verlinkt, die ich interessant fand).
user.dz
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.