当前位置: 首页>>技术教程>>正文


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

问题描述

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

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

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

做一些关于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

如何将屏幕分辨率设置为1920×1200?为什么xrandr无法识别DVI-0输出?

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

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

—-

更新:

按照this question的答案,我有所进步。现在,所需的模式已列在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

最佳方案

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


Screen 0: minimum 640 x 400, current 1600 x 1200, maximum 1600 x 1200    
                                                  ⇑⇑⇑⇑⇑⇑⇑⇑⇑⇑⇑
 

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

增加虚拟屏幕尺寸

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

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


Section "Screen"
    Identifier "My Screen"
    Subsection "Display"
        Virtual 2048 2048
    EndSubSection
EndSection

您可能不会看到/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登录而不注销第一个用户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升级到较新的版本(如果可用)。

次佳方案

我也遇到了这个问题(以前使用的是Dell 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

第三种方案

都好。连接到没有屏幕的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

第四种方案

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

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,因此使用了输出的名称。

第五种方案

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

sudo apt install arandr

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

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

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/11416.html,未经允许,请勿转载。