スタンバイモードに入った後、2番目のモニターは目覚めません(迷惑な回避策はありません)。

スタンバイモードに入った後、2番目のモニターは目覚めません(迷惑な回避策はありません)。

背景

私は長い間(数年)さまざまな構成で何らかの方法でこの問題を経験しました。私はドライバとカーネルを何度も更新しました。

これは一種の競争条件のようです。あるモニターが別のモニターの前に「準備」されている場合、xrandr(およびi3)が接続されて動作する必要があると思っても、別のモニターは「入力なし」を取得します。

以前の設定

  • 4Kモニター
  • 1080pモニター

動作:両方のモニターがスリープモード(アクティブになっていない)に切り替えられ、マウスを動かすと、モニターの1つだけ(1080pモニター)が正しく目覚めます。他のデバイスは数秒後に目覚めますが、「入力なし」と表示されます。

解決策:

  • 実行xrandr.sh(旧バージョン、新しいバージョンは下記参照)
    • 機能するために他の作業を実行する必要があるかどうかは確かに言えません(全体のプロセスがある程度筋肉記憶になりました...)。

新しい設定

  • 4Kモニター(以前と同じ設定)
  • 4Kモニター(新品)

アクション:同様のアクションですが、アクションは次に適用されます。新しい監視装置。以前のモニターはパフォーマンスが大丈夫でした(従来の1080pモニターと同様)。

解決策1(まずモニターを目覚めさせる必要があります):

  • マウス/キーボードを動かして画面を目覚めさせる前)「遅い」画面を目覚めさせるには、モニターのメニューボタンを使用してください。
  • モニターがスタンバイモードで再起動し、メニュー項目が表示されたら、マウス/キーボードを動かしてモニターを起動します。
  • 両方のモニターがうまく動作します!

解決策2(モニターを最初に目覚めさせるのを忘れました):

  • マウス/キーボードの移動) 両方のモニターが目覚めます。 1 つはうまく機能しますが、もう 1 つは一時停止状態から目を覚ますのに時間がかかり、「入力なし」だけが表示されます。
  • Runを押すと、xrandr --output HDMI-0 --offディスプレイはスタンバイ状態に戻ります。
  • ソリューション1を適用します。
  • 両方のモニターがうまく動作します!

詳細

Nvidiaドライババージョン(Archリポジトリから):455.45.01-6

$ lspci | grep NV
01:00.0 VGA compatible controller: NVIDIA Corporation GP104 [GeForce GTX 1070] (rev a1)
01:00.1 Audio device: NVIDIA Corporation GP104 High Definition Audio Controller (rev a1)
$ xrandr
Screen 0: minimum 8 x 8, current 7680 x 2160, maximum 32767 x 32767
DVI-D-0 disconnected (normal left inverted right x axis y axis)
HDMI-0 connected primary 3840x2160+0+0 (normal left inverted right x axis y axis) 621mm x 341mm
   3840x2160     60.00*+  59.94    50.00    30.00    29.97    25.00    23.98    23.98
   2560x1600     59.97
   2560x1440     59.95
   1920x1080     60.00    59.94    50.00    60.00    50.04
   1680x1050     59.95
   1440x900      59.89
   1440x576      50.00
   1440x480      59.94
   1280x1024     75.02    60.02
   1280x960      60.00
   1280x800      59.81
   1280x720      60.00    59.94    50.00
   1024x768      75.03    70.07    60.00
   800x600       75.00    72.19    60.32    56.25
   720x576       50.00
   720x480       59.94
   640x480       75.00    72.81    59.94
   640x350       70.07
DP-0 disconnected (normal left inverted right x axis y axis)
DP-1 connected 3840x2160+3840+0 (normal left inverted right x axis y axis) 1280mm x 720mm
   4096x2160     29.97 +  25.00    24.00    23.98
   3840x2160     29.97*   25.00    23.98    23.98
   1920x1080     60.00    59.94    50.00    29.97    25.00    23.98    60.00    50.04
   1280x1024     60.02
   1280x720      59.94    50.00
   1024x768      60.00
   800x600       60.32
   720x576       50.00
   720x480       59.94
   640x480       59.95    59.93    59.94
DP-2 disconnected (normal left inverted right x axis y axis)
DP-3 disconnected (normal left inverted right x axis y axis)
DP-4 disconnected (normal left inverted right x axis y axis)
DP-5 disconnected (normal left inverted right x axis y axis)

dmesg何の異常も現れなかった。

xrandr.sh:

# This used to be uncommented, but doesn't cut it anymore with the new setup
#xrandr --output HDMI-0 --off

sleep 0.5

xrandr --output HDMI-0 --primary --mode 3840x2160 --panning 0x0
xrandr --output DP-1 --mode 3840x2160 --right-of HDMI-0

試されたソリューション

私は長年にわたって同様の問題を何度も検索しましたが、実際に有望なものが見つかりませんでした。以前の4Kモニターに何か奇妙なものがあると思いました(例:間違ったEDIDなど)。しかし、今は新しいモニタでも同じ問題が発生するので、その疑いをあきらめました。

画面が復元されないというスレッドがたくさん見つかりました。停止する(通常は修正されましたmodeset)しかし、私の場合、実際の一時停止は発生せず、画面が消えたり消えただけでした(モニターの1つでのみ発生しました!)。また、私の問題/解決方法に似た「競合条件」の性格の問題を見つけられませんでした。

答え1

「回避策」スクリプトを維持し、xrandrコマンドを使用して両方のモニターを希望の方法で取得します。 「スリープスリープ」カーネルイベントによってトリガーされるスクリプトを実行するには、小さなudevルールを作成することをお勧めします。次のコマンドを実行して取得したトリガーの種類を監視できます。

udevadm monitor -u

次のコマンドを実行して、モニターの udev ルール・キー形式から可能なすべての属性に関する情報を取得することもできます。 udevadm info -a -n /dev/dri/card0

ここで、カード0はオンボードビデオカードです。 udevルールを読んでください: https://linux.die.net/man/7/udev

通常、ファイルを/etc/udev/rules.d/に配置します。

以下のみを含む項目:

KERNEL=="card0", SUBSYSTEM=="drm", RUN+="/opt/xrandr.sh"

うまくいくかもしれません。スクリプトパスを変更するだけです。お役に立てば幸いです。

関連情報