왜 xrandr 오류“BadMatch”,“BadName”,“Gamma Failed”가 발생합니까?


13

나는 거기에 오히려 많은 수의 사용자가 있음에도 불구하고 그러한 오류에 대한 단일 솔루션을 찾지 못했습니다.

그래서 솔루션을 직접 찾으려고합니다. 그러나 왜 이런 일이 발생하는지 모르겠습니다 ...

이유를 아는 사람이 있습니까? 왜 각 오류가 발생했는지는 말하지 않았지만 하나만 있으면 좋을 것입니다!

예 :

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

잘못된 이름 오류 :

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

감마 실패 오류 :

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*

각 명령을 생성하기 위해 어떤 명령을 실행합니까?
user.dz

1
cvt resolution- 다음, 보통 --newmode, --addmode--output명령
TellMeWhy

답변:


12

최소 정보

질문을 한 다음이 명령으로 생성 된 링크를 추가하십시오.

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


문제 해결

작은 이야기

를 사용하여 일정 시간 동안 Intel GPU로 게임을 시도했을 때 생각보다 훨씬 복잡 xrandr합니다. 때로는 예기치 않은 오류가 발생합니다. 이것은 내 경험에 여름입니다.

내가 이해하는 것처럼 단순화 된 전체 스택 목록이 있습니다.

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

오래된 하드웨어 및 롤링 독점 드라이버 업데이트로 인해 문제를 해결하는 것은 실제로 큰 스택이며 DB-15 VGA 케이블 (또는 저렴한 케이블)의 잘못된 핀 접촉조차도 차이를 만들 수 있습니다. 실제로 Ask Ubuntu에서 읽은 대부분의 문제 는 모니터에서 EDID 데이터가 누락되거나 잘못되었다는 것입니다 . 케이블 (kvm 스위치 / 연결 어댑터). xrandr --verbose출력 에서 빠르게 알 수 있습니다 .

많은 경우도 드라이버가 사용자 정의를 작성하여 때문에 모니터 (제조업체 실수), 사용자가이를 극복에서 완전 / 부분적으로 잘못된 EDID 데이터의 일부 모드를 제한 할 수 있습니다 xorg.conf오버라이드 (override) : 모드, 수평 동기화 및 수직 동기화, EDID, DPI를 ... (드라이버에 따라 nvidia대한 예를 들어 모니터에서 무시할 수 있음)

고급 사용자 또는 여기에서 도움말을 제공하는 사용자에게이 내용을 읽으십시오.

주의:

솔루션을 제공하는 오래된 문서 및 게시물을 읽는 동안주의하십시오. 사용중인 특정 드라이브에 대한 설명서를 찾으십시오.

  • 게시 날짜, 마지막 편집 날짜 또는 소프트웨어 버전을 확인하십시오.
  • modeset, DRI또는 fb(프레임 버퍼) 구동 형. (단지 전문가는 아닙니다).
  • Xorg는 자동 구성을 위해 많은 노력을 기울 였으므로 xorg.conf기본적으로 생성되지 않습니다. 사용자가 만들었더라도 모든 섹션을 만들지 말고 필요한 항목 만 재정의해야합니다. 그것은 즉시 구성의 종류입니다.

xrandr / X 오류에 대한 나의 더미 이해

아들 ( xrandr)은 아빠가 할 수있는 것이 무엇인지 알지 못하거나 살 것 (모든 운전자 능력)에 동의 할 것이므로 엄마 (Xorg)에게 가서 아빠에게 원하는 것을 물어 보라고 요청합니다. 따라서 다음 시나리오 중 하나가 발생합니다.

  • 높은 비율 : 아들 → (:) 수락) 엄마 → (:) 수락) 아빠, 모든 사람이 행복합니다!
  • 낮은 비율 : 아들 → (: | 수락) 엄마 → (XD 거부) 아빠, 때로는 인생이 어려워요!
  • 드문 경우 : 아들 → (X / 거부) Mom -x- (: | 중립) 아빠, 계획 B의 시간!

따라서 Xorg 또는 Driver가 xrandr 요청으로 인해 xrandr 요청을 처리하거나 거부 할 수없는 경우 이러한 오류가 발생합니다.

  • 현재 Xorg 설정
  • 운전사 능력
  • 그래픽 어댑터 기능
  • EDID에서 얻은 모니터 기능
  • 그들 중 하나의 버그 xrandr

일반 그래픽을위한 디버그 정보 수집!

왜? 여기에서 xrandr& resolution 과 관련된 많은 질문을 보았지만 풀 스택 설정에 대한 많은 정보가 누락되었습니다. set은 마지막으로 실패한 명령 만 언급 한 것으로 간주됩니다. 심지어, 나는 우리가 유사점을 찾고 관련 문제를 연결할 수 있도록 질문에 전체 결과를 넣을 것을 제안합니다.

EDID 데이터가 없으면 다음으로 시작하십시오.

  • 모니터가 물리적으로 어떻게 연결되어 있습니까? 즉, KVM이 사용됩니까? 모든 연결 어댑터 ex. HDMI-VGA?
  • 다른 케이블을 사용해 보셨습니까?
  • 모니터 브랜드 / 모델은 무엇입니까?

몇 가지 유용한 명령 목록

  1. 배경 정보

    sudo dmidecode -s system-product-name
    lsb_release -sd
    Xorg -version
    xrandr -v
    sudo lshw -c display
    
  2. 기본 정보

    xrandr --verbose
    cat /etx/X11/xorg.conf
    more /var/log/Xorg.0.log
    
  3. 디버그 명령 및 옵션

    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. 고급 디버그 옵션

    추가 Option "ModeDebug" "true"하기 Section "Device"위해 xorg.conf, 자세한 내용은 아래 NVIDIA 디버그를 참조하십시오.

엔비디아 그래픽을위한 추가 디버그 정보!

  • cat /proc/driver/nvidia/version 정확한 버전
  • 엔비디아 디버그 정보 활성화 /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"`
    
  • 의 전체 설명서에서 file:///usr/share/doc/nvidia-*/html/동일한 실행 버전을 찾으십시오. 사용 가능한 옵션 및 기본 설정에 많은 변경 사항이 있습니다.


인텔 드라이버를 사용한 디버깅 테스트 사례

여기에 내가 그것을 재현 할 수있는 경우가 있는데 버그처럼 보입니다 xrandr. 프레임 버퍼의 크기가 첫 번째 조합으로 조정되지 않은 것은 xtrace& Xorg.0.log에서 분명 합니다.

#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

다른 질문에서 놀라운 사례

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

    드라이버 지원 또는 No drive loaded 문제, 이것은 nomodeset오래된 그래픽으로 유명 합니다. xrandrKMS가 없으면 제대로 작동하지 않습니다. 지표 :

    1. sudo lshw -c display*-display UNCLAIMEDdriver=빈.
    2. maximum 1920 x 1080버퍼 크기는 최소 정확히 화면 크기, 대부분의 그래픽은 지금 maximum 8192 x 8192, maximum 16384 x 16384또는 32Kx32K.
    3. 정규 연결 이름이 없습니다 default!
    4. OpenGL 소프트웨어 렌더러가 사용됩니다 ( glxinfo예 :) Gallium3D/llvmpipe.

    비슷한 문제를 재현하려면

    게스트 추가 / 모듈 (vbox 그래픽 드라이버 포함)을 설치하지 않고 Ubuntu 가상 상자를 만듭니다. 실제 머신에서 매우 느리고 동일하게 발생합니다.

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

    와 함께 사용 된 잘못된 속성 이름입니다 xrandr --output .. --set <name> <value>. 사용자는를 사용하여 사용 가능한 속성을 먼저 확인해야합니다 xrandr --prop. 동일한 경우가 여기에서 해결되었습니다.

    노트북에서 밝기를 변경할 수 없습니다

    사용 가능한 속성은 사용 된 드라이버와 어댑터에 따라 다르므로 xrandr에 선언 된 속성이 없기 때문에 이전 드라이버 문제의 결과 일 수 있습니다.

    비슷한 문제를 재현하려면

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

    나의 현재 이론, 시간이있을 때 나중에 테스트 할 계획. 여기에 문서화했습니다. 잊지 말고 다른 사람들이 피드백을 줄 수 있습니다.

    xrandr .. --addmodeEDID 유효성 검사로 인해 드라이버가 거부 할 때 오류가 발생했습니다. "ModeDebug"를 활성화 한 후 nvidia가 일부 모드를 제거하는 것으로 나타났습니다. 어느 한 쪽:

    1. 모니터의 EDID 데이터가 완벽하지 않습니다
    2. EDID 처리에 강력하지 않은 드라이버
    3. 생성 된 모드 항목이 EDID에서 선언 된 모니터 범위에 없습니다.

    (1 & 2) 솔루션은 Hsync / Vsync / PixelClock 또는 전체 로컬 EDID 파일의 사용자 정의 재정의이며 일부 드라이버는 EDID를 무시할 수 있습니다.

    (3) 해결책은 다른 모드 입력을 시도하는 것입니다. 차이점에 주목

    $ 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
    

    예를 들어 vsync를 조금 더 낮게 변경하여 해결하는 경우도 1280 800 59.80있습니다.


1
이것이 내가 생각하기 시작한 것입니다 ... 당신은 짧은 시간에 엄청난 양을 발견 한 것 같습니다. 여러분이 제공 한 모든 명령 / 파일을 확인하고 어떻게 확장 할 수 있는지 살펴 보겠습니다. 다시 한번 감사합니다!
TellMeWhy

@DevRobot, xrandr 소스를 찾았으므로 디버깅에 더 관심이 있다고 생각했습니다. 내가 수집 할 수있는 모든 정보를 가지고이를 재현 할 수있는 흥미로운 사례를 추가했습니다.
user.dz

2
와, 정말 철저한 직업입니다.
Jacob Vlijm

지구상 어디에서이 모든 것을 찾았습니까?
TellMeWhy

@DevRobot, 처음 여기에 답을 한 후에 AU의 그래픽 스택에 대한 사례를 따르기 시작합니다. 그리고 해결책을 얻은 게시물에 더 관심이 있습니다. 또한 나는 약간의 문제를 재현하려고 노력하고 외부 문서를 읽는 데 시간을 보냈습니다.
user.dz
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.