Neden xrandr hataları “BadMatch”, “BadName”, “Gamma Failed” olur?


13

Onlara sahip olan çok sayıda kullanıcıya rağmen, bu tür hatalara tek bir çözüm bulamadım.

Bu yüzden kendime bir çözüm bulmaya çalışıyorum. Ancak, neden ortaya çıktıklarına dair hiçbir fikrim yok ...

Nedenini bilen var mı? Neden her hatanın oluştuğunu söylemiyorsunuz, sadece bir tanesi harika olurdu!

Örnekler:

BadMatch hatası:

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 hatası:

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

Gama Başarısız hatası:

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*

Her birini oluşturmak için hangi komutu çalıştırıyorsunuz?
user.dz

1
cvt resolution- Sonra her zamanki --newmode, --addmodeve --outputkomutlar
TellMeWhy

Yanıtlar:


12

Minimum Bilgi

Bir soru soracaksınız ve bu komut tarafından oluşturulan bağlantıyı ekleyeceksiniz.

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


Sorun giderme

Küçük konuşma

Bir süre Intel GPU ile oynamayı denediğimden düşündüğümden çok daha karmaşık xrandr. Bazen beklenmedik hatalar alıyorum. Bu benim tecrübem için bir yazlık.

Anladığım kadarıyla, basitleştirilmiş bir tam yığın listesi.

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

Gerçekten sorun gidermek için büyük bir yığın, eski donanım ve yuvarlanan tescilli sürücü güncellemeleri ile daha zor, DB-15 VGA kablosundaki (veya ucuz kablodaki) kötü bir pin teması bile fark yaratabilir. Aslında, Ask Ubuntu'da burada okuduğum sorunların çoğu , monitörden suçlama: kablolar (kvm anahtarı / bağlantı adaptörü) eksik / yanlış EDID verilerini basitçe eksik / yanlış . Bunu xrandr --verboseçıkıştan hızlı bir şekilde fark edebilirsiniz .

Birçok durumlarda da sürücüleri özel yazarak çünkü Monitor (Üretici hata), Kullanıcı bu üstesinden gelen eksik / kısmen yanlış EDID verilerin bazı modlarını kısıtlamak şunlardır xorg.confgeçersiz kılmak için: Mod, HSYNC & VSync, EDID, DPI ... (sürücüye bağlı olarak nvidiaiçin örneğin monitörden IgnoreEDID olabilir)

Bunu İleri düzey kullanıcılar veya burada yardım sağlayan kullanıcılar için okumanızı tavsiye ederim:

Farkına varmak:

Çözümler sunan eski dokümanları ve yayınları okurken dikkatli olun. Daha iyisi, kullanımda olan o sürücünün belgelerine bakmak.

  • Yayın tarihini, son düzenleme tarihini veya yazılım sürümünü doğrulayın.
  • modeset, DRIYa da fb(çerçeve tamponu) sürücü türü. (sadece farkında olun, ben uzman değilim).
  • Xorg otomatik yapılandırmaya doğru çok şey yaptı, bu yüzden xorg.confvarsayılan olarak oluşturulmuyor. Kullanıcı bir tane oluştursa bile, tüm bölümleri oluşturmamalı, sadece gerekli olanları geçersiz kılmalıdır. Anında bir yapılandırmadır.

Bu xrandr / X hataları hakkında kukla anlayışım

Oğul ( xrandr), babasının onu (tüm sürücü yetenekleri) satın alabileceğini veya kabul edebileceğini bilmiyor gibi görünüyor, bu yüzden sadece annesine (Xorg) gider ve babasından istediği şeyleri istemesini ister. Yani aşağıdaki senaryolardan herhangi biri gerçekleşecek:

  • yüksek oran: Oğul → (:) kabul et Anne → (:) kabul et baba, her biri mutlu!
  • düşük oran: Oğul → (: | kabul et) Anne → (XD reddet) baba, hayat bazen zor!
  • nadir vaka: Oğul → (X / reddet) Anne -x- (: | nötr) baba, B planı zamanı!

Bu nedenle, Xorg veya Sürücü xrandr isteğini işleyemediğinde veya reddedemediğinde bu hatayı alırız:

  • Geçerli Xorg ayarları
  • Sürücü özellikleri
  • Grafik adaptörü özellikleri
  • EDID'den alınan monitör özellikleri
  • Bunlardan birinde bir hata xrandr

Genel grafikler için hata ayıklama bilgisi toplama!

Neden? Burada xrandrve çözünürlük ile ilgili birçok soruya baktım , tam yığın kurulumu hakkında çok fazla bilgi eksik. Sadece son başarısız komuttan bahsedilmiş sayılır. Hatta, benzerlikleri arayabilmemiz ve ilgili sorunları bağlayabilmemiz için soruya tüm çıktıları koymanızı öneririm.

EDID verisi bulunmazsa, şunlarla başlayın:

  • Monitör fiziksel olarak nasıl bağlanır, yani KVM kullanılır? Herhangi bir bağlantı adaptörü örn. HDMI - VGA?
  • Başka bir kablo denediniz mi?
  • Monitör Markası / Modeli nedir?

İşte bazı yararlı komutların listesi

  1. Arkaplan bilgisi

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

    xrandr --verbose
    cat /etx/X11/xorg.conf
    more /var/log/Xorg.0.log
    
  3. Hata ayıklama komutları ve seçenekleri

    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. Gelişmiş hata ayıklama seçenekleri

    Ekle Option "ModeDebug" "true"için Section "Device"için xorg.conf, ayrıntılar için aşağıdaki nvidia hata ayıklama bakın.

Nvidia grafikleri için ek hata ayıklama bilgisi!

  • cat /proc/driver/nvidia/version hassas versiyon için
  • İçin nvidia hata ayıklama bilgilerini etkinleştirme /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"`
    
  • Tam dokümantasyon, file:///usr/share/doc/nvidia-*/html/aynı çalışan sürümü arayın, mevcut seçeneklerde ve varsayılan ayarlarda birçok değişiklik vardır.


Intel sürücüsüyle hata ayıklama testi örneği

İşte onu yeniden üretebileceğim bir durum ve böcek gibi görünüyor xrandr. Bu açıktır xtraceve Xorg.0.logçerçeve-tampon 1 kombinasyon halinde boyutlandırılır ki,.

#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

Diğer sorulardan dikkat çekici vakalar

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

    Sürücü desteği veya Sürücü yüklü sorun yok, bu ünlü nomodesetve eski grafikler. xrandrKMS olmadan iyi çalışmaz. Göstergeler:

    1. sudo lshw -c displayboş *-display UNCLAIMEDda olabilir driver=.
    2. maximum 1920 x 1080arabellek boyutu tam olarak ekran boyutu minimum, şimdi çoğu grafik maximum 8192 x 8192, maximum 16384 x 16384hatta 32Kx32K.
    3. Normal bir bağlantı adı yok default!
    4. OpenGL yazılım oluşturucusu, çek kullanılır glxinfo, örnek: Gallium3D/llvmpipe.

    Benzer sorunu yeniden oluşturmak için

    Konuk eklentilerini / modüllerini (vbox grafik sürücüsü içeren) yüklemeden bir Ubuntu sanal kutusu oluşturun. Çok yavaş olacak ve aynı gerçek makine ile olacak.

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

    İle yanlış bir özellik adı kullanıldığında xrandr --output .. --set <name> <value>, kullanıcı önce kullanılabilir özellikleri kontrol etmelidir xrandr --prop. Aynı dava burada çözüldü:

    Dizüstü bilgisayar parlaklığı değiştirilemiyor

    Kullanılabilir özellikler kullanılan sürücüye ve bağdaştırıcıya bağlıdır, bu nedenle xrandr'a bildirilen hiçbir özellik olmadığından, önceki sürücü sorununun bir sonucu olabilir.

    Benzer sorunu yeniden oluşturmak için

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

    Mevcut teorim, daha sonra zamanım olduğunda test etmeyi planlıyor. burada belgeledi. bu yüzden unutma ve diğerleri geribildirim verebilir.

    xrandr .. --addmodeEDID doğrulaması nedeniyle sürücü reddettiğinde oluşan hata . Nvidia "ModeDebug" etkinleştirdikten sonra bazı modları kaldırdığını fark ettim. Ya:

    1. Monitörden gelen EDID verileri mükemmel değil
    2. EDID işlemede sağlam olmayan sürücüler
    3. Oluşturulan mod girişi EDID'de bildirilen monitör aralığında değil

    (1 ve 2) çözümü, Hsync / Vsync / PixelClock veya tam yerel EDID dosyasını özel olarak geçersiz kılmadır, bazı sürücüler EDID'i yok sayabilir.

    (3) çözüm, farklı mod girişini denemektir. Farkı fark et

    $ 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
    

    Bazı durumlar, örneğin, vsync'i biraz daha düşük değiştirerek çözüldü 1280 800 59.80.


1
Düşünmeye başladığım şey buydu ... Çok kısa sürede çok şey buldunuz. Verdiğiniz tüm komutları / dosyaları kontrol edeceğim ve bunu nasıl genişletebileceğimi göreceğim. Tekrar teşekkürler Sneetsher!
TellMeWhy

@DevRobot, xrandr kaynağını aradığınızı fark ettim, bu yüzden hata ayıklamaya daha fazla ilgi duyabileceğinizi düşündüm. Toplayabildiğim tüm bilgilerle yeniden oluşturabilecek ilginç bir durum ekledim.
user.dz

2
Vay, ne kadar kapsamlı bir iş.
Jacob Vlijm

Bütün bunları nerede buldun ??
TellMeWhy

@DevRobot, İlk kez buraya bir cevap verdikten sonra, AU'daki grafik yığını ile ilgili davaları takip etmeye başladım. Ve bir çözüm var mesajlar daha ilgi. Ayrıca bazı problemleri yeniden üretmeye ve bazı harici dokümanları okumaya çalışırken biraz zaman geçirdim (onları ilginç bulduğum bağlantıları bağladım).
user.dz
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.