Почему возникают ошибки xrandr "BadMatch", "BadName", "Gamma Failed"?
Я не нашел ни одного решения таких ошибок, несмотря на довольно большое количество пользователей, которые их имеют.
Поэтому я хочу попытаться найти решение самостоятельно. Тем не менее, я понятия не имею, почему они происходят...
Есть кто-нибудь, кто знает почему? Вы не можете сказать, почему происходит каждая ошибка, просто было бы замечательно!
Примеры:
Ошибка 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
Ошибка 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
Ошибка гамма-ошибки:
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*
1 ответ
Минимальная информация
Вы собираетесь задать вопрос, а затем добавить ссылку, созданную этой командой
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
Это действительно большой стек для устранения неполадок, более сложный со старым оборудованием и обновлениями проприетарных драйверов, даже плохой контакт в VGA-кабеле DB-15 (или дешевый кабель) может иметь значение. На самом деле, большинство проблем, которые я читаю здесь в Ask Ubuntu, касаются просто отсутствия / неправильной EDID- информации с монитора, обвиняя в этом: кабели (KVM-переключатель / адаптер подключения). Вы можете заметить это быстро из xrandr --verbose
выход.
Во многих случаях драйверы ограничивают некоторые режимы из-за неполных / частично неправильных данных EDID из монитора (ошибка производителя). Пользователь преодолевает это, записывая пользовательские xorg.conf
переопределить: Mode, HSync & VSync, EDID, DPI ... в зависимости от драйвера (nvidia
например может игнорировать EDID с монитора)
Я рекомендую это прочитать для продвинутых пользователей или тех, кто предоставляет помощь здесь:
- Ubuntu Wiki: X Устранение неполадок (довольно старое и общее)
- KMS UXA DRM OMG WTF Барбекю? / Linux графика демистифицирована Мартином Фидлером из Dream Chip Technologies GmbH в Хемницере Linux-Tage 2014
Обратите внимание:
Будьте внимательны при чтении старых документов и постов, предлагающих решения. Лучше искать документацию для конкретного используемого диска.
- Проверьте дату публикации, дату последнего редактирования или версию программного обеспечения.
modeset
,DRI
или жеfb
(framebuffer) тип драйвера. (только знайте, я не эксперт).- Xorg многое сделал для автоматической настройки, поэтому
xorg.conf
не создается по умолчанию. Даже если пользователь сделал один, он не должен создавать все разделы, а только переопределяет то, что нужно. Это своего рода конфигурация на лету.
Мое дурацкое понимание этих ошибок xrandr/X
Сын (xrandr
Кажется, он не знает, что его отец может или согласится купить его (все возможности водителя), поэтому он просто идет к своей маме (Ксорг) и просит ее попросить у его отца то, что он хочет. Таким образом, произойдет любой из следующих сценариев:
- высокий коэффициент: сын → (:) принимаю) мама → (:) принимаю) папа, все счастливы!
- низкий коэффициент: Сын → (:| принять) Мама → (XD отклонить) папа, жизнь иногда бывает тяжелой!
- редкий случай: сын → (X/ отклонить) мама -х- (:| нейтральный) папа, время для плана Б!
Таким образом, мы получаем эти ошибки, когда Xorg или Driver не могут обработать или отклонить запрос xrandr из-за:
- Текущие настройки Xorg
- Возможности водителя
- Возможности графического адаптера
- Возможности монитора, полученные от EDID
- Ошибка в одном из них, включая
xrandr
Сбор отладочной информации для общей графики!
Зачем? Я посмотрел на многие вопросы здесь, связанные с xrandr
И разрешение, они пропускают много информации о полной установке стека. В рассматриваемом наборе упоминается только последняя неудачная команда. Даже, я бы предложил включить полные результаты в вопрос, чтобы мы могли искать сходства и связывать связанные проблемы.
Если данные EDID не найдены, начните с:
- Как физически подключен монитор, т.е. используется ли KVM? Любой адаптер подключения напр. HDMI для VGA?
- Вы пробовали другой кабель?
- Что такое монитор Марка / Модель?
Вот список некоторых полезных команд
Справочная информация
sudo dmidecode -s system-product-name lsb_release -sd Xorg -version xrandr -v sudo lshw -c display
Базовая информация
xrandr --verbose cat /etx/X11/xorg.conf more /var/log/Xorg.0.log
Команды и опции отладки
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
Расширенные возможности отладки
добавлять
Option "ModeDebug" "true"
вSection "Device"
вxorg.conf
, см. отладку nvidia ниже для деталей.
Дополнительная информация отладки для графики nvidia!
cat /proc/driver/nvidia/version
для точной версииАктивировать отладочную информацию nvidia для
/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/
Ищите ту же версию, есть много изменений в доступных опциях и настройках по умолчанию.
Тестовый пример отладки с драйвером Intel
Вот случай, когда я могу воспроизвести его, и это похоже на ошибку в 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
Поддержка драйверов или проблема с загрузкой диска, это известно
nomodeset
и старая графика.xrandr
не работает хорошо без KMS. Индикаторы:sudo lshw -c display
может быть*-display UNCLAIMED
такжеdriver=
пустой.maximum 1920 x 1080
Размер буфера соответствует размеру экрана как минимум, большинство графическихmaximum 8192 x 8192
,maximum 16384 x 16384
или даже 32Kx32K.- Нет обычного имени подключения
default
! - Используется программный рендерер OpenGL, проверьте
glxinfo
, пример:Gallium3D/llvmpipe
,
Воспроизвести похожую проблему
Создайте виртуальную коробку Ubuntu без установки гостевых дополнений / модулей (включая графический драйвер vbox). Это будет очень медленно, и то же самое произойдет с реальной машиной.
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 .. --addmode
когда водитель отказывается, из-за проверки EDID. Я заметил, что nvidia удаляет некоторые режимы после включения "ModeDebug". Или:- EDID данные с монитора не идеальны
- Драйверы не надежны в обработке EDID
- Сгенерированная запись режима не находится в диапазоне монитора, объявленном в 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
,