知に至る病

お勉強したことを忘れないように書き留めています。

DisplayPort 接続で省電力モードからの復帰時にマルチディスプレイの設定がリセットされる問題

省電力モードからの復帰時に不具合

ディスプレイの接続端子を DisplayPort に変更したら,省電力モードからの復帰時にマルチディスプレイの設定がリセットされる現象が発生しました。

サブディスプレイにログイン画面が映る

先にサブディスプレイが点いてログイン画面が映り,少し遅れてメインディスプレイが点いてログイン画面がそちらに移動するようになりました。 メインディスプレイは入力信号を自動検出する設定になっているため,DisplayPort の信号を検出するのに時間がかかることもあります。 サブディスプレイを縦置きにしているので,その間ずっと 90° 回転した横向きのログイン画面が表示されている状態です。

ウィンドウがメインディスプレイに移動する

画面が遅れるだけならばまだ我慢できるのですが,サブディスプレイに置いていたウィンドウがすべてメインディスプレイの方に移動してしまうという副作用もありました。 ディスプレイが再認識されるまでの時間に差があることで一時的にデュアルディスプレイが解除されてしまい,すべてのウィンドウが先に復帰したディスプレイに集まってしまうようです。

サブディスプレイには,作業中のプロジェクトに関連する資料を表示しておいたり,Slack や ToDo リストのような常時確認するものを置いてあったりします。 仕事の都合上,短時間の離席をすることも多いので,その度にいちいちウィンドウの配置を戻したりするのが非常に面倒です。

Compatibility Mode を有効にして解決

入力信号を自動検出しているせいかと思い,DisplayPort に固定してみることにしました。 しかし,わたしがメインディスプレイに使っている EIZO EV2750 は,標準の状態ではメニューから入力信号を指定することができませんでした。

入力信号を固定する方法があるはずと思って取扱説明書を眺めていると,管理者向け設定のところに気になる記述が見つかりました。

Compatibility Mode

コンピュータをDisplayPortコネクタに接続している場合、電源のオン/オフ時、および省電力モードからの復帰時に、ウィンドウやアイコンの位置がずれることがあります。その場合は、この機能を「ON」にしてください。

試しに Compatibility Mode を有効にしてみたところ,サブディスプレイが先に復帰する問題が無事に解決しました。 EV2750 で Compatibility Mode を有効にするには,ディスプレイの電源が ON の状態で一番左側のボタン(Input)を 3 秒以上長押しします。 画面に Compatibility Mode: On という表示が出ます。

DisplayPort のホットプラグ検出信号が原因らしい

調べてみたところ,DisplayPort のプラグアンドプレイの仕様(が厳格すぎること)が原因らしいです。

DisplayPort インターフェイスにはホットプラグ検出信号というものが含まれており,ディスプレイが PC に接続されていることを確認するためなどに使われているそうです。 ディスプレイの電源が Off になったり,省電力モードになったりすると,この信号が途切れてしまうため,PC から見るとディスプレイが切断されたように見えます。

EV2750 で Compatibility Mode を有効にすると,仕様に完全に準拠することをやめて,省電力時でもホットプラグ検出信号を送り続けるのでしょうね。 これは有名なトラブルらしく,今回の例のようにディスプレイ側で対策を用意していることも多いようです。 DisplayPort はまったく使ったことなかったので知りませんでした。