Windows ゲームパッドの接続でスリープしない件まとめ
長い間 Windows10がスリープしない件を調査していて、ゲームパッドの接続ありなしやゲームプレイの状態によって設定時間経過してもディスプレイの電源がオフしない、PCがスリープしないなど、その原因が USBゲームパッドに関係することが判明したので、それについてまとめてみました。
スリープしない原因
ゲームパッドの利用でスリープしなくなった原因については、以下のような症状が出ていることで、Windows 8または Windows10以降の仕様変更が原因であることまでは判明しておりますが、Windows側がこれを問題として捉えていないので、未だに修正は行われていません。
Windows 10 の利用
私が遭遇したスリープしないケースでは、Windows 7では発生しなかったものが Windows 10をセットアップ・アップデートしたことや、
Windows 10インストール済み PCを購入したことでも発生したので、OSの切り替えによる入力機器の監視のプロセスが変わったことは要因の一つであると考えられます。
Windows 10 のアップデート
これも私の遭遇したスリープしないケースでした。Windows アップデート19H2では機能していたスリープが、Windows アップデート20H1を行ったことで機能しなくなりました。
このことから、Windows10でもバージョンによっては動かなくなることが判明しています。
この際にも色々と調査していますが、この時点ではゲームパッドの接続が原因であることが判明していなかったことで解決に至らず、Windows アップデートをアンインストールしています。
また、Windowsアップデートの問題でアンインストールできず 19H2を再インストールしたときにも正常にスリープするようになっています。
また、その後にリリースされた Windows アップデート20H2でも同様にスリープしなくなりました。
これについてもアップデート(ソフトウェア的要因)により入力機器の監視プロセスが変わったことが要因であると考えられます。
ゲームパッド対応状況が不明確
Microsoft のデバイス電源管理仕様
- ゲームパッドの入力があれば画面オフやスリープをさせたくない
- ゲームによっては長時間未入力もありえるので、ゲームパッド利用時は省電力させたくない
- アナログスティックの場合、製品によっては操作未入力でも常に入力変化があること(たとえば、ハンドルコントローラは左右に切りっぱなしが出来るのでホームポジションがない。アクセルスロットや操縦桿などもホームポジション復帰がないものがある)
- キーボードやマウスと違いスタンバイ復帰の応答遅延が発生するとゲームなどではデメリットになる
- ゲームパッド付加機能としてキーボード機能やマクロ機能の内蔵による常時USBでの通信、電力消費が必要なもの(常時入力を監視する必要がある製品の場合)
- ACアダプターやバッテリーなど別電源で駆動するもの(PCから電源供給されないもの)
- 現仕様で不具合なく販売安定しているのに、わざわざ省電力機能追加によって不具合が出たり一部非対応の製品を出したくないなどの費用対効果によるもの
現在の電源状態:D0電源機能:0000005DPDCAP_D0_SUPPORTEDPDCAP_D2_SUPPORTEDPDCAP_D3_SUPPORTEDPDCAP_WAKE_FROM_D0_SUPPORTEDPDCAP_WAKE_FROM_D2_SUPPORTED電源状態マッピング:S0 -> D0S1 -> D2S2 -> D2S3 -> D2S4 -> D2S5 -> D3
ネットでの情報は少ない
今回のWindows がスリープしない件については色々と調べた経緯がありますが、ざっと取り上げてみてもスリープしない状態を解決する有効な手段と対策は少ないと感じました。スリープとゲームパッドが関連していることについての情報も少ないです。
ブログによっては単にビュアー数を稼ぐための記事や、某コミュニティーのエージェントやらモデレーターは質問者に回答することだけが目的なのか解決に至らないケースが多いように感じました。
情報の多くは基本的な内容のみ
Windows について詳しい人であればこれらの疑わしいと言われる情報について、あまり効果的ではないことや初期状態で変更されているはずがないことが理解できているはずです。
ただし、全てにおいて全く意味がないとは言い切れないので参考程度にだけしておきましょう。
「電源とスリープ」の設定時間が無効化されている
スタート>設定>システム>電源とスリープ または
デスクトップで右クリックメニュー>ディスプレイ設定>電源とスリープ
高速スタートアップが有効である
ハイブリッドスリープの設定が許可されている
ウェイクオンLAN(Wake On LAN)が有効である
この機能は外部からのネットワークアクセスのウェイクアップ信号を受信することでスリープを解除する機能ですが、ウェイクアップの前提条件として「スリープしていること」があるため関係ありません。
手動や自動にてスリープをさせてから(PCが待機モードになってから)操作をしていないのに勝手にウェイクアップする(PCが起動する)場合にはこれが原因ということはあります。
確認方法は、
スタートを右クリック>デバイスマネージャー>コンピューター>プロパティ>ネットワークアダプター>電源の管理
このデバイスで、コンピューターのスタンバイ状態を解除できるようにする
マウスのプロパティで「スタンバイ状態を解除」が有効である
そもそもマウス操作中にスリープする必要はないし、ウェブブラウズ中などマウスのみで操作している時にスリープされても困るのでそもそもこれを無効にするとよいという情報がある理由がわかりません。
この設定を疑問視するのであれば、マウスやキーボードの物理的な接続を切り離して確認することが先だと思います。
マウスによるスタンバイ解除については、
- ポインタ移動、ホイール移動による、スリープアイドル状態からのスタンバイ解除
- ボタンクリックによるスリープ状態(PC待機モード)からのウェイクアップ
ですのでこの設定を問題にするのではなく、まずはマウス(入力機器)が正常に動作するかを確認すべきです。
ただし、Windows にはマウスをハードウェア的にチェックするものがないため(ダブルクリックの速度チェックのみ)他のツールに頼る必要があります。
マウス設定の確認方法は、
スタート>設定>デバイス>マウス>関連設定:その他のマウスオプション>ボタンのタブ
ダブルクリックの速度にある、フォルダアイコンにマウスカーソルを合わせてダブルクリックを行う
設定を見るには、
スタートを右クリック>デバイスマネージャー>マウスとそのほかのポインティングデバイス:項目を表示>「HID標準マウス」などのマウスの製品名を選択>右クリックでプロパティ>電源の管理のタブ
このデバイスで、コンピューターのスタンバイ状態を解除できるようにする
USBデバイスなどの電力節約機能が無効である
スタートを右クリック>デバイスマネージャー>
・ヒューマン インターフェース デバイス
・ユニバーサル シリアル バス コントローラー
項目を表示>製品やUSBハブ、ゲームコントローラーを選択>右クリックでプロパティ>電源の管理のタブ
電力の節約のために、コンピューターでこのデバイスの電源をオフにできるようにする
このデバイスで、コンピューターのスタンバイ状態を解除できるようにする
ソフトウェア要因
ゲームパッドの接続によるスリープ阻害とは別にソフトウェア的な理由でスリープしなくなる場合があります。以下によくある要因を上げています。
これを区別するにはゲームパッドをUSBポートから外したりゲームパッドの電源をオフすることでスリープ阻害の原因を切り分けることが出来ます。
Windowsアップデート
ソフトウェアによるスリープしない要因として上げられているものは、Windows アップデートによってMoUsoCoreWorker.exe がバックグラウンドで起動している事が多いようです(スタート右クリック>タスクマネージャー>プロセス タブ>バックグラウンド プロセスに「MoUSO Core Worker」がある)
※MoUsoCoreWorker.exe
MoUSO Core Worker Process は、Windows Update セッションをバックグラウンドで調整するアプリケーション
これについてはゲームパッド要因によるスリープ阻害ではありませんので、その他のプログラム的要因としてこちらにまとめています。
NVIDIA GeForce Experience の設定
PCに搭載されるグラフィックカードのアプリケーション NVIDIA GeForce エクスペリエンス(Experience)の設定にある「ゲーム内のオーバーレイ(Enable in-game overlay)」を有効にするとPCのスリープが機能しない、無効にするとスリープ機能が復帰したという書き込みがあります。
アプリケーションを利用しておりませんが、このオーバーレイ機能は、ゲーム画面上にFPS値などの GeForceの所有する情報を表示する機能のようです。
オーバーレイ機能自体は、Steamや Discordなどでも行っている機能ですのでNVIDIAのみスリープ関連で取り上げられているのは、グラボ関連アプリの性質からなんでしょうか?
多くのゲームはスリープしない処理を持つのでゲーム中スリープしないことはわかるのですが、もしかするとこのオーバーレイ機能にもスリープしない処理が行われているのかも知れません。
この GeForceの機能はゲームが起動していなければ働かないと思うのですが、ゲームに関係無く Windows上で常に動いているのだとすれば問題ありだと思います。
ゲームパッド接続によるスリープ問題と切り分けるためにもこの機能は無効にする必要があります。
ゲームパッドが関係するスリープ不具合情報
スリープしない原因としてゲームパッドを取り上げている情報は国内では数件しかありません。ゲームパッド接続したらスリープしない、外したことでスリープが機能した報告のみで原因追求はありません。これらは Windows 10 リリース初期から問題になっていますが、2021年現在でも Windows側でのアップデート対応は行われていません。
まったく同じ症状でしたが、
USB ゲームコントローラーというものを取り外してみたら、
指定時間経過後、ディスプレイの電源も切れるようになりました。
時間が経過してもディスプレイの電源が切れない(スリープしない) - Microsoft コミュニティ
2015年8月03日
※ゲームパッドコンバータ単体でも、コンバータ+Wii用ゲームパッド接続でも
スクリーンセーバーが起動しなくなります。
時間で画面切ったり、自動スリープにもならなくなります。
[Windows 10] USBゲームパッドを繋ぐとスクリーンセーバーが起動しなくなる - Microsoft コミュニティ
2015年10月15日
症状ですが、USB接続のゲームパッドコンバータとゲームパッドを外した所、
症状が改善し設定通り、モニタースリープするようになりました。
モニターのスリープ設定が有効にならない(電源が落ちない) - Microsoft コミュニティ
スリープ確認方法
ゲームパッド接続や切断によるスリープ機能の確認方法ですが、Windows の標準機能を利用してのスリープモードのタイマーを確認する方法はシステム設定を利用する方法があります。
また、スリープタイマの表示アプリを制作したのでそちらでも確認できます。
電源とスリープの時間を短くする
スタート>設定>システム>電源とスリープ
または
デスクトップで右クリックメニュー>ディスプレイ設定>電源とスリープ
画面の設定を1分(最小時間)とすることで、スリープが機能している場合にはモニターがおおよそ1分後にオフされます。おおよそなのはゲームパッド以外の要因もあるためです。それについてはこちらでまとめています。
画面オフのタイマーで事前に確認した後は、スリープの設定を2分(画面オフ時間+最小時間)とすることで、画面オフからスリープに移行することを確認できます。こちらもおおよそですのでおおよそ2分から5分以上経過しても画面も消えずスリープもしないのであれば何かしらかの問題があります。
電源とスリープの未入力タイマーを確認する
Windows のスリープ機能で監視している入力機器のアイドル状態(未入力状態)は内部タイマーでカウントされています。これの動きを調べることで、どの入力機器が問題であるかを調査することが出来ます。
Windowsではスリープタイマのカウントを見ることが出来ませんので表示するアプリを制作してみました。こちらを利用することで最終入力からの経過時間を確認することが出来ます。
経過時間が以下のように0秒未満でほとんどカウントされないようであれば、何らかのWindows入力デバイス(ゲームパッドの接続など)による操作状態が検出し続けている可能性があります。以下のUSBデータの場合には10数ミリ秒ごとにレポートデータを受信し続けていることになります(Windowsのタイマ分解能により15ミリ秒以上の誤差あり)
表示例:連続入力操作がある場合
スリープ対策方法
- USBポートからゲームパッド接続を切り離す
- 個別スイッチ付きのUSBハブを利用する
- USB延長ケーブルと変換コネクタを利用する
- デバイスマネージャーでデバイスを無効にする
- 再有効化で未入力タイマーをリセットする
物理的に切断を行う
最も確実な方法は、ゲームパッドを物理的にUSBなどをPCのコネクタから切り離すことで未入力タイマーがカウントされます。物理的な切断は確実な方法というだけであり、接続したままでもスリープ出来る手段があります。
USBポートからの切断
もっとも簡単なのは、ゲーム終了のたびにUSBコネクタからゲームパッドを取り外す事です。ゲームパッドの入力がなければスリープ機能は復帰します。
■デメリット
- 差し込むPCのUSBポートを決めないとポートのドライバ接続情報が増加すること※(自分で抜き差しするUSBポートを決めれば問題ない)
- USBケーブルの抜き差しでコネクタの摩耗が発生すること
- 抜き忘れをするとスリープしないこと
※ドライバ接続情報の増加を確認するには、デバイスマネージャ>表示(V)で「デバイス(コンテナー別)」と「非表示のデバイスの表示」を選択することで、リスト上に過去USBポートに接続したゲームパッド情報がグレーアイコンで表示される。これはポートに差した数だけ増加します。
■メリット
特にありませんが、ゲームパッド接続で消費される電力が節約できることです。
USBポートスイッチ付きハブの利用
参考画像:USB電源スイッチ付きハブ(amazon[AD])
■デメリット
- 本来無用なUSBハブの購入が必要になること
- USBポートが2以下のものがない(=小型な製品がない)こと
- Windows上にUSBハブのドライバが追加されること
- モバイル環境ではハブやケーブル類が増えると邪魔なこと
- USBハブ自体が微妙なこと。縦刺し、横刺し、斜め刺し、ムダに大きい、ケーブルが長い、LEDが眩しいなど
- USBハブを経由することで余分な電力消費が発生すること、スイッチ付きはLEDが点灯するのでさらに電力消費があること
またUSBハブによってはACアダプターの接続も考慮する必要があります。
特にUSB3.0規格のものはACアダプター接続&100Vコンセントが必須と考えて良いでしょう(USBブリッジ供給は得策ではありません)
通常のパソコンのUSB3.0ポートの供給可能電力(バスパワー)はおよそ900mA(2.0だとおよそ500mA)と言われていますので、USBハブとゲームパッド1つしか接続しないなら問題ありません。パソコン内部にUSBハブを持っている場合(ドライバを見るとわかる)にはポート接続数に応じて供給可能電力も変化します。
USB2.0規格であってもスイッチ付きUSBハブは通常のハブより電力が必要なこともあるので、製品によって、または接続数の多さ、スマホ充電などによっては電力不足や電力不安定によりゲームパッドの接続が突然切られる、切断接続を繰り返すことがあります。
製品によっては「バスパワー」と記載されていてACアダプターが付属しないものがあるので注意が必要です。
それと直接USBコネクタを抜き差しするのと同様にUSBハブのスイッチの切り忘れをすればスリープしません。
■メリット
コネクタを直接抜き差しをしないこと(スイッチのみで簡単にON/OFF出来ること)くらいです。
USBハブにより電力消費は基本的に増加しますので、ゲームパッドの切り離しの節電効果はないでしょう。
USB延長ケーブル・変換コネクタなどの利用
スイッチ付きUSBハブの購入利用にはデメリットが多いので、単純にPCとゲームパッド間のコネクタ摩耗が嫌だというのであれば、USB延長ショートケーブル、USB変換コネクタ、USB電源スイッチアダプタなどの組み合わせで代用できます。
この場合の接続としては、PC本体のUSBポート>(USB延長・変換などの組み合わせ)>USBゲームパッド となります。
ケーブルが長くなる、コネクタ周りが突出するだけなので、USBハブと違って不具合も起こらず電力消費もしませんし余計なドライバを使用することもありません。
摩耗するのは延長・変換コネクタの間のみとなります。延長ケーブルがショート(15cm程度)なのは邪魔にならないことと無駄な電力消費がないことです。
USBの規格(USB2.0/USB3.0など)は出来れば合わせる必要があります。最近USB3.0風ブルーコネクタのUSB2.0製品もあるので注意が必要です。
参考画像:USB延長ケーブル(amazon[AD])
USB変換コネクタ(ケーブルなし)は、USBポートに製品が直接するので接続箇所に余裕が必要だったり、上下左右にUSBポートが並んでいる場合には干渉して使用できなくなったりする可能性があるので注意が必要です。このような場合には延長ショート型が良いです。
また、USB変換コネクタ中央に関節が付いている「回転式」なるものが販売されていますが、関節内部ケーブルの耐久性が非常に低く、ロック機構も弱く常に動くなど接続したケーブルの収まりも悪いのでこちらについても延長ショート型が良いです。気になるのであれば100均などでも入手することが出来るようです。
参考画像:USB変換コネクタ(amazon[AD])
参考画像:USB回転式コネクタ(amazon[AD])
ノートPCなどであればL字型の延長ケーブルを利用して本体後面や側面周りをスッキリさせることも出来ます。ただし、USBポートに隣接(干渉)するUSB/LAN/HDMI/オーディオなどの利用ポートやジャックがないこと。L字コネクタには上下向きがあるので注意が必要です。
参考画像:USB延長L字ケーブル(amazon[AD])
USB電源スイッチアダプタまたはスイッチ付きUSB延長ケーブルの場合にはスイッチをON/OFFするだけですのでコネクタの摩耗がありませんが、コネクタ周りが突出することになります。
電源スイッチの仕組みは、基本的にUSB電源(+)とグランド(-)を電気的に接続切断出来るようになっているものがほとんどです。
USBハブとしての機能はないのでWindowsドライバや余計な電力消費を必要としません(LED付きの製品でもあれば消費するかも)
それとネットで調べている限りではストレートコネクタ型 USB2.0/1.1の製品しか存在しないことと、延長ケーブル型はスイッチが格好悪いこと、製品の性質上「充電のみ」という製品が存在するので必ず「データ通信対応」の商品を探す必要があります。
参考画像:USB電源スイッチアダプタ(amazon[AD])
参考画像:スイッチ付きUSB延長ケーブル(amazon[AD])
ドライバの切断を行う
ゲームパッドを制御するためのデバイスドライバを無効とすることでスリープ機能を復帰させたり、ドライバをリセットする(無効にして有効に戻す)ことによってスリープ機能を復帰させることが出来ます。
この方法を利用することでゲームパッドを繋いだままでスリープを機能させることが出来ます。
条件がわかりませんが、すべてのゲームパッドドライバを無効にしなくてもスリープ機能が復帰するようです(上位下位などの優先順位がある?)
デバイスドライバの無効
デバイスマネージャからゲームパッドドライバを無効にすることでゲームパッドをWindowsに認識させなくすることができます(物理的切断ではなく、ソフトウェア的な切断を行う)
無効化されることでスリープ機能は正常になりますが、この場合には無効になっているゲームパッドは再度有効とするまで利用できなくなります。
スリープタイマが正常にカウントするかは入力経過時間の確認アプリ(Last Input)を利用してください。
標準ドライバの場合、スタート右クリック>デバイスマネージャ>ヒューマン インターフェイス デバイス>HID 準拠ゲーム コントローラーを右クリック>「デバイスを無効にする」
デバイスを無効にするとデバイスアイコンが変化(無効化)します。
ゲームパッドを利用するときには同じ手順にてドライバを有効にする必要があります。アイコンが変化(無効化)しているデバイスを有効にしてください。
USB有線ゲームパッドにおいて、ドライバ無効にしたままでUSBを抜き差ししている場合には、ドライバ有効にした際にスリープタイマがカウントしなくなることが確認されています。この場合にはUSBを抜き差しせずに再度ドライバ無効にすることで正常に戻ります。
デバイスドライバのリセット
利用しているゲームパッドにもよりますが、デバイスドライバをリセットする(無効にしてから有効に戻す)ことでスリープ機能が復帰するようになり、ゲームパッドも普通に利用することが出来ます。
標準ドライバの場合、スタート右クリック>デバイスマネージャ>ヒューマン インターフェイス デバイス>HID 準拠ゲーム コントローラーを右クリック>「デバイスを無効にする」>再度 HID 準拠ゲーム コントローラーを右クリック>「デバイスを有効にする」
スリープタイマが正常にカウントするかは入力経過時間の確認アプリ(Last Input)を利用する手段があります。当方の環境ではドライバ無効にしてからカウントが開始してドライバ有効でもカウントが継続しております。
慣れてくれば、Windows起動後に1度この手順を行うだけで問題なくスリープ利用できる状態が継続することを確認しています。
- USBゲームパッドをPCより抜き差ししたとき
- USBゲームパッドの電力低下や不具合により切断→再接続されたとき
- USBハブ上コネクタでの抜き差ししたとき
- USBハブ上スイッチのON/OFFしたとき
- USBハブの電力低下や不具合により切断→再接続されたとき
- Windowsをログオフ(サインアウト)→ログイン(サインイン)したとき
- Windowsを再起動したとき
ただし、ゲームパッド専用ドライバ(HID 準拠ゲーム コントローラー以外)や専用ユーティリティを有するゲームパッドについては確認できておりませんので、同様にスリープ機能が復帰するかはわかりません。
この場合には、USB差し込み検出(PnP)によるインストール機能を使わずに手動インストールをすることでスリープしなくなる現象が解決したというネットでの情報もあります。
ゲームパッドドライバのリセット方法によってスリープ機能が復帰したことを知る手段は、「スリープ確認方法」で取り上げたスリープ設定の画面オフ時間を短くして画面が消えるかで確認することになります(再設定の操作と最低1分以上の待機が必要)。
この場合は、一定時間待機後に画面が消えるかだけで判断することが出来ます(画面が消えるのであればPC電源オフも機能するため)ただし、ゲームが起動しているとスリープ禁止処理が働いていることがありますので、確認は必ずゲームを終了してから行ってください。
(追記)
スリープタイマのカウントを知る手段として、最終入力経過時間の確認アプリを制作しましたのでそちらで確認することが出来ます。
作成日:2021/09/18
更新日:
コメント
0 件のコメント :
コメントを投稿