web-dev-qa-db-ja.com

Linuxでインテルi915ドライバーを使用してモニターを検出/再プローブする方法

私は、すべての出力がIntelカードに接続されているnvidia optimus/intelハイブリッドグラフィックスでLinuxを実行しているラップトップを持っています。 i915ドライバーによって駆動されます。

外部モニターまたはビーマーがブートサイクルで1回だけ検出される:無効にするかプラグを抜く(そして再度プラグする)と、Linuxカーネルがそれをもう検出しないため、再度有効にすることはできません:udevまたはacpiがありませんプラグ/アンプラグとsysfsのイベント、私の場合/sys/class/drm/card0-DP-1/status、出力が切断されていることを示します。再起動後、ディスプレイが再び検出され、正確に1回だけ検出されます。サスペンド/ハイバネーションおよびレジュームでも十分ですが、再起動中に出力がuplugされた場合のみです。

これはどういうわけか、ブート時の出力デバイスのカーネルプローブ/再プローブに関連していると思います。カーネルを何らかの方法でモニターの再プローブに誘導して、うまくいけばそれらを再び検出できるようにできますか?

5
jorsn

これは、Xで動作することがわかっているxrandrアプローチではありませんが、コンソールではこれを試すことができます。これにwriteすることができます/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は、検出の結果に関係なく、何とかオンにすることができます。

edit: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に表示されます)。

8
derobert