ここ1,2年くらいの話、モニターがスリープにならない症状が起きてることに気がつき、しばらく放っておいたけどやっぱり気になるので色々試してみたよ、という話をメモ代わりとして書き残しておくことにしました。
年明けにモニター構成を5画面化したため、DisplayPortやらiGPUやらごちゃごちゃ使っている状態であり、主電源をオフにする方法を取っていたら色々と厄介なことになってしまったので、このままではPCがヤバいということで対策をすることに。
ここに書く"対策”というのはあくまで対症療法的なものであるため、症状を改善することに成功はしましたが根本的な解決は出来ていません。
また、自作機かつWindows7のため環境による差異があります。あくまで参考程度として読んでいただけると幸いです。
症状の詳細
OS側で設定した時間を過ぎても、モニターが自動消灯しない。
結果
どちらも試したところ改善されました。
Geforce Experienceのオーバーレイ機能の無効化
Geforce Experienceについてはゲーミングがメインの人なら9割方知っていると思うので説明は省きます。
きっかけはつい先日Geforce Experienceのアップデートがあったためアプリケーションが起動しておらず、FF14を起動したまま放置していたところ突然スリープになり、もしかしてこれのせいかも?ということで色々試してみることにしました。
まずはcmd.exeを開いて powercfg /requestsを入れてDISPLAYに何も表示されていないことを確認、普通ならスリープを邪魔しているアプリケーションやプロセスがあれば表示されるはずですがそれがありません。なんで?
もしかしたらインスタントリプレイ機能や録画周りが関係しているのではないか?と考えました。
Geforce Experienceには録画や配信関係の機能が備わっているので、それらの機能を制御するオーバーレイ機能を無効にしてみたところすんなりスリープに入りました。あっさり解決。
オーバーレイ機能を無効化することによるデメリットインスタントリプレイ、試験的機能各種が一切使えなくなってしまう点です。
使う時だけオーバーレイ機能を有効化することで対処できますがいちいちやるのはちょっと面倒だなと思いました。
正直記憶が曖昧ですが、グラフィックドライバのバージョンが397.xx以降くらいから起き始めたので、もしかしたらグラフィックドライバも関係している可能性があります。
1度グラフィックドライバをロールバックしたら順当にスリープになった事があるのは覚えていますが、当時のメモを残していませんでした…。
ゲームパッドのドライバの無効化
この方法はXbox360コントローラー(箱コン)を使用している方向けになります。あとちょっとややこしいです。
筆者は Razer Sabertooth Eliteを使用しています。背面や側面にファンクションボタンがあるタイプのちょっとお高めのゲームパッド(以下パッド)です。
このパッド、使えるようにするためにちょっと手間がかかるもので、PC接続しただけでは使用出来ないため、非公式ドライバを導入する必要があります。
何故無効化という答えに辿り着いたかと言うと、起動時に稀にパッドが認識されていないことがあり、その際に偶然モニターがスリープに入る瞬間を見たためです。
もしかして?と思い、スリープに入る時間を1分に再設定してからドライバを有効化にしてみたところスリープにならず、再度無効化したところスリープに入ったので判明しました。
使用しない時にパッドのドライバを無効化しておけばいいのではと考え、Windows Driver Kitの中にあるDevCon.exeが使えると知り、バッチファイルを作成することにしました。
まず以下のリンクからWindows Driver Kitをダウンロード、インストールします。*1
次にパッドのハードウェアIDを調べるために以下の手順を行います
1.コントロールパネルを開く 2.ハードウェアとサウンドを選択 3.デバイスとプリンターを選択 4.使用しているXbox360コントローラーのプロパティを開く 5.ハードウェアタブからHID準拠ゲームコントローラーのプロパティを開く 6.プロパティのリストからハードウェアIDを選択し、1番上にあるものをコピペする
コピーしたハードウェアIDを元にバッチファイルを作成します。
以下のサンプルをメモ帳にコピペして保存する際に拡張子を.batにして保存します。
オフからオンにする際はdisableをenableに書き換えればOKです。
devcon.exeのファイルパスやハードウェアIDは環境によって違うので、
必ず正しいファイルパスとハードウェアIDに書き換えてください。
::devcon.exeの場所を指定する set DEVCON="C:\Program Files\devcon.exe" ::ドライバを無効化する ""の中にハードウェアIDを入力 %DEVCON% disable "USB\VID_24C6&PID_5D04&REV_0125" exit /b
この方法だとゲームを起動する際に再度ドライバを有効にするのを忘れた場合、ゲームを1度終了してから有効化とゲームの起動をしなければならない可能性があることや、ゲームを起動したまま放置したい時にドライバを無効化出来ない等のデメリットがあります。
筆者は普段からFF14を起動したまま放置していることが多いので面倒くさい…、と感じるだけかもしれません、正直あんまり気にならないと思います。
あとがき
以上が筆者が試した2つの方法です。大体は前者のGeforce Experienceのオーバーレイを無効化することで解決出来ると思います、ぶっちゃけ後者は面倒くさいです。
現に筆者自身もオーバーレイ機能を使う時だけ有効化するという方法で落ち着きました。
そもそもこんな症状が起きる時点でおま環って言われるものだと思いますが、Twitterのフォロワーにも似たような症状が起きている人が居たので意外と悩まされてる人が居るのではないでしょうか?
あとDisplayPortのホットプラグ機能が邪魔すぎて、モニターの主電源をポチポチ落としてた時はOS側がDP接続のモニターを認識しなくなったせいで構成が変化、iGPUも併用しているので何かがどうかなって巻き込んでBSoD吐いてリブート…を何回かやらかしました。
ドライバ云々については後日別記事書くかもしれません。
*1: devcon.exeだけをぶっこ抜いていれる方法もあるから調べてみてね