Linux

如何使用 intel i915 驅動程序使 linux 檢測/重新探測監視器?

  • April 25, 2018

我有一台執行 linux 的筆記型電腦,帶有 nvidia optimus/intel 混合顯卡,所有輸出都連接到英特爾卡。它由 i915 驅動程序驅動。

一個外接顯示器或投影儀僅在引導週期內發現一次:如果我禁用或拔下它(然後再次插入),則無法再次啟用它,因為 linux 核心不再檢測到它:沒有 udev 或 acpi在我的情況下,插入/拔出和 sysfs 上的事件/sys/class/drm/card0-DP-1/status表明輸出已斷開連接。重新啟動後,再次檢測到顯示器,並且再次檢測到一次。暫停/休眠和恢復也足夠了,但前提是在重新啟動時連接了輸出。

我認為這與核心在啟動時對輸出設備的探測/重新探測有關。能否以某種方式誘導核心重新探測監視器,從而希望再次檢測到它們?

這不是我知道在 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將顯示它們)。

引用自:https://unix.stackexchange.com/questions/439545