如何为 xrandr 选择添加新的屏幕尺寸?

如何为 xrandr 选择添加新的屏幕尺寸?

我使用的是 i3-3225 处理器(Ivy Bridge 处理器)中的 GPU。PC 通过 KVM 切换器连接到显示器。

当启动 PC 并选择显示器并打开时,我得到的显示器分辨率为 1280x1024。

当启动时显示器关闭或者未在端口上选择显示器时,我得到的分辨率为 1024x768 @ 61 kHz。

我该怎么做才能获得 1280x1024 分辨率?

我尝试了 xrandr 配方,但我得到了xrandr:配置 crt 0 失败错误。

我知道 EDID 的事情。有没有办法保存当前的 Xorg 配置,即使显示器未连接也可以用作默认配置?

编辑:附加信息

这是当 PC 启动并连接显示器时我得到的 xrandr --verbose 的输出:

$ xrandr --verbose
xrandr: Failed to get size of gamma for output default
Screen 0: minimum 640 x 480, current 1280 x 1024, maximum 1280 x 1024
default connected 1280x1024+0+0 (0x138) normal (normal) 0mm x 0mm
Identifier: 0x137
Timestamp:  1212589
Subpixel:   no subpixels
Clones:    
CRTC:       0
CRTCs:      0
Transform:  1.000000 0.000000 0.000000
            0.000000 1.000000 0.000000
            0.000000 0.000000 1.000000
           filter: 
1280x1024 (0x138)    0.0MHz *current
    h: width  1280 start    0 end    0 total 1280 skew    0 clock    0.0KHz
    v: height 1024 start    0 end    0 total 1024           clock    0.0Hz
1024x768 (0x139)    0.0MHz
    h: width  1024 start    0 end    0 total 1024 skew    0 clock    0.0KHz
    v: height  768 start    0 end    0 total  768           clock    0.0Hz
800x600 (0x13a)    0.0MHz
    h: width   800 start    0 end    0 total  800 skew    0 clock    0.0KHz
    v: height  600 start    0 end    0 total  600           clock    0.0Hz
640x480 (0x13b)    0.0MHz
    h: width   640 start    0 end    0 total  640 skew    0 clock    0.0KHz
    v: height  480 start    0 end    0 total  480           clock    0.0Hz

这是 xrandr --verbose 的输出,我在 PC 启动时得到显示内容不是连接的:

$ xrandr --verbose
xrandr: Failed to get size of gamma for output default
Screen 0: minimum 640 x 480, current 1024 x 768, maximum 1024 x 768
default connected 1024x768+0+0 (0x138) normal (normal) 0mm x 0mm
Identifier: 0x137
Timestamp:  4495
Subpixel:   unknown
Clones:    
CRTC:       0
CRTCs:      0
Transform:  1.000000 0.000000 0.000000
            0.000000 1.000000 0.000000
            0.000000 0.000000 1.000000
           filter: 
1024x768 (0x138)   48.0MHz *current
    h: width  1024 start    0 end    0 total 1024 skew    0 clock   46.8KHz
    v: height  768 start    0 end    0 total  768           clock   61.0Hz
800x600 (0x139)   29.3MHz
    h: width   800 start    0 end    0 total  800 skew    0 clock   36.6KHz
    v: height  600 start    0 end    0 total  600           clock   61.0Hz
640x480 (0x13a)   18.4MHz
    h: width   640 start    0 end    0 total  640 skew    0 clock   28.8KHz
    v: height  480 start    0 end    0 total  480           clock   60.0Hz

答案1

问题是由我的 KVM(TRENDnet TR-409K)交换机引起的,当屏幕连接到 PC 时,它不能正确转发 DDC/EDID 信息,而当屏幕未连接时,则完全不转发任何信息。

因此,英特尔驱动程序无法确定屏幕特性。因此,我必须添加 nomodeset 启动选项,该选项会禁用 KMS 系统,因此屏幕分辨率也会随 xrandr 一起更改。但至少英特尔驱动程序能够在屏幕连接时启动,并提供 1280x1024 的最大分辨率。如果没有连接,英特尔驱动程序将放弃,VESA 驱动程序将以 1024x768 的最大分辨率启动。

当我将显示器直接连接到 PC(移除 KVM)进行启动时,英特尔驱动程序会获取其所需的所有信息,并且我会获得更多的显示模式。

我使用的 KVM 比较便宜,因此不够好。好的 KVM 会缓存显示器提供的 EDID 信息,这样即使显示器没有连接到 PC,连接到 KVM 的 PC 也可以获取该信息。这种用于桌面的智能 KVM 当然更贵。

顺便说一句,当我启动 Windows 7 计算机且显示器未连接时,我也遇到了同样的显示分辨率问题。启动时连接屏幕时,我获得正确的 1280x1024 分辨率,而启动时未连接屏幕时,我获得的最大分辨率为 1024x768。现在我明白为什么了。

我订购了一台新的 KVM 切换器(Belkin SOHO kvm 切换器),它“更智能”,据说可以缓存 DDC/EDID 信息。我会尽快更新此回复并提供反馈。

相关内容