Ubuntu 18.04 屏幕锁定每次都会丢失最高分辨率

Ubuntu 18.04 屏幕锁定每次都会丢失最高分辨率

我使用的是 Ubuntu 18.04 桌面,配有 Intel HD 集成显卡和单个 2560x1440 屏幕,通过 DP(DisplayPort)电缆连接。使用带有较小显示器的同一台桌面时,我没有遇到此问题。

在这个大显示器上,每次我从锁定屏幕恢复(输入系统唯一用户帐户的密码)时,可用的最高分辨率是逐步从 GNOME 设置中的选项列表和 显示的选项中删除xrandr。最初,在系统启动后:

$ xrandr
Screen 0: minimum 320 x 200, current 2560 x 1440, maximum 8192 x 8192
VGA-1 disconnected (normal left inverted right x axis y axis)
HDMI-1 disconnected (normal left inverted right x axis y axis)
DP-1 connected primary 2560x1440+0+0 (normal left inverted right x axis y axis) 699mm x 393mm
   2560x1440     59.95*+
   2880x1620     60.00
   2048x1152     60.00
   1920x1200     59.88

...然后在第一次屏幕锁定和恢复之后,高于自然的分辨率被消除(尽管还没有明显的效果):

Screen 0: minimum 320 x 200, current 2560 x 1440, maximum 8192 x 8192 ...
   2560x1440     59.95*+
   2048x1152     60.00
   1920x1200     59.88

...然后第二次屏幕锁定和恢复将当前分辨率降低到 2048x1152:

Screen 0: minimum 320 x 200, current 2048 x 1152, maximum 8192 x 8192 ...
DP-1 connected primary 2048x1152+0+0 (normal left inverted right x axis y axis) 699mm x 393mm
   2048x1152     60.00*
   1920x1200     59.88

...第三次将屏幕缩小到 1920x1200,每次都进一步向下移动列表:每次屏幕锁定时逐步消除可用的最高屏幕分辨率和视频频率。

显示器是 Acer EB321HQU - 将其关闭并再次打开不会影响可用的分辨率,除非系统也重新启动。有相关的错误报告,但仅针对 nVidia 显卡确认,不适用于我的情况。到目前为止,我也尝试过这些,但对问题没有影响:

  • 从默认切换gdm3lightdm
  • 将视频驱动程序xserver-xorg-video-intel/bionic从原版升级2:2.99.917+git20171229-1到较新版本打开显卡驱动程序 PPA 2:2.99.917+git1903011933.6afed3~oibaf~b amd64
  • 编辑:断开并重新连接 DP 电缆会进一步降低最大分辨率至 1024x768。

答案1

首先生成一个模板xorg.conf文件,如下所示(即使您已经在运行 X / GNOME / 显示管理器,它也应该可以工作):

sudo X :2 -configure

然后将生成的文件复制/root/xorg.conf.new到,/etc/X11/xorg.conf在 Ubuntu 的后续版本中,该文件将是一个新文件,因为默认情况下会自动确定 X 参数。这是我自己的解决方案与更简单、更通用的解决方案不同的地方:

1、一般)某些显卡的用户可能能够简单地通过在以 开头的部分中添加适合于行为异常的显示器的行来解决这个问题Section "Monitor"

Modeline "2560x1440" 241.50  2560 2608 2640 2720 1440 1443 1448 1481 -hsync -vsync
Option "PreferredMode" "2560x1440"

X 服务器使用一个称为扩展显示识别码自动查询分辨率,并且有许多报告称外部和笔记本电脑显示器的结果不完整(我首先认为这是在我屏幕锁定/解锁和暂停/恢复后发生的)。明确设置趋向Modeline于确保无论 EDID 响应如何,X 服务器都可以使用此分辨率。我能够Modeline通过 2 种方式获得此分辨率(还有其他方式):

  • 从 X 服务器启动日志文件中读取/var/log/Xorg.0.log
  • 确认电源板Windows 中的程序(教程

Ubuntu 文档页面X/Config/Resolution > 在 xorg.conf 中静态设置对 X 配置和相关问题进行了很好的概述。

2、我自己的解决方案)然而,在 Xorg 日志文件中我发现

  • Modeline 被忽略,而 EDID 的信息被采用(在日志中显示为DDC gathered Modelines
  • PreferredMode被正确解析但随后被拒绝。

我意识到我必须用仅包含适合我的分辨率的 Modeline 的 EDID 替换显示卡从显示器获取的损坏的 EDID。但我的系统使用的是 Intel HD 显卡,大多数处理 EDID(UseEDID、、)的选项都不受支持(在日志文件中标记) UseEDIDFreqs,所以我无法完全抑制 EDID。IgnoreEDIDis not used

有正面的报道,也有负面的报道(源于此错误报告) 使用另一个 EDID Xorg 选项CustomEDID来提供自己的 EDID 配置。我尝试了此处的过程(用于编译和 edid.bin 文件仅有的我在里面添加了我自己的模式行),并且它工作正常,尽管有报告说它不能工作:通过 xorg.conf 创建和使用 edid.bin>方法 2:从 Xorg 模式行生成 edid.bin(edid-generator)

我当前的工作配置已修复问题,因此在"Screen"部分中添加了这两行(代替解决方案 #1 中的相应"Monitor"行):

Option  "ConnectedMonitor" "DP1"
Option  "CustomEDID" "DP1:/etc/X11/2560x1440.bin"

... 其中DP1匹配部分中的标识符标记"Monitor",因此输出xrandr。下次重新启动时,xorg.conf我会得到一个更短的分辨率列表xrandr,现在无论显示器屏幕变黑多少次,该列表都会保持不变。

顺便说一句,如果互联网上关于英特尔驱动程序无法识别该CustomEDID选项的报道对我来说是真的(!笔记!我正在使用开源驱动程序正如在 OP 中提到的那样,我本来可以再选择一个选项来将自定义 EDID 数据指定为内核参数:ArchLinux > 内核模式设置 > 强制模式和 EDID

为什么会发生这种事? (简短回答:显示器 EDID 是由 Acer 生产的,但有损坏,但对于大多数 Windows 用户来说,这个问题可以通过“驱动程序”来修复,该驱动程序实际上只是将 EDID 配置硬编码到计算机本身的注册表项。)get-edid上面链接的过程中提到的一个程序从我的显示器中提取了损坏的 EDID:

sudo get-edid -m 0 > edid.bin

... 运行其输出时,edid-decode显示只有较低的分辨率被归类为“既定时序”或“标准时序”,而不断下降的较高分辨率仅显示为时序特征集。此外,当将该输出通过第三个程序时,parse-edid它显示模式1920x1080实际上是PreferredMode,这最终解释了为什么屏幕重新启动最终返回到该模式。

编辑:截至 2020 年 1 月中旬,使用任何 EDID 选项时,更新的带有英特尔驱动程序的 Xorg 服务器将崩溃或无法启动。在互联网上进行初步搜索可以找到一些关于此问题的未解决错误。因此上述解决方案在此特定情况下不再有效,尽管它仍可能具有更普遍的用途。

如果无法通过其他方式升级固件,我建议遇到此问题的人立即联系硬件制造商更换显示器。具有讽刺意味的是,微软提供了最好的解释,说明为什么这个问题实际上只能在制造厂解决,而不是在桌面上解决:覆盖显示器 EDID

编辑2:截至 2020 年 2 月底,我已经测试了使用内核模式设置设置 EDID(强制模式和 EDID),通过添加启动选项来注册自定义EDID文件:

GRUB_CMDLINE_LINUX_DEFAULT="splash drm.edid_firmware=edid/2560x1440.bin"

在上述条件下(我的显示器、显示屏和 DP 连接),此功能可完美地在挂起/睡眠后唤醒时保持理想的显示分辨率,每当显示屏取消空白时没有从睡眠状态唤醒后,X 屏幕变得混乱。

总之:我只能希望上述内容提供一些选项来帮助解决其他平台上的这个问题,而不是提供一个通用的解决方案。

答案2

我遇到过类似的问题:有时在暂停后会丢失最高分辨率。根本原因似乎是显示器中的 EDID 存在一些故障。

解决方案 1:升级显示器固件或更换显示器。解决方案 2:当您拥有最高分辨率时(您可以使用例如 xrand 更改为该分辨率),然后读取显示器的 EDID 并在 xorg.conf 中将其设置为 CustomEDID。

2. 解决方案对我有用(AOC 24 英寸显示器,配备 4.19 内核的英特尔/i915 显卡)。@rphair 非常详细地介绍了上述两种解决方案,非常感谢!(我仍然无法将其添加为评论……)

相关内容