Pourquoi les erreurs xrandr «BadMatch», «BadName», «Gamma Failed» se produisent-elles?

13

Je n'ai pas trouvé de solution unique à de telles erreurs, malgré le nombre assez élevé d'utilisateurs qui en ont.

Je veux donc essayer de trouver une solution moi-même. Cependant, je n'ai aucune idée pourquoi ils se produisent ...

Y a-t-il quelqu'un qui sait pourquoi? Vous n'avez pas à dire pourquoi chaque erreur se produit, une seule serait géniale!

Exemples:

Erreur 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

Erreur 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

Erreur d'échec 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*
Dis moi pourquoi
la source
Quelle commande vous exécutez pour générer chacun d'eux?
user.dz
1
cvt resolution- puis l'habituel --newmode, --addmodeet --outputcommandes
TellMeWhy

Réponses:

12

Info minimum

Vous allez poser une question puis ajouter le lien généré par cette commande

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


Dépannage

Petite discussion

Beaucoup plus compliqué que je ne le pensais, car j'ai essayé de jouer avec mon GPU Intel pendant un certain temps en utilisant xrandr. Parfois, j'obtiens des erreurs inattendues. Ceci est un été pour mon expérience.

Voici une liste de pile complète simplifiée, si je comprends bien.

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

C'est vraiment une grande pile à dépanner, plus difficile avec l'ancien matériel et les mises à jour des pilotes propriétaires, même un mauvais contact de broche dans le câble DB-15 VGA (ou câble bon marché) peut faire la différence. En fait, la majorité des problèmes que j'ai lus ici dans Ask Ubuntu concernent simplement des données EDID manquantes / incorrectes du moniteur, blâmant: les câbles (commutateur kvm / adaptateur de connexion). Vous pouvez le constater rapidement à partir de la xrandr --verbosesortie.

De nombreux cas sont également des pilotes qui restreignent certains modes en raison de données EDID incomplètes / partiellement erronées du moniteur (erreur du fabricant), l'utilisateur surmonte cela en écrivant une xorg.confcommande personnalisée pour remplacer: Mode, HSync & VSync, EDID, DPI ... selon le pilote ( nvidiapour l'exemple peut IgnorerEDID du moniteur)

Je recommande ceci à lire pour les utilisateurs avancés ou ceux qui fournissent de l'aide ici:

Remarquer:

Soyez prudent lorsque vous lisez d'anciennes documentations et publications fournissant des solutions. Mieux, pour rechercher la documentation de ce lecteur spécifique utilisé.

  • Vérifiez la date de publication, la dernière date de modification ou la version du logiciel.
  • modeset, DRIOu fb(framebuffer) Type de conducteur. (sachez que je ne suis pas un expert).
  • Xorg a fait beaucoup pour la configuration automatique et xorg.confn'est donc pas créé par défaut. Même si l'utilisateur en a créé une, il ne doit pas créer toutes les sections mais remplace uniquement ce qui est nécessaire. C'est une sorte de configuration à la volée.

Ma fausse compréhension de ces erreurs xrandr / X

Le fils ( xrandr) ne semble pas au courant de ce que son père peut ou acceptera de lui acheter (toutes les capacités du conducteur), alors il va simplement voir sa mère (Xorg) et lui demande de demander à son père ce qu'il veut. Donc, l'un des scénarios suivants se produira:

  • ratio élevé: Fils → (:) accepte) Maman → (:) accepte) papa, tout le monde est heureux!
  • faible ratio: Fils → (: | accepter) Maman → (rejet XD) papa, la vie est parfois difficile!
  • cas rare: Fils → (X / rejeter) Maman -x- (: | neutre) papa, c'est l'heure du plan B!

Nous obtenons donc ces erreurs lorsque Xorg ou Driver ne peuvent pas traiter ou refuser la demande xrandr en raison:

  • Paramètres Xorg actuels
  • Capacités du pilote
  • Capacités de l'adaptateur graphique
  • Les capacités de surveillance obtenues grâce à EDID
  • Un bug dans l'un d'eux dont xrandr

Collecte des informations de débogage pour les graphiques génériques!

Pourquoi? J'ai regardé ici de nombreuses questions liées à la xrandr& résolution , il leur manque beaucoup d'informations sur la configuration complète de la pile. L'ensemble considéré ne mentionne que la dernière commande ayant échoué. Même, je suggérerais de mettre les résultats complets dans la question afin que nous puissions rechercher des similitudes et relier les problèmes connexes.

Si aucune donnée EDID trouvée, commencez par:

  • Comment le moniteur est-il physiquement connecté, c'est-à-dire qu'un KVM est-il utilisé? Tout adaptateur de connexion ex. HDMI vers VGA?
  • Avez-vous essayé un autre câble?
  • Quelle est la marque / le modèle du moniteur?

Voici une liste de quelques commandes utiles

  1. Informations de fond

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

    xrandr --verbose
    cat /etx/X11/xorg.conf
    more /var/log/Xorg.0.log
    
  3. Commandes et options de débogage

    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. Options de débogage avancées

    Ajouter Option "ModeDebug" "true"à Section "Device"la xorg.conf, voir ci - dessous debug nvidia pour plus de détails.

Informations de débogage supplémentaires pour les graphiques nvidia!

  • cat /proc/driver/nvidia/version pour une version précise
  • Activation des informations de débogage nvidia pour /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"`
    
  • Documentation complète sur file:///usr/share/doc/nvidia-*/html/, recherchez la même version en cours d'exécution, il y a beaucoup de changements dans les options disponibles et les paramètres par défaut.


Un cas de test de débogage avec pilote Intel

Voici un cas où je peux le reproduire et cela ressemble à un bug xrandr. Il est clair à partir de xtrace& Xorg.0.log, que le frame-buffer n'est pas redimensionné en 1ère combinaison.

#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

Cas remarquables d'autres questions

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

    Prise en charge du pilote ou Aucun problème de lecteur chargé, cela est célèbre avec les nomodesetanciens graphiques. xrandrne fonctionne pas bien sans KMS. Indicateurs:

    1. sudo lshw -c displaypourrait *-display UNCLAIMEDégalement être driver=vide.
    2. maximum 1920 x 1080la taille du tampon est exactement la taille de l'écran au minimum, la plupart des graphiques le sont maintenant maximum 8192 x 8192, maximum 16384 x 16384ou même 32Kx32K.
    3. Pas de nom de connexion régulier default!
    4. Un logiciel est utilisé OpenGL renderer, vérifier glxinfo, par exemple: Gallium3D/llvmpipe.

    Pour reproduire un problème similaire

    Créez une boîte virtuelle Ubuntu sans installer les ajouts / modules invités (qui incluent le pilote graphique vbox). Ce sera très lent et il en sera de même avec la vraie machine.

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

    Un nom de propriété incorrect utilisé avec xrandr --output .. --set <name> <value>, l'utilisateur doit d'abord vérifier les propriétés disponibles en utilisant xrandr --prop. Même cas résolu ici:

    Impossible de modifier la luminosité de l'ordinateur portable

    Les propriétés disponibles dépendent du pilote et de l'adaptateur utilisés, cela peut donc être le résultat d'un problème de pilote précédent, car aucune propriété n'a été déclarée à xrandr.

    Pour reproduire un problème similaire

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

    Ma théorie actuelle, prévoyant de tester plus tard quand j'aurai le temps. documenté ici. donc je n'oublie pas et d'autres peuvent donner leur avis.

    Erreur produite avec xrandr .. --addmodele refus du conducteur, due à la validation EDID. J'ai remarqué que nvidia supprime certains modes après avoir activé le "ModeDebug". Soit:

    1. Les données EDID du moniteur ne sont pas parfaites
    2. Pilotes peu robustes dans le traitement EDID
    3. L'entrée du mode généré n'est pas dans la plage de surveillance déclarée dans EDID

    (1 & 2) est une substitution personnalisée de Hsync / Vsync / PixelClock ou du fichier EDID local complet, certains pilotes peuvent ignorer EDID.

    (3) la solution consiste à essayer une entrée de mode différente. Remarquez la différence

    $ 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
    

    Certains cas ont été résolus en modifiant simplement le vsync un peu plus bas, par exemple 1280 800 59.80.

user.dz
la source
1
C'est ce que je commençais à penser ... vous semblez avoir découvert énormément en si peu de temps. Je vais vérifier toutes les commandes / fichiers que vous avez donnés et voir comment je peux développer cela. Merci encore Sneetsher!
TellMeWhy
@DevRobot, j'ai remarqué que vous avez recherché la source xrandr, j'ai donc pensé que vous étiez plus intéressé par le débogage. J'ai ajouté un cas intéressant qui pourrait le reproduire avec toutes les informations que je pourrais collecter.
user.dz
2
Wow, quel travail approfondi.
Jacob Vlijm
Où diable avez-vous trouvé tout cela ??
TellMeWhy
@DevRobot, Eh bien après la première fois que j'ai mis une réponse ici, je commence à suivre les cas concernant la pile graphique ici en AU. Et plus intéressé par les messages qui ont obtenu une solution. J'ai également passé du temps à essayer de reproduire certains problèmes et à lire des documents externes (j'ai lié ceux que je trouvais intéressants).
user.dz