Dlaczego zdarzają się błędy Xrandr „BadMatch”, „BadName”, „Gamma Failed”?

13

Nie znalazłem ani jednego rozwiązania takich błędów, pomimo dość dużej liczby użytkowników, którzy je mają.

Chcę więc sam znaleźć rozwiązanie. Nie mam jednak pojęcia, dlaczego się pojawiają ...

Czy jest ktoś, kto wie dlaczego? Nie wiesz, dlaczego występuje każdy błąd, tylko jeden byłby świetny!

Przykłady:

Błąd 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

Błąd 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

Błąd niepowodzenia 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*
Powiedz mi dlaczego
źródło
Które polecenie uruchomisz, aby wygenerować każde?
user.dz
1
cvt resolution- wtedy zwykle --newmode, --addmodei --outputpolecenia
TellMeWhy

Odpowiedzi:

12

Informacje minimalne

Zadajesz pytanie, a następnie dodajesz link wygenerowany przez to polecenie

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


Rozwiązywanie problemów

Pogawędka

O wiele bardziej skomplikowane, niż myślałem, ponieważ próbowałem grać z moim procesorem graficznym Intel przez pewien czas xrandr. Czasami pojawiają się nieoczekiwane błędy. To jest lato dla mojego doświadczenia.

Oto uproszczona lista pełnego stosu, tak jak ją rozumiem.

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

Naprawdę jest to duży stos do rozwiązywania problemów, trudniejszy ze starym sprzętem i toczącymi się zastrzeżonymi aktualizacjami sterowników, nawet zły styk pinowy w kablu VGA DB-15 (lub tanim kablu) może mieć znaczenie. Właściwie większość problemów, które czytam tutaj w Ask Ubuntu, dotyczy po prostu braku / błędnych danych EDID z monitora, obwiniania: kabli (przełącznik KVM / adapter połączenia). Można to szybko zauważyć na podstawie xrandr --verbosewyników.

W wielu przypadkach sterowniki ograniczają niektóre tryby z powodu niekompletnych / częściowo niepoprawnych danych EDID z monitora (błąd producenta). Użytkownik pokonuje to, pisząc niestandardowe ustawienia xorg.conf: Tryb, HSync i VSync, EDID, DPI ... w zależności od sterownika ( nvidiadla przykład może zignorować identyfikator z monitora)

Polecam przeczytać to dla zaawansowanych użytkowników lub tych, którzy udzielają pomocy tutaj:

Ogłoszenie:

Zachowaj ostrożność podczas czytania starych dokumentacji i postów przedstawiających rozwiązania. Lepiej poszukać dokumentacji dla konkretnego używanego napędu.

  • Sprawdź datę publikacji, datę ostatniej edycji lub wersję oprogramowania.
  • modeset, DRILub fb(bufora ramki) Typ kierowca. (pamiętaj, że nie jestem ekspertem).
  • Xorg wiele zrobił w kierunku automatycznej konfiguracji, więc xorg.confdomyślnie nie jest tworzony. Nawet jeśli użytkownik go utworzył, nie powinien tworzyć wszystkich sekcji, ale zastępuje tylko to, co jest potrzebne. To rodzaj konfiguracji w locie.

Moje pozorne zrozumienie tych błędów xrandr / X

Syn ( xrandr) wydaje się nie zdawać sobie sprawy z tego, co jego tata jest w stanie lub zgodzi się kupić (wszystkie możliwości kierowcy), więc po prostu idzie do swojej mamy (Xorg) i prosi ją, aby zapytała tatę o rzeczy, których chce. Tak więc nastąpi dowolny z następujących scenariuszy:

  • wysoki stosunek: Syn → (:) zaakceptuj) Mama → (:) zaakceptuj) tato, każdy jest szczęśliwy!
  • niski stosunek: Syn → (: | zaakceptuj) Mama → (XD odrzucenie) tato, życie czasami jest trudne!
  • rzadki przypadek: Syn → (X / odrzucenie) Mama -x- (: | neutralny) tata, czas na plan B!

Otrzymujemy więc ten błąd, gdy Xorg lub Driver nie mogą przetworzyć lub odrzucić żądania xrandr z powodu:

  • Bieżące ustawienia Xorg
  • Możliwości sterownika
  • Możliwości adaptera graficznego
  • Możliwości monitorowania uzyskane z EDID
  • Błąd w jednym z nich, w tym xrandr

Zbieranie informacji debugowania dla ogólnej grafiki!

Dlaczego? Spojrzałem na wiele pytań związanych tutaj xrandri uchwały , tracą wiele informacji na temat pełnej konfiguracji stosu. Rozważany zestaw wspomniał tylko o ostatnim nieudanym poleceniu. Sugerowałbym nawet postawienie pełnego pytania w pytaniu, abyśmy mogli szukać podobieństw i powiązać powiązane problemy.

Jeśli nie znaleziono danych EDID, zacznij od:

  • Jak fizycznie podłączony jest monitor, tzn. Czy używany jest KVM? Dowolny adapter połączenia np. HDMI na VGA?
  • Próbowałeś innego kabla?
  • Co to jest marka / model monitora?

Oto lista niektórych pomocnych poleceń

  1. Podstawowe informacje

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

    xrandr --verbose
    cat /etx/X11/xorg.conf
    more /var/log/Xorg.0.log
    
  3. Polecenia i opcje debugowania

    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. Zaawansowane opcje debugowania

    Dodaj Option "ModeDebug" "true"do Section "Device"celu xorg.conf, patrz nvidia debug poniżej szczegóły.

Dodatkowe informacje debugowania dla grafiki NVIDIA!

  • cat /proc/driver/nvidia/version dla precyzyjnej wersji
  • Aktywacja informacji o debugowaniu nvidia do /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"`
    
  • Pełna dokumentacja file:///usr/share/doc/nvidia-*/html/, poszukaj tej samej działającej wersji, istnieje wiele zmian w dostępnych opcjach i ustawieniach domyślnych.


Debugowanie przypadku testowego ze sterownikiem Intel

Oto przypadek, w którym mogę go odtworzyć i wygląda to na błąd xrandr. Z xtrace& Xorg.0.logwynika, że ​​bufor ramki nie jest zmieniany w 1. kombinacji.

#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

Niezwykłe przypadki z innych pytań

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

    Obsługa sterowników lub problem z brakiem ładowania dysku, jest to znane ze nomodesetstarej grafiki. xrandrnie działa dobrze bez KMS. Wskaźniki:

    1. sudo lshw -c displaymoże być *-display UNCLAIMEDrównież driver=pusty.
    2. maximum 1920 x 1080rozmiar bufora to dokładnie rozmiar ekranu jako minimum, większość grafiki ma teraz maximum 8192 x 8192, maximum 16384 x 16384a nawet 32Kx32K.
    3. Brak regularnej nazwy połączenia default!
    4. OpenGL program renderujący jest używany, należy sprawdzić glxinfo, przykład: Gallium3D/llvmpipe.

    Aby odtworzyć podobny problem

    Utwórz wirtualny system Ubuntu bez instalowania dodatków / modułów gości (w tym sterownika graficznego vbox). Będzie to bardzo powolne i to samo stanie się z prawdziwą maszyną.

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

    Użyto niepoprawnej nazwy właściwości xrandr --output .. --set <name> <value>, użytkownik powinien najpierw sprawdzić dostępne właściwości za pomocą xrandr --prop. Ta sama sprawa rozwiązana tutaj:

    Nie można zmienić jasności w laptopie

    Dostępne właściwości zależą od używanego sterownika i adaptera, więc może to wynikać z poprzedniego punktu problemu ze sterownikiem, ponieważ żadne właściwości nie zostały zadeklarowane dla xrandr.

    Aby odtworzyć podobny problem

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

    Moja obecna teoria, planuję sprawdzić później, kiedy będę miał czas. udokumentowałem to tutaj. więc nie zapominam, a inni mogą wyrazić swoją opinię.

    Wystąpił błąd, xrandr .. --addmodegdy sterownik odmówił, z powodu sprawdzania poprawności EDID. Zauważyłem, że nvidia usuwa niektóre tryby po włączeniu „ModeDebug”. Zarówno:

    1. Dane EDID z monitora nie są idealne
    2. Sterowniki nie są odporne na przetwarzanie EDID
    3. Wpis trybu generowanego nie znajduje się w zakresie monitorowania zadeklarowanym w EDID

    (1 i 2) rozwiązaniem jest niestandardowe zastąpienie Hsync / Vsync / PixelClock lub pełnego lokalnego pliku EDID, niektóre sterowniki mogą ignorować EDID.

    (3) rozwiązaniem jest próba wprowadzenia innego trybu. Zauważ różnicę

    $ 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
    

    Niektóre przypadki rozwiązano, zmieniając na przykład nieco vsync 1280 800 59.80.

user.dz
źródło
1
Właśnie tak zaczynałem myśleć ... Wydaje się, że odkryłeś ogromną ilość w tak krótkim czasie. Sprawdzę wszystkie podane polecenia / pliki i zobaczę, jak mogę je rozwinąć. Jeszcze raz dziękuję Sneetsher!
TellMeWhy
@DevRobot, zauważyłem, że szukałeś źródła xrandr, więc pomyślałem, że bardziej interesuje Cię debugowanie. Dodałem ciekawy przypadek, który mógłby go odtworzyć ze wszystkimi informacjami, które mogłem zebrać.
user.dz
2
Wow, co za dokładna robota.
Jacob Vlijm
Gdzie do diabła znalazłeś to wszystko?
TellMeWhy 12.04.17
@DevRobot, Cóż, po pierwszym wpisaniu tutaj odpowiedzi, zaczynam śledzić sprawy dotyczące stosu graficznego tutaj w AU. I bardziej zainteresowani postami, które dostały rozwiązanie. Spędziłem też trochę czasu próbując odtworzyć niektóre problemy i czytając dokumenty zewnętrzne (podłączyłem te, które uznałem za interesujące).
user.dz