如何使用 intel i915 驱动程序让 linux 检测/重新探测显示器?

如何使用 intel i915 驱动程序让 linux 检测/重新探测显示器?

我有一台运行 Linux 的笔记本电脑,带有 nvidia optimus/intel 混合显卡,其中所有输出都连接到 intel 卡。它由 i915 驱动程序驱动。

外部显示器或投影仪在一个引导周期中仅发现一次:如果我禁用或拔出它(然后再次插入),则无法再次启用它,因为 Linux 内核不再检测到它:没有 udev 或 acpi在我的例子中,插入/拔出和 sysfs 上的事件/sys/class/drm/card0-DP-1/status表明输出已断开。重新启动后,再次检测到显示器,并且再次检测到一次。挂起/休眠和恢复也足够了,但前提是在重新启动时拔掉输出。

我认为这在某种程度上与启动时输出设备的内核探测/重新探测有关。是否可以以某种方式诱导内核重新探测监视器,从而有希望再次检测到它们?

答案1

这不是我知道在 X 中有效的 xrandr 方法,但是对于控制台你可以尝试这个 - 你可以/sys/class/drm/card0-DP-1/status也到该文件。我找不到合适的文档,但幸运的是 Linux 是开源的。审查源代码,看起来它需要几个值:detectonon-digitaloff

因此echo detect > /sys/class/drm/card0-DP-1/status应该强制重新检查监视器。或者echo on-digital > /sys/class/drm/card0-DP-1/status无论检测结果如何,都可能设法将其打开。

编辑:在 X 下,我用它来处理未检测到已插入的 HDMI — 它将强制启用输出。但不幸的是,只有视频,HDMI 音频将无法工作(并且显然如果没有内核补丁就不可能):

xrandr --newmode "Mode 2" 148.500 1920 2008 2052 2200 1080 1084 1089 1125 +hsync +vsync
xrandr --addmode HDMI-1 "Mode 2"
xrandr --output HDMI-1 --mode "Mode 2" --right-of LVDS-1

所有这些数字都指定了视频时序;通常它是自动检测到的,获取它们的最简单方法是在您启动它时获取它正在使用的模式,以便它可以工作(xrandr --verbose将显示它们)。

相关内容