如何使用xrandr检测和配置输出?


33

我有一个DELL U2410显示器连接到配备有集成AMD / ATI显卡(AMD E-350)的Compaq 100B台式机。安装的操作系统是Ubuntu 10.04 LTS。

计算机通过DVI连接器连接到显示器。

问题是我无法将桌面分辨率设置为原始1920x1200。允许的最大分辨率为1600x1200。

做一些有关该xrandr实用程序的研究。不幸的是,当尝试使用它时,我无法将其配置为所需的分辨率。首先,它不会报告输出名称(应该是DVI-0),default而是说。没有它,我将无法使用该--fb选项。

EDID实用程序似乎可以很好地识别监视器。这是来自的输出get-edid

    # EDID version 1 revision 3
Section "Monitor"
    # Block type: 2:0 3:ff
    # Block type: 2:0 3:fc
    Identifier "DELL U2410"
    VendorName "DEL"
    ModelName "DELL U2410"
    # Block type: 2:0 3:ff
    # Block type: 2:0 3:fc
    # Block type: 2:0 3:fd
    HorizSync 30-81
    VertRefresh 56-76
    # Max dot clock (video bandwidth) 170 MHz
    # DPMS capabilities: Active off:yes  Suspend:yes  Standby:yes

    Mode    "1920x1200" # vfreq 59.950Hz, hfreq 74.038kHz
        DotClock    154.000000
        HTimings    1920 1968 2000 2080
        VTimings    1200 1203 1209 1235
        Flags   "-HSync" "+VSync"
    EndMode
    # Block type: 2:0 3:ff
    # Block type: 2:0 3:fc
    # Block type: 2:0 3:fd
EndSection

但是xrandr -q命令返回:

Screen 0: minimum 640 x 400, current 1600 x 1200, maximum 1600 x 1200
default connected 1600x1200+0+0 0mm x 0mm
   1600x1200       0.0* 
   1280x1024       0.0  
   1152x864        0.0  
   1024x768        0.0  
   800x600         0.0  
   640x480         0.0  
   720x400         0.0  

当我尝试设置分辨率时,我得到:

$ xrandr --fb 1920x1200
xrandr: screen cannot be larger than 1600x1200 (desired size 1920x1200)

$ xrandr --output DVI-0 --auto
warning: output DVI-0 not found; ignoring

如何将屏幕分辨率设置为1920x1200?为什么不xrandr识别DVI-0输出?

请注意,运行Ubuntu 10.04或更高版本的同一台计算机可以正确检测到正确的分辨率。由于某些旧版硬件兼容性问题,我无法在这台计算机上进行升级。

另外,我在“硬件驱动程序”对话框中看不到任何可选的屏幕驱动程序。

----

更新

在回答这个问题之后,我有所进步。现在所需的模式已在xrandr -q列表中列出,但是我无法切换到该模式。使用Monitors小程序(现在显示新模式),我得到以下响应:

The selected configuration for displays could not be applied. Could not set the configuration to CRTC 262

从命令行看起来像这样:

$ cvt 1920 1200 60
# 1920x1200 59.88 Hz (CVT 2.30MA) hsync: 74.56 kHz; pclk: 193.25 MHz
Modeline "1920x1200_60.00"  193.25  1920 2056 2256 2592  1200 1203 1209 1245 -hsync +vsync

$ xrandr --newmode "1920x1200_60.00"  193.25  1920 2056 2256 2592  1200 1203 1209 1245 -hsync +vsync

$ xrandr -q
Screen 0: minimum 640 x 400, current 1600 x 1200, maximum 1600 x 1200
default connected 1600x1200+0+0 0mm x 0mm
   1600x1200       0.0* 
   1280x1024       0.0  
   1152x864        0.0  
   1024x768        0.0  
   800x600         0.0  
   640x480         0.0  
   720x400         0.0  
  1920x1200_60.00 (0x120)  193.0MHz
        h: width  1920 start 2056 end 2256 total 2592 skew    0 clock   74.5KHz
        v: height 1200 start 1203 end 1209 total 1245           clock   59.8Hz

$ xrandr --addmode default 1920x1200_60.00

$ xrandr -q
Screen 0: minimum 640 x 400, current 1600 x 1200, maximum 1600 x 1200
default connected 1600x1200+0+0 0mm x 0mm
   1600x1200       0.0* 
   1280x1024       0.0  
   1152x864        0.0  
   1024x768        0.0  
   800x600         0.0  
   640x480         0.0  
   720x400         0.0  
   1920x1200_60.00   59.8  

$ xrandr --output default --mode 1920x1200_60.00
xrandr: Configure crtc 0 failed

另一条信息(如果有帮助的话):

$ sudo lshw -c video
  *-display UNCLAIMED     
       description: VGA compatible controller
       product: ATI Technologies Inc
       vendor: ATI Technologies Inc
       physical id: 1
       bus info: pci@0000:00:01.0
       version: 00
       width: 32 bits
       clock: 33MHz
       capabilities: pm pciexpress msi bus_master cap_list
       configuration: latency=0
       resources: memory:c0000000-cfffffff(prefetchable) ioport:f000(size=256) memory:feb00000-feb3ffff

----

更新2:这是更新的lshw清单:

$ sudo lshw -numeric -c video
  *-display UNCLAIMED     
       description: VGA compatible controller
       product: ATI Technologies Inc [1002:9802]
       vendor: ATI Technologies Inc [1002]
       physical id: 1
       bus info: pci@0000:00:01.0
       version: 00
       width: 32 bits
       clock: 33MHz
       capabilities: pm pciexpress msi bus_master cap_list
       configuration: latency=0
       resources: memory:c0000000-cfffffff(prefetchable) ioport:f000(size=256) memory:feb00000-feb3ffff

如果我检查正确,则您有一个LED监视器-但是您的软件“ xrandr”想要配置一个“ crctc”-这是一个阴极监视器。我不知道现在该怎么办-但也许您找到了可以更改的设置,以便它可以尝试与您的LED显示器通信。希望这个对你有帮助。抱歉。
彼得林2012年

@Peterling-我注意到这是其他报告此错误的重复出现的消息,但这的确很奇怪。我不知道该怎么办。
ysap 2012年

1
现在,“ crctc”只是一个术语。像素仍按行和像素逐个输出,而crtc是视频逻辑中的时钟机制,可为特定分辨率产生正确的时序。当引入该术语时,“ crtc”是实际的单个集成电路,并且显示器只能是CRT。
约翰·格鲁伯

您正在使用什么视频驱动程序?
John S Gruber 2012年

@JohnSGruber-你怎么知道?
ysap 2012年

Answers:


9

我认为当您增加此功能时,您将到达某处:

屏幕0:最小640 x 400,当前1600 x 1200,最大1600 x 1200    
                                                  ⇑⇑⇑⇑⇑⇑⇑⇑⇑⇑⇑
 

然后,我认为,您将能够让xrandr使用您已经学会了如何定义的自定义模式(如果在解决基本问题之后仍然需要它)。

增加虚拟屏幕尺寸

[这篇] [1]文章建议在xorg.conf配置文件的“屏幕”部分添加虚拟行,以设置最大屏幕尺寸。是几年前的事 测试时,我无法将虚拟线设置为超过所给定的最大屏幕尺寸xrandr -q。但是,使用我的驱动程序和硬件,该值已经是一个很大的8192x8192。

您可以通过将其添加为/etc/X11/xorg.conf进行试验,例如:

“屏幕”部分
    标识符“我的屏幕”
    “显示”小节
        虚拟2048 2048
    EndSubSection
结束部分

您可能不会看到/etc/X11/xorg.conf,因为当今的视频驱动程序将尝试为所有内容确定合理的默认值,而现代发行版将该文件排除在外。如果有的话,将使用它。

如果您已经有一个/etc/X11/xorg.conf文件,则可以尝试将上述虚拟行添加到其“屏幕”部分的“显示”子部分中

我建议您使用命令行编辑器进行测试,因为这很有可能会破坏您使用Ubuntu GUI进行登录的能力,并且您可能需要执行Alt-Ctrl-F1,登录以及编辑(或删除)文件的功能使用命令行工具。任何错误都应该在/var/log/Xorg.0.log或/var/log/Xorg.1.log中。

实际上,您可以并且应该通过登录系统上的其他用户ID(而不注销通常的用户ID)并从新会话中进行检查来进行测试,以这种方式,您可以使用Alt-Ctrl-F7返回工作状态GUI,如果有麻烦。如果您使用其他用户ID登录而不注销第一个用户,则相应的日志将为/var/log/Xorg.1.log。在拥有可用的xorg.conf或再次将其删除之前,请先退出工作会话或引导。


使用其他图形驱动程序

我读过的另一篇文章通过切换驱动程序解决了该问题,但是从您的问题中我看到“附加驱动程序”没有给您其他选择。(我想这就是您提到“硬件驱动程序对话框”时的意思。除非您使用附加驱动程序更改驱动程序,否则将使用内核认为适合您的视频卡或主板上的视频逻辑的驱动程序。

对于OP,从您在上面的注释中描述的内容来看,您的系统似乎应该使用radeon驱动程序,但不是。我使用radeon驱动程序,通常将我的水平分辨率设置为1920(驱动程序/卡的最大分辨率似乎是8192)。vesa和fb驱动程序是旧硬件的非常基本的驱动程序-足够老,以至于那个时代的显示器没有非常大的显示器。


升级Ubuntu

如果您所运行的计算机比已安装的Ubuntu版本新,尤其是Linux内核,则该内核很可能无法识别您的图形适配器。如果是这种情况,则需要升级包含对设备的支持的Ubuntu软件。

由于他不能运行fglrx,因此不幸的是ysap就是这种情况。由于该设备相对于ysap发行版正在运行,因此很新,因此Lucid(或Maverick)Linux内核不支持[1002.9802]。对该设备的首次支持出现在Natty 2.6.38内核中。要检查内核模块中对特定设备的支持,可以转到/ lib / modules / kernel-version /module.alias文件并搜索适配器的值。对于该设备:

grep v00001002d00009802 /lib/modules/2.6.38-10-generic/modules.alias

检查Natty的内核支持。它回答:

alias pci:v00001002d00009802sv*sd*bc*sc*i* radeon

作为测试,您可以尝试在系统上引导实时CD并尝试在该环境中设置所需的分辨率(单击“尝试Ubuntu”而不是“安装”)。

获得适当的驱动程序支持还可以启用现代图形功能,例如直接渲染和OpenGL支持,从而大大提高性能和美观度。

对于个人计算机,如果兼容的Ubuntu版本可以使用升级的内核。对于生产型计算机,出于可靠性和鲁棒性的考虑,可能需要将Ubuntu升级到较新的版本(如果可用)。


1
奇怪的是,我xorg.conf在文件系统中没有任何位置。但是,如果我的理解是正确的,则在现代gnome中,此文件已过时,不需要。我确实找到了xorg.conf.d程序和相关的手册页。
ysap 2012年

大多数系统的硬件不再需要/etc/X11/xorg.conf,但它也不是过时的-您可以提供/etc/X11/xorg.conf来设置所需的详细信息。这就是我尝试上述方法的方式。这些详细信息也可以放在您添加到目录/etc/X11/xorg.conf.d/中的文件中。我将添加一个示例。
John S Gruber 2012年

让我们看看是否更清楚。如果没有,请告诉我。
John S Gruber 2012年

谢谢,约翰。我测试了您发布的xorg.conf文件,确实在切换帐户时它弄乱了我的显示,所以我不得不将其删除。
ysap 2012年

在Ubuntu 10.04上,“系统/管理”菜单下有一个“硬件驱动器”小程序。此小程序未列出替代驱动程序。但是,我刚刚意识到所涉及的PC当前未连接到Internet(我们现在正在演示中),因此一旦回到办公室,就有可能看到ATI驱动程序替代方案。我隐约记得从前,专有驱动程序无法解决问题,而且我永远都无法通过10.04获得该分辨率。
ysap 2012年

15

我也遇到了这个问题(曾经有戴尔23英寸的屏幕)

首先,确定哪个接口连接到显示器:

$ xrandr -q

命令输出将是:

mukolla@pk:~$ xrandr -q

Screen 0: minimum 320 x 200, current 1920 x 1080, maximum 8192 x 8192

LVDS connected (normal left inverted right x axis y axis)
   1366x768       60.0 +
   1280x720       59.9  
   1152x768       59.8  
   1024x768       59.9  
   800x600        59.9  
   848x480        59.7  
   720x480        59.7  
   640x480        59.4  

HDMI-0 disconnected (normal left inverted right x axis y axis)

VGA-0 connected ......

   1024x768       75.1     60.0  
   800x600        75.0     60.3  
   640x480        75.0     60.0  
   720x400        70.1  

外接显示器连接到端口VGA-0。注意这一点很重要。

现在添加一个新模式来显示:

$ xrandr --newmode "1920x1080_60.00"  172.80  1920 2040 2248 2576  1080 1081 1084 1118  -HSync +Vsync
$ xrandr --addmode VGA-0 1920x1080_60.00
$ xrandr --output VGA-0 --mode 1920x1080_60.00

这对于更改内置屏幕不起作用,对吗?
KhoPhi 2015年

错误错误匹配,例如:xrandr --addmode "DVI-I-1" "1280x800_60.00"任何想法?(已连接DVI-I-1)
Aquarius

@AquariusPower尝试DVI-1-1代替DVI-I-1
WinEunuuchs2Unix

6

都好。当我连接到没有屏幕的Ubuntu系统时曾遇到这个问题(以前使用的是Dell 24英寸屏幕,但在其他地方需要它)。我不够聪明,无法知道为什么它可以工作,但是这里有一系列命令对我有用-无需文件编辑。

注意:重新启动时,需要再次运行它们。我建议一个shell脚本。

gtf 1920 1200 60 -x
xrandr --newmode "1920x1200_60.00"  193.16  1920 2048 2256 2592  1200 1201 1204 1242  -HSync +Vsync
xrandr --addmode VGA1 1920x1200_60.00
xrandr --output VGA1 --mode 1920x1200_60.00

这非常好用!
Folkert van Heusden 2014年

4

我在我的主目录中的.xprofile文件中添加了以上几行(与gtf命令输出略有不同)。像梦一样工作。见下文。

gtf 1920 1080 60 -x

xrandr --newmode "1920x1080_60.00"  172.80  1920 2040 2248 2576  1080 1081 1084 1118  -HSync +Vsync

xrandr --addmode Virtual1 1920x1080_60.00

xrandr --output Virtual1 --mode 1920x1080_60.00

我正在使用Vmware Player,因此使用了输出的名称。


2

尝试安装arandr以使用GUI设置xrandr配置。

sudo apt install arandr

然后设置显示器的分辨率,方向和位置,最后保存配置。

您可以看到它的输出通常是〜/ .screenlayout上的shell脚本(.sh)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.