如何使用 intel i915 驅動程序使 linux 檢測/重新探測監視器?
我有一台執行 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 是開源的。查看原始碼,它看起來需要一些值:detect
、on
、on-digital
和off
.所以
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
將顯示它們)。