見出し画像

スリープモードに自動移行しないWindows10との戦いの記録

 デスクトップパソコンでの Windows10 の運用も安定してきたのだが……

ある時、設定した時間を経過しても、自動的にスリープモードへ移行しないことに気づく。ネットで調べると、この問題は Windows10 ではよくある話のようで、その対処方法もたくさんありふれていた。それらを一つひとつ試していくが、それでも解決されない。

 いや、正確には、一つ試していないものがある。それは「全ての周辺機器を取り外し、スリープモードへ移行するかどうかを確認する」というものだ。要は、原因がハードによるものかソフトによるものかを切り分ける、ということなのだろう。キーボードもマウスも外せというもんだから、それらも外した。さすがに、ディスプレイはつけておかないと分からないだろうから、これはつけたままにした。なお、電源ボタンを押せば電源が切れるよう、事前に設定をしておいた(ただ、これは、あとになって思ったのだが、実験後に USB接続のキーボードやマウスを刺してもよいだろう。)。また、便宜上、ディスプレイの電源を切る時間とスリープするまでの時間を同じ時間(最低の1分)にしていた。

 

 驚いた。

 なんと、起動してすぐにスリープモードに移行したのである! 久々だったので、えらく感動してしまった(笑)。いきなりプツンと、壊れたかと思ったくらいだ。ということで、原因は、間違いなく、この周辺機器のいずれかにある、ということなのだ!

 まず、マウス(USB接続。以下同じ。)を接続してみた……指定時間経過後、ディスプレイの電源が切れた! が、スリープモードには移行しなかった。微妙……。マウスは、PS/2 変換アダプタが付いており、こちらで試しても同じ症状だった。いずれにしても、早速原因が分かってしまった。原因は、マウスだったのだ。まあ、確かに古いマウスなので、Windows10 に対応していなかったのだろうか。早速買い替え候補に上がった。

 ただ、原因はマウスだけではないかもしれない。次は、マウスを抜き、キーボード(USB接続。以下同じ。)を接続してみた……。なぜか、マウスと全く同様の症状だった。外付けハードディスク(USB接続。以下同じ。)も同様の症状で、LAN ケーブルも同じだった……。

 ゲームコントローラー(USB接続。以下同じ。)に至っては、ディスプレイの電源すら切れなかった。まあ、ゲームコントローラーは、確かに、ネット上にも記事が多数あったし、常時接続しておく必要はなく、今後、抜いておいても何の問題もない。

 ということで、ディスプレイ以外の何かが繋がっていたら、スリープモードに移行しないということが分かった。しかし、これは USB機器の問題というよりも、USB接続部分の問題ではないか? と思い始める。ただ、Windows Update でも、ドライバ更新を含め、全て更新しているし、チップセットのサポートソフトでも「ドライバとソフトウェアは最新」となっている。BIOS の設定は、標準から何も変更していない。つまり、私と同じ症状の人は、たくさんいると思われるし、そうであれば、何らかのアップデートが出ているはずである。それとも、みんなスリープ移行とかやっていないのか……?

 デバイスのドライバだけを一度アンインストールして、再インストールすることも考えたが、USB接続だけでなく、PS/2 マウスや LAN コネクタもあり、もっと上位の……というか、もっと深いところのドライバが関係しているのだろうし、そういう深いところのドライバは、OS のインストール時にインストールされているものもあり、今となってその辺のドライバにメスを入れることは、かなりのリスクを伴う。最悪、立ち上がらなくなるかもしれない。セーフモードなどで、復活はできると思うが、かかる手間に見合わないだろう。

 ただ、ディスプレイの電源だけは切れる。この辺から、何かの手がかりというか、ヒントが得られればいいのだが……。

 

 そもそも、私は、どうしてパソコンをスリープさせたいのだろう……。この機能、本当に必要なのだろうか?

 やはり、トイレなどのちょっとした離席や、電話や来客などの急な対応で、その流れで、そのまま、別の用事ができたりすることは、多々ある。その、離席をするたびに、毎回手動でスリープさせるのも煩雑だ。また、そこまで長くなると思っていなかった用事が、結果、長くなってしまうこともある。よって、この、自動スリープ機能というのは、あれば便利な機能であることには間違いない。

 いずれにしても、半日程度時間が経過して、パソコンの目の前に向かった時に、明々とディスプレイがつきっぱなしだった時の、このもったいない感は半端ない……。

 さらに、このまま調査を続けていたら、なぜか、ディスプレイの電源が切れてしばらく経った後に、スリープへ移行することが分かった。前述のとおり「ディスプレイの電源を切る時間とスリープするまでの時間は同じ」なのにである! もしかしたら、ディスプレイの電源を切る時間とスリープするまでの時間が、それぞれ別のタイマーで動いていて、それらが、パソコン起動直後ということもあり、正常に働いていなかったのかもしれない。

 それだけではない。

 いろいろと調査を続けていたら、今度は、ディスプレイしかつなげていなくても、スリープに移行しなくなった。また、スリープ中、何もしていないのに、突然パソコンが起き上がったりもした。やはり、いろいろ動作が不安定なのだ! こうなると、今までのテスト結果も疑わしくなってくる……。

 

 ここで、現時点までを一旦整理する。

 まず、ネットでも散々言われているとおり、ゲームコントローラーが原因で、自動スリープできなかったのは、間違いないだろう。

 また、スリープ中に勝手に起きる問題は、すぐに対策が分かった。

 まず、振動などでマウスが動いても起きないようにできる。これは、デバイスマネージャーから、該当のマウスを選択し、[電源の管理]タブから、「このデバイスでスタンバイ状態を解除できるようにする」のチェックを外せばよい。この設定後は、当然に、スリープ中にマウスをシャカシャカ振っても起きなくなる。

 そして、LAN についても同様の設定はできるが、そうすると、WOL(Wake On Lan。LAN 経由でスリープしたパソコンを起こすこと。)ができなくなり、これで困る場合は、更に細かい設定で、「Magic Packet でのみスタンバイ状態を解除できるようにする」というチェックを入れればよい。確かに、以前は、同一ネット内にあるパソコンの状態を監視するソフトを立ち上げた時や、リモート接続しようとした時の通信で起きていた。これはこれで便利だったのだが、逆に、意図しない場面で勝手に起きても困る。ということで、今後リモートで接続する場合は、事前に Magic Packet を送信してからにすればよい。

 さて、残った問題は、「ゲームコントローラーを刺してなくても、スリープに入らない場合がある」ことだ。これは、1ヶ月程度様子を見たが、やはりこの不安定な症状が続いている。

 こうなれば、自前でタイマーを作って、時間が来たらスリープコマンドを叩くようなスクリプトを用意した方が早いのではないか? と思えてくる。タイマーは、マウスやキーボードやゲームコントローラーからの入力があった時にリセットすればよい。そうすれば、ゲームコントローラーを刺したままでも、スリープに入れるのではないか? 自前のタイマーなら、不安定な要素が発生しても、仕様は全て明らかだし、デバッグすれば何かわかるかもしれない。

 これで、残った問題が、全て解決できるのではないだろうか?

 ということで、実際にスクリプトを用いて、自前でスリープをさせる仕組みを作る話については、次回以降に続けたい。

【関連記事】

この記事が気に入ったらサポートをしてみませんか?