使用已保存的 EDID,以便电视关闭时 Ubuntu 能够启动到正确的分辨率

使用已保存的 EDID,以便电视关闭时 Ubuntu 能够启动到正确的分辨率

我有一台 Intel NUC6i7KYK(Intel Graphics 580)和 Ubuntu 16.04。我试图解决 Ubuntu 在电视关闭时启动时以不同分辨率启动的问题。

我知道有一种硬件解决方案涉及诸如 Dr HDMI、HDMI Detective 等,但我正在尝试看看是否可以使用软件解决这个问题。

这是我所做的,根据各种搜索 - 特别是我从这个链接中找到的https://wiki.archlinux.org/index.php/kernel_mode_setting- 應該可以工作。

  1. 我安装了 read-edid 包,然后在电视插入电源并打开时使用 get-edid 获取电视 EDID 的副本。我将其命名为“edid.bin”。

  2. 我将其复制到 lib/firmware/edid/

  3. 我在内核命令行中添加了“drm_kms_helper.edid_firmware=DP-1:edid/edid.bin video=DP-1:e”

  4. 我拔掉了 HDMI 线并重新启动。

似乎可以正常加载 EDID,而且 Xorg 日志文件的底部确实显示它识别了电视支持的所有不同模式,这些模式必须从 EDID 中获取。但是,Ubuntu 的“显示设置”中没有出现这些模式。此外,“显示设置”面板无法正常工作 - 它显示电视,但默认情况下未选中它;您必须单击它以进行选择,然后将开/关开关滑动到开,但这样它就不会提供任何屏幕模式。尝试保存配置文件会引发错误。我猜它已被禁用,因为没有模式 - xrandr 的输出也备份了它。

因此看起来,虽然我的更改使其读取了 EDID,但这并没有导致设置具有各种可用模式的有效监视器。

我这里漏掉了什么?我还需要采取其他步骤吗?

我已经包含了 dmesg 和 Xorg 日志以及“xrandr --query”的输出,包括电视开启和关闭时的输出以及解析的 EDID 输出。

如果有人能够提供任何帮助或者帮助我调整设置以使其工作,那么我将不胜感激。

谢谢。

奥利弗

https://www.dropbox.com/sh/mo3y3y25qmgb6zm/AAAFJlAbW7KC83cYH9gXcWTla?dl=0

答案1

这有点像黑客行为,但我通过使用 xrandr 并在登录后立即启动它来处理类似的情况

摘自我在 SU 上的回答,但您需要根据您的 DE 进行调整 - 我把实际运行脚本作为练习留给用户。

我创建了一个脚本,如前所述,用于处理创建新屏幕模式。我将其保存为 xrandr.sh,并确保它是可执行的。我使用 gtf 生成模式行(gtf 1280 800 60.0- 水平分辨率、垂直分辨率和频率 - 大多数人似乎都精确到小数点后一位,所以我也这样做了),并使用它来生成脚本和一个简单的 xrandr 命令来计算输出名称

它会吐出类似

[geek@phoebe ~]$ gtf 1280 800 60

  # 1280x800 @ 60.00 Hz (GTF) hsync: 49.68 kHz; pclk: 83.46 MHz
  Modeline "1280x800_60.00"   83.50  1280 1352 1480 1680  800 803 809 831   -HSync +Vsync

模式行后面的内容很有趣 - 您使用它来设置模式。

我将其保存为 xrandr.sh

xrandr --newmode  "1280x800_60.00"   83.50  1280 1352 1480 1680  800 803 809 831 -hsync +vsync 
xrandr --addmode HDMI1 "1280x800_60.00"
xrandr --output HDMI1 --mode 1280x800_60.00

生成一种可以在任何地方使用的新模式,然后告诉您的系统允许您将该模式用于输出 HDMI1,并告诉您改变分辨率设置为该模式

在您的情况下,您可以根据需要运行它,或者以某种方式自动执行它。

相关内容