多年来,我一直使用带有 SIS 771/671 图形卡的旧笔记本电脑,其视频配置很丑陋,会在外部显示器上拉伸图像。这个问题让我这个问题寻找可以提供正确配置视频卡的方法的发行版。
然而,现在,在这种不正确的视频配置三年后,我的笔记本电脑刚刚开始启动,有时使用正确的视频配置,有时则不启动。为什么?如何?我能否确定哪些“自动”更改使我的图形卡获得正确的配置?
我正在使用 Debian 8。
的输出xrandr --详细当以不正确的视频配置启动时:
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 (0x148) normal (normal) 0mm x 0mm
Identifier: 0x147
Timestamp: 24735
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:
1024x768 (0x148) 0.000MHz *current
h: width 1024 start 0 end 0 total 1024 skew 0 clock 0.00KHz
v: height 768 start 0 end 0 total 768 clock 0.00Hz
800x600 (0x149) 0.000MHz
h: width 800 start 0 end 0 total 800 skew 0 clock 0.00KHz
v: height 600 start 0 end 0 total 600 clock 0.00Hz
640x480 (0x14a) 0.000MHz
h: width 640 start 0 end 0 total 640 skew 0 clock 0.00KHz
v: height 480 start 0 end 0 total 480 clock 0.00Hz
1280x768 (0x155) 79.500MHz
h: width 1280 start 1344 end 1472 total 1664 skew 0 clock 47.78KHz
v: height 768 start 771 end 781 total 798 clock 59.87Hz
1280p (0x160) 79.500MHz
h: width 1280 start 1344 end 1472 total 1664 skew 0 clock 47.78KHz
v: height 768 start 771 end 781 total 798 clock 59.87Hz
的输出xrandr --详细当靴子与正确的视频配置:
xrandr: Failed to get size of gamma for output default
Screen 0: minimum 640 x 480, current 1280 x 768, maximum 1280 x 768
default connected 1280x768+0+0 (0x14a) normal (normal) 0mm x 0mm
Identifier: 0x149
Timestamp: 29118
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:
1280x768 (0x14a) 59.965MHz *current
h: width 1280 start 0 end 0 total 1280 skew 0 clock 46.85KHz
v: height 768 start 0 end 0 total 768 clock 61.00Hz
1024x768 (0x14b) 47.972MHz
h: width 1024 start 0 end 0 total 1024 skew 0 clock 46.85KHz
v: height 768 start 0 end 0 total 768 clock 61.00Hz
800x600 (0x14c) 29.280MHz
h: width 800 start 0 end 0 total 800 skew 0 clock 36.60KHz
v: height 600 start 0 end 0 total 600 clock 61.00Hz
640x480 (0x14d) 18.432MHz
h: width 640 start 0 end 0 total 640 skew 0 clock 28.80KHz
v: height 480 start 0 end 0 total 480 clock 60.00Hz
如果我尝试添加一个新的模型行,其参数与我的笔记本电脑昨天启动的参数相同(对于我的外部显示器来说是正确的),即:
xrandr --newmode "1280x768" 79.50 1280 1344 1472 1664 768 771 781 798 -Hsync +Vsync
出来的输出是:
xrandr: Failed to get size of gamma for output default
X Error of failed request: BadName (named color or font does not exist)
Major opcode of failed request: 140 (RANDR)
Minor opcode of failed request: 16 (RRCreateMode)
Serial number of failed request: 19
Current serial number in output stream: 19
当我选择分辨率为 1280x768 的任何模式时,我收到一条错误消息:
xrandr: cannot find mode 1280x768
xrandr: cannot find mode 1280p
与另一种预先存在的模式 xrandr 工作得很好。
如果我尝试使用以下命令以另一个名称添加预先存在的模式:
xrandr --newmode "1024t" 63.50 1024 1072 1176 1328 768 771 775 798 -Hsync +Vsync
我收到以下错误消息:
xrandr: Failed to get size of gamma for output default
当使用不正确的视频配置启动时,Xorg.0.log 的内容是这样的。
当使用正确的视频配置启动时,Xorg.0.log 的内容如下。
最后更新:解决方法。 我发现,在关闭外部显示器的情况下启动计算机,然后在 GUI 初始化后打开电源,可以使系统获得正确的视频配置。
答案1
从日志中可以看出,您使用的是 VESA 驱动程序,而不是SIS 驱动程序。实际上,我不确定 SIS 驱动程序的当前状态:我依稀记得对某些驱动程序的支持已被放弃,因为没有人维护它们,而 SIS 驱动程序可能就在其中。
无论如何,VESA 驱动程序使用 BIOS 调用来设置模式,仅限于预定义的 VESA 模式。这解释了为什么同步计时字段中有零 - 这些值并不重要,因为驱动程序不使用它们。它还解释了为什么您无法让它使用不符合 VESA 模式的模型行:xrandr
用于添加模型行等的接口仍然有效,但它们不会被使用。
日志显示您的显示器 EDID 为您提供了 14 种模式,其中只有三种有效模式:
[ 27.440] (**) VESA(0): Built-in mode "1024x768"
[ 27.440] (**) VESA(0): Built-in mode "800x600"
[ 27.440] (**) VESA(0): Built-in mode "640x480"
因此,使用 VESA 驱动程序时,您只能在这三个驱动程序中进行选择,并且无法调整同步时序。
至于为什么显示器有时会“拉伸”图像,有时会正确同步,仍然是相同的猜测:要么是 BIOS 没有设置所有必需的寄存器,要么是 VESA 1024x768 模式的同步时序不够明确,以至于显示器无法正常同步。有时以这种方式同步,有时以那种方式同步。
选项:尝试使 SIS 驱动程序正常工作。为此,如果驱动程序确实已被弃用,您可能必须开始查看驱动程序的代码,并将其更新。或者找别人来做。
其他选择:我想不到。
编辑
区别似乎在于,在“正确”的情况下,从监视器读取 EDID 失败,而在“不正确”的情况下,EDID 读取成功。在前一种情况下,驱动程序可能会查阅内部“标准”表,并提出一种似乎适合您的附加模式。
您可以覆盖其他驱动程序的 EDID 信息,但 AFAIK 不能覆盖 VESA 驱动程序。
选项:
正确执行此操作并使 SIS 驱动程序正常工作,请参见上文。
与其他驱动程序一样,修改 VESA 驱动程序以覆盖 EDID(需要良好的 C 编程技能)。
权宜之计:焊接一个定制的 VGA 插头,不连接两个 DDC 引脚VGA 连接器,强制所有 EDID 读取失败(需要焊接技能)。
** 编辑 **
解决方案,如 Leandros López 所描述:在关闭外部显示器的情况下启动计算机。这也会导致 EDID 读取失败,可用模式将是后备模式。 X 服务器初始化后将其打开。