我的 HDMI 端口有问题HP ProDesk 400 G3 台式迷你商务电脑在 Linux 上使用英特尔第 7 代显卡 i5 时使用双显示器模式,用正常英语来说就是:我使用两个屏幕,一个在 HDMI 插槽,另一个在 DualMode DisplayPort(DP++)。
机器
上面链接中的模型详细信息:
(6.)双状态电源按钮
(6.)双模 DisplayPort™(DP++)
(8.)端口选择(DisplayPort™、HDMI、VGA 或串行),就我而言,HDMI 端口的标准图像是错误的,而是显示 DP
(12.) 电源连接器
问题列表
使用 HDMI 端口的显示器可能会出现黑屏:
- 进入睡眠模式一段时间后(不只是单击“暂停”后不久,而是几分钟后)
- 或者在稍微移动硬件/移动插槽处的电缆后,这与以下内容大致相同:
- 如果您随机插入和拔出电缆。
- 通常,只要你抬起机器并稍微移动一下,HDMI 连接的显示器就会变黑。因此,更换电缆只是更强烈的变化,但意味着相同的过程。你通常不会让变黑的显示器恢复原状。
这些问题大多发生在 HDMI 端口上,很少也发生在 DP 端口上。根据经验,如果你进一步抬起并移动机器一段时间,你可能会幸运地找回两个显示器,但更常见的情况是,你无法再找回变黑的显示器,你甚至会失去 DP 显示器。
显示器端口被编程为,如果您移动其电缆,端口会短暂变黑,这是正常现象,只是预期的自动检测,我猜它会在大约 1 秒内发生,可能与 100 毫秒的检测时间有关(请参阅下面的补丁)。因此,短暂的黑屏不是问题,但似乎如果计算机期望显示器比实际需要稳定的时间更早“恢复”,并且如果图形驱动程序在显示器之前恢复,它就会崩溃并保持黑屏(这是我根据下面的研究猜测的)。
我在 Linux 启动时看到一条错误消息(制作了启动时的屏幕视频,我没有查看日志):
错误LSPCON 模式更改超时
这似乎表明适配器无法在给定的时间内稳定下来,引用下面的补丁段落:
100 毫秒不足以让英特尔 NUC 设备上的 LSPCON 适配器稳定下来。
强制重启后,两个监视器都会再次被找到,唯一的问题是有时在启动时直接发生:
- 两个显示器中的一个无法提供高屏幕分辨率,而是提供非常低的分辨率(1024x768 和 800x600),并且这种情况只发生在 HDMI 端口上(至少在最近的 20 个测试案例中,之前的任何情况都太久远了,无法确定)。
后一个错误目前没有问题,因为它在重启后就会消失,但这种情况很少发生。
研究类似的错误和模型
现在来看看这个问题可能更有说服力的部分,研究对类似的模型提出了非常相似的错误描述。
根本检测不到 HDMI 显示器
解决方案是:
-
sudo ubuntu-drivers autoinstall
- 关闭
- 打开
取自:ubuntu 20.04,未检测到 HDMI 端口上的第二个显示器
当我运行时sudo ubuntu-drivers autoinstall
,我没有更新任何内容:
No drivers found for installation.
尽管我希望这能改变一些事情,但我又遇到了同样的问题。
错误:显示器无法从睡眠状态唤醒
[Bug 1916573] 回复:显示器无法从睡眠状态唤醒。
这个看起来非常相似的错误已通过将 DP 电缆替换为 HDMI 电缆来修复,因此它不使用两个显示器。此外,我经常检查不同的电缆(HDMI 适配器到 DVI 到 DVI 到 HDMI 适配器、HDMI 到 DVI、HDMI 到 HDMI 和 DP/DisplayPort 到 HDMI),主要问题似乎是 HDMI 端口,DP 通常较少丢失屏幕。长时间移动电缆或机器后,通常甚至会失去两个显示器的性能。因此,这不仅仅是 HDMI 或 DP 的问题,更可能是由于过早停止自动检测而导致崩溃。
LSPCON 补丁
几乎相同的错误可以在以下位置找到:原始屏幕分辨率无法通过 HDMI LSPCON (i915) 正常工作。
它经过调试步骤并最终给出一个补丁,该补丁应该也能解决 i5 第 7 代英特尔显卡的问题。
我可能需要一个类似的补丁,该补丁适用于该型号。这是另一个型号的最新补丁,称为[v2] drm/i915:增加 LSPCON 超时。我尝试运行它source v2-drm-i915-Increase-LSPCON-timeout.patch
但它不适用于我的设置。
我正在寻找解决其他补丁的核心问题的解决方案:
100 毫秒不足以让英特尔 NUC 设备上的 LSPCON 适配器稳定下来。这会导致启动或屏幕重新配置时显示模式丢失。经验测试可以重现错误,最长可达 190 毫秒的超时时间。200 毫秒的基本启动和压力测试尚未失败。
将超时时间增加到 400 毫秒以获得一些误差幅度。
补丁代码:
diff --git a/drivers/gpu/drm/i915/intel_lspcon.c b/drivers/gpu/drm/i915/intel_lspcon.c
index 8ae8f42f430a..6b6758419fb3 100644
--- a/drivers/gpu/drm/i915/intel_lspcon.c
+++ b/drivers/gpu/drm/i915/intel_lspcon.c
@@ -74,7 +74,7 @@ static enum drm_lspcon_mode lspcon_wait_mode(struct intel_lspcon *lspcon,
DRM_DEBUG_KMS("Waiting for LSPCON mode %s to settle\n",
lspcon_mode_name(mode));
- wait_for((current_mode = lspcon_get_current_mode(lspcon)) == mode, 100);
+ wait_for((current_mode = lspcon_get_current_mode(lspcon)) == mode, 400);
if (current_mode != mode)
DRM_ERROR("LSPCON mode hasn't settled\n");
关闭睡眠模式不会改变它
由于睡眠模式似乎失去了显示器,我使用以下方法将其关闭如何禁止我的系统进入睡眠状态?:
sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target
但即便如此,经过较长时间(不只是几分钟)后再次登录,您似乎会失去 HDMI 显示器。因此,仅注销似乎就足以触发此错误。
答案1
您似乎专注于软件解决方案,而这似乎是一个复杂的硬件问题。您确定所有电缆都已牢固连接、未损坏且电源已接地吗?此外,廉价电缆也可能导致这种情况。PC 或显示器视频端口上的一个流氓/弯曲针脚可能会导致这种情况。我会尝试在 BIOS/UEFI/内置诊断程序中重现该问题,以确认它是否是硬件问题。接地不足、廉价、松散或损坏的电缆/端口可能会产生静电,甚至看到本 SU 问答
答案2
更新(有帮助)
避免在大多数情况下丢失显示器的技巧
这应该是最后一次更新,因为它解决了 95% 的问题。
如果您将机器放在一堆纸上,例如纸块或书本上,并且注意电缆不接触地面,它将不再受到地面的静态负载。这就是公认的答案从一开始就说的。它有效。有了这个,显示器在这次改变之后大概每两周就会丢失一次,测试了一两个月。如果发生这种情况,请参阅下面的更新。但这种情况很少发生。
更新(有帮助)
恢复显示器的解决方法
- 把有问题的显示器的数据线拔掉。
- 触摸计算机机壳以接地。您可能会受到轻微的电击,这是好事,因为这会使电压再次低于电缆连接的阈值。将手机壳放在非静电衬垫上后,这些电击再也没有发生过。我使用了普通的 100 页书写板,或者使用书籍等其他东西。仅这一点就可以大大减少监控问题。
- 在“挂起”模式下关闭系统电源。
- 从“挂起”模式唤醒。
- 插入显示器电缆。
重复上述步骤,直到显示器恢复正常。第一次尝试时,显示器可能仍是黑色或分辨率较低,然后重复 1.-5。这通常比系统重启花费的时间和精力更少,因为系统重启可能存在同样的问题。
之所以有效,是因为计算机是静态加载的,正如另一个答案所说。每次我取出显示器电缆时触摸计算机机箱时,我都会感到轻微的电击。你甚至可以在房间里清楚地听到这个声音。
(更新:将机器放在一堆纸上后,正如上面的更新中所说,我再也没有触电过)。
如果您随后暂停并重新启动,这就像完全刷新了该显示器连接。显示器驱动程序的失真程度较低,可能会给该显示器一个新的机会。它似乎比关闭电源再打开电源效果更好。
20220712 更新 几个月后它又回来了,也许是因为电缆在地上,因为在把所有电缆(任何东西,甚至是放在地上的显示器电源适配器)都接上后,在尝试了 20 米的“暂停”技巧后,“暂停”技巧(见上文)又起作用了。我经常甚至看不到两个显示器了。然后,您可以尝试登录并按下Ctrl+Alt+T
终端并输入,systemctl suspend
而不是单击“暂停”。如果您不确定是否已进入“暂停”模式,请插入您的手机。每当它加载时,计算机仍在运行,然后“暂停技巧”将不起作用。
旧版(以下所有内容):
如果您让显示器保持黑色和闪烁状态,然后继续工作。屏幕可能会恢复正常。我不想重新启动,一两天后它又恢复了,有两次是在下面提到的糟糕的 1024x768 分辨率下。
首次尝试解决方法
第一个解决方法是将显示器空白时间更改为Never
。这应该已经有所改变,至少就我的情况而言,问题消失了一周。
设置-->电源-->空白屏幕-->下拉菜单:
Never
然而,本周之后,同样的问题再次出现,即使显示器黑屏时间已到Never
。
或许是更有希望的解决办法
因此,到目前为止更新已经成功。
添加一个名为~/.xinitrc
:的新文件
setterm -blank 0 -powersave off -powerdown 0
xset s off
取自:
在网上搜索“linux never blank screen command line”找到
现在,经过数周对上述两种解决方法的测试,它大约每周出现一次,两次是在夜间挂起模式之后,一次是在我把键盘拉近时,它的电缆碰到了一些电源线(所以另一个答案显然为这里的真正原因铺平了道路)。两次在空白之后,我在触摸小桌面(不仅仅是电缆)时得到了电脉冲(一次强度足以让你听到它)。这足以说明这种电脉冲与空白直接相关——这也是另一个答案所说的(将电缆分开) 以及我接受它的原因。
使用这两个答案来进一步了解。不再有空白显示器并不好,你总是需要在离开办公桌时关闭它们,但这似乎也有帮助。欢迎有其他经验和想法的人。
每次发生时的应急计划
由于即使采用变通方法,这种情况大约每周都会发生一次,因此您可以采取以下措施来避免显示器变黑时打开的文件。仅拔掉电缆是不够的,您还必须从显示设置中将其拔掉,而您通常可能看不到它。相反,您可以:
- 按下
Super
键(=Windows
键)选择一个打开的窗口 - 或者使用++Super
(也许前面还有+ )将打开的窗口切换到另一个屏幕。Shift
arror left/right
Alt
Tab
可能无法完全修复
我还得到消息说,当另一台同型号的机器仍在保修期内时,服务公司来更换主板时,也出现过这个问题。