如果我仅在启动笔记本电脑后才打开外接显示器(戴尔),则在华硕笔记本电脑上无法检测到它。
案例类似如何使用 intel i915 驱动程序让 linux 检测/重新探测显示器?,除了在我的情况下,一旦笔记本电脑知道它,我就可以拔掉并再次插入它并检测到它。
只有当外接显示器在启动过程中关闭时,我才无法被检测到。
使用 , 的解决方案echo detect > /sys/class/drm/card0-DP-1/status
不起作用,因为相关目录是card0-DP-2
,在显示器关闭时启动后该目录根本不存在。
其他解决方案(例如 CTRL-ALT-F1 和返回)同样不起作用。
拔掉电缆并重新插入也没有效果。感觉有点好像笔记本电脑的整个显示端口插头完全关闭了。
奇怪的发现:如果显示端口电缆不是启动时连接,然后显示器是当我在启动后打开它并连接电缆时检测到(:-( 因此,“启动期间连接电缆/显示器关闭”的组合似乎被解释为“不再打扰这个硬件”。
是否有一些命令告诉系统重新考虑是否有东西连接到显示端口的问题?
答案1
这本身并不能完全回答你的问题,但可以说是技术上正确的答案,所以我利用了为答案提供的更好的格式,所以这不是 30 条文字评论。
您不太可能得到有关 SO/SE 的答案,因为根本没有足够的特定领域知识。您最好直接与 i915 内核驱动程序开发人员交谈。
https://01.org/linuxgraphics/documentation/how-report-bugs包含非常关于如何以有组织的方式做到这一点的全面说明。
您的错误报告措辞方式意味着/sys/class/drm/card0-DP-2/status
做当您在启动后连接 DisplayPort 电缆时存在,但当连接电缆且未连接屏幕时则不存在。好吧,任何涉及的东西/sys/*
绝对与 X11 无关,并且drm
路径中的 绝对确认您想要遵循1.1 - DRM Kernel
上面链接的部分。
我已经查看了该部分要求的详细信息,并且有理由相信实际上并不需要那些难以理解的部分。话虽这么说,内核和发行版信息、dmesg
重新启动后充满drm.debug=0xe
等等都是非常好的主意。
显而易见,dmesg
这里两个 s 在逻辑上是合适的;一个来自不带连接器的启动器,另一个来自带连接器的启动器。注释您实际插入连接器的精确或近似点可能非常有用。
经过 5 分钟的思考,我想出了一种简单但成功的方法来轻松注释:
script -c 'dmesg -w | cat' dmesg.txt
会跑dmesg -w
还允许您直接在终端中键入文本行以添加注释^C
,当您完成 dmesg 信息收集后即可。 (dmesg -w | cat
比 短dmesg -w --color=never
。)
以防万一,有一件可能不太可能的事情:这曾经有效吗?如果是的话,你还记得什么时间吗?如果是,请尝试安装您当时使用的发行版的旧版本,如果它们有效,请收集内核版本!
另外...您可能不想听到这个,但一如既往,人们不能 100% 确定勉强让最新的内核版本正常工作并不能神奇地解决所有问题。 :)
值得庆幸的是,这并没有你可能担心的那么可怕:https://cgit.freedesktop.org/drm-tip/是 Linux 内核的完整克隆,其中已经包含了 drm 树尖补丁。据我所知,只需克隆并构建它,您就可以开始使用了。
...话虽这么说,出于谨慎考虑,您可能需要下载最新的内核版本并获取那首先已知工作,然后将其复制.config
到drm-tip
树上。如果您不首先这样做,那么一切都会崩溃,那么验证您是否可以构建并启动主线内核可能是一个很好的第一个镇压健全性检查。
这是您需要的 bugzilla 页面:https://bugs.freedesktop.org/enter_bug.cgi?product=DRI
实际上,这几乎肯定会向您显示登录视图;在这种情况下,您首先需要这个 URL:https://bugs.freedesktop.org/createaccount.cgi
最后,如果你想问问题,https://01.org/linuxgraphics/community/kernel在 freenode 上提到#gfx-intel。
FWIW,我上面描述的是一组理想的步骤。在进行内核重建之前,您可能会在 freedesktop.org 上打开一个临时错误,以了解是否没有其他可以尝试的调试步骤。 (不过,错误条目页面仅在版本部分列出了“drm git”,因此它们真的希望你使用 git 版本...呵呵)
我实际上对 IRC 频道有一个很好的问题 - 我列出了drm-tip
git 存储库,因为这是文档提到的,但还有一个drm-intel
存储库,我不知道它的相关性是什么。它看起来也像一个内核树,并且每隔几分钟就会更新一次。
答案2
这不是一个解决方案,而是一个可能的解决方法:
$ env DISPLAY=:0 xset dpms force off
$ env DISPLAY=:0 xset dpms force on
上述方法来自这个AU Q&A,标题为:如果关闭并再次打开,则无法检测到 DisplayPort 显示器对于类似问题还有其他解决方案。
本 U&L 问答题为:如何检测显示器何时插入或拔出?有一个轮询方法在这里也可能有帮助。