Thông tin tối thiểu
Bạn sẽ hỏi một câu hỏi sau đó thêm liên kết được tạo bởi lệnh này
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
Xử lý sự cố
Cuộc nói chuyện ngắn
Phức tạp hơn tôi nghĩ, khi tôi thử chơi với GPU Intel của mình trong một thời gian sử dụng xrandr
. Đôi khi, tôi nhận được một lỗi không mong muốn. Đây là một tóm tắt cho kinh nghiệm của tôi.
Dưới đây là một danh sách ngăn xếp đầy đủ đơn giản hóa, như tôi hiểu nó.
xrandr
└─ Xorg (w/ driver specific module)
└─ kernel
└─ driver
│
graphic card
└─ cables (kvm switch/connection adapter)
└─ monitor
Đây thực sự là một ngăn xếp lớn để khắc phục sự cố, khó khăn hơn với phần cứng cũ và các bản cập nhật trình điều khiển độc quyền, thậm chí một tiếp xúc pin xấu trong cáp VGA DB-15 (hoặc cáp giá rẻ) có thể tạo ra sự khác biệt. Trên thực tế, phần lớn các vấn đề tôi đọc ở đây trong Hỏi Ubuntu chỉ đơn giản là thiếu / sai dữ liệu EDID từ màn hình, đổ lỗi: cáp (bộ chuyển đổi kvm / bộ chuyển đổi kết nối). Bạn có thể nhận thấy rằng nhanh chóng từ xrandr --verbose
đầu ra.
Nhiều trường hợp cũng là trình điều khiển hạn chế một số chế độ do dữ liệu EDID không đầy đủ / sai một phần từ Màn hình (Lỗi nhà sản xuất), Người dùng khắc phục điều này bằng cách viết tùy chỉnh xorg.conf
để ghi đè: Chế độ, HSync & VSync, EDID, DPI ... tùy thuộc vào trình điều khiển ( nvidia
cho ví dụ có thể bỏ qua từ màn hình)
Tôi khuyên bạn nên đọc điều này cho người dùng Nâng cao hoặc những người cung cấp trợ giúp tại đây:
Để ý:
Hãy cẩn thận trong khi đọc tài liệu cũ và bài viết cung cấp giải pháp. Tốt hơn, để tìm tài liệu cho ổ đĩa cụ thể đang sử dụng.
- Xác nhận ngày đăng, ngày chỉnh sửa cuối cùng hoặc phiên bản phần mềm.
modeset
, DRI
Hoặc fb
(đệm khung) loại trình điều khiển. (chỉ cần lưu ý, tôi không phải là một chuyên gia).
- Xorg đã thực hiện rất nhiều về cấu hình tự động để
xorg.conf
không được tạo theo mặc định. Ngay cả khi người dùng đã tạo một, anh ta không nên tạo tất cả các phần mà chỉ ghi đè những gì cần thiết. Đây là loại cấu hình trên bay.
Hiểu biết giả của tôi về những lỗi xrandr / X
Người con trai ( xrandr
) dường như không nhận thức được những gì cha anh ta có thể hoặc sẽ đồng ý mua cho anh ta (tất cả các khả năng của tài xế), vì vậy anh ta chỉ đến gặp mẹ anh ta (Xorg) và yêu cầu cô ta hỏi cha anh ta những điều anh ta muốn. Vì vậy, bất kỳ kịch bản sau đây sẽ xảy ra:
- Tỷ lệ cao: Con trai → (:) chấp nhận) Mẹ → (:) chấp nhận) bố, mọi người đều hạnh phúc!
- tỷ lệ thấp: Con trai → (: | chấp nhận) Mẹ → (XD từ chối) bố, cuộc sống đôi khi thật khó khăn!
- trường hợp hiếm hoi: Con trai → (X / từ chối) Mẹ -x- (: | trung lập), thời gian cho kế hoạch B!
Vì vậy, chúng tôi nhận được những lỗi đó khi Xorg hoặc Driver không thể xử lý hoặc từ chối yêu cầu xrandr do:
- Cài đặt Xorg hiện tại
- Khả năng điều khiển
- Khả năng của bộ điều hợp đồ họa
- Khả năng giám sát nhận được từ EDID
- Một lỗi trong một trong số họ bao gồm
xrandr
Thu thập thông tin gỡ lỗi cho đồ họa chung!
Tại sao? Tôi đã xem xét nhiều câu hỏi ở đây liên quan đến xrandr
& độ phân giải , chúng thiếu nhiều thông tin về thiết lập ngăn xếp đầy đủ. Được coi là bộ chỉ đề cập đến lệnh thất bại cuối cùng. Thậm chí, tôi sẽ đề nghị đặt các đầu ra đầy đủ trong câu hỏi để chúng ta có thể tìm kiếm sự tương đồng và liên kết các vấn đề liên quan.
Nếu không tìm thấy dữ liệu EDID, hãy bắt đầu với:
- Làm thế nào màn hình được kết nối vật lý, tức là một KVM được sử dụng? Bất kỳ bộ chuyển đổi kết nối cũ. HDMI sang VGA?
- Bạn đã thử cáp khác?
- Màn hình Thương hiệu / Model là gì?
Dưới đây là danh sách một số lệnh hữu ích
Thông tin cơ bản
sudo dmidecode -s system-product-name
lsb_release -sd
Xorg -version
xrandr -v
sudo lshw -c display
Thông tin cơ sở
xrandr --verbose
cat /etx/X11/xorg.conf
more /var/log/Xorg.0.log
Các lệnh và tùy chọn gỡ lỗi
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
Tùy chọn gỡ lỗi nâng cao
Thêm Option "ModeDebug" "true"
vào Section "Device"
để xorg.conf
, xem debug nvidia dưới đây để biết chi tiết.
Thông tin gỡ lỗi bổ sung cho đồ họa nvidia!
cat /proc/driver/nvidia/version
cho phiên bản chính xác
Kích hoạt thông tin gỡ lỗi 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"`
Tài liệu đầy đủ tại file:///usr/share/doc/nvidia-*/html/
, tìm kiếm cùng một phiên bản đang chạy, có nhiều thay đổi trong các tùy chọn có sẵn và cài đặt mặc định.
Một trường hợp thử nghiệm gỡ lỗi với trình điều khiển Intel
Đây là một trường hợp mà tôi có thể tái tạo nó và nó có vẻ như là lỗi xrandr
. Rõ ràng từ xtrace
& Xorg.0.log
, rằng bộ đệm khung không được thay đổi kích thước trong kết hợp 1.
#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
Trường hợp đáng chú ý từ các câu hỏi khác
xrandr: Failed to get size of gamma for output default
Hỗ trợ trình điều khiển hoặc Không có vấn đề tải ổ đĩa, điều này nổi tiếng với nomodeset
và đồ họa cũ. xrandr
không hoạt động tốt nếu không có KMS. Các chỉ số:
sudo lshw -c display
có thể là *-display UNCLAIMED
cũng driver=
có sản phẩm nào.
maximum 1920 x 1080
kích thước bộ đệm chính xác là kích thước màn hình là tối thiểu, hầu hết đồ họa hiện nay maximum 8192 x 8192
, maximum 16384 x 16384
hoặc thậm chí là 32Kx32K.
- Không có tên thường xuyên của kết nối
default
!
- Trình kết xuất phần mềm OpenGL được sử dụng, kiểm tra
glxinfo
, ví dụ : Gallium3D/llvmpipe
.
Để tái tạo vấn đề tương tự
Tạo một hộp ảo Ubuntu mà không cần cài đặt các bổ sung / mô đun khách (bao gồm trình điều khiển đồ họa vbox). Nó sẽ rất chậm và xảy ra tương tự với máy thật.
X Error of failed request: BadMatch (invalid parameter attributes)
(RRQueryOutputProperty)
Tên thuộc tính sai được sử dụng với xrandr --output .. --set <name> <value>
, người dùng nên kiểm tra trước các thuộc tính có sẵn bằng cách sử dụng xrandr --prop
. Trường hợp tương tự được giải quyết ở đây:
Không thể thay đổi độ sáng trong máy tính xách tay
Các thuộc tính khả dụng tùy thuộc vào trình điều khiển và bộ điều hợp đã sử dụng, do đó, đây có thể là kết quả của vấn đề trình điều khiển trước đó, vì không có thuộc tính nào được khai báo cho xrandr.
Để tái tạo vấn đề tương tự
xrandr --output <connection-name> --set whatever 0
X Error of failed request: BadMatch (invalid parameter attributes)
(RRAddOutputMode)
Lý thuyết hiện tại của tôi, dự định kiểm tra sau này khi tôi có thời gian. tài liệu ở đây. vì vậy tôi không quên và những người khác có thể đưa ra một số phản hồi.
Lỗi được tạo ra xrandr .. --addmode
khi trình điều khiển từ chối nó, do xác nhận EDID. Tôi nhận thấy rằng nvidia xóa một số chế độ sau khi bật "ModeDebug". Hoặc:
- Dữ liệu EDID từ màn hình không hoàn hảo
- Trình điều khiển không mạnh mẽ trong xử lý EDID
- Mục nhập chế độ được tạo không nằm trong phạm vi màn hình được khai báo trong EDID
(1 & 2) giải pháp là ghi đè tùy chỉnh Hsync / Vsync / PixelClock hoặc hoàn thành tệp EDID cục bộ, một số trình điều khiển có thể bỏ qua EDID.
(3) giải pháp là thử các chế độ khác nhau. Chú ý sự khác biệt
$ 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
Ví dụ, một số trường hợp được giải quyết bằng cách thay đổi vsync thấp hơn một chút 1280 800 59.80
.