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
電源機能:
0000005D
PDCAP_D0_SUPPORTED
PDCAP_D2_SUPPORTED
PDCAP_D3_SUPPORTED
PDCAP_WAKE_FROM_D0_SUPPORTED
PDCAP_WAKE_FROM_D2_SUPPORTED
電源状態マッピング:
S0 -> D0
S1 -> D2
S2 -> D2
S3 -> D2
S4 -> D2
S5 -> D3
ネットでの情報は少ない
今回のWindows がスリープしない件については色々と調べた経緯がありますが、ざっと取り上げてみてもスリープしない状態を解決する有効な手段と対策は少ないと感じました。スリープとゲームパッドが関連していることについての情報も少ないです。
ブログによっては単にビュアー数を稼ぐための記事や、某コミュニティーのエージェントやらモデレーターは質問者に回答することだけが目的なのか解決に至らないケースが多いように感じました。
この点については本記事では紹介しませんが、スリープしないときに確認するWindows設定としてまとめています。
ソフトウェア要因
ゲームパッドの接続によるスリープ阻害とは別にソフトウェア的な理由でスリープしなくなる場合があります。以下によくある要因を上げています。
これを区別するにはゲームパッドを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延長ケーブルや変換コネクタを利用する
- デバイスマネージャーでデバイスを無効にする
- 4からの再有効化で未入力タイマーをリセットする
物理的に切断を行う
最も確実な方法は、ゲームパッドを物理的にUSBなどをPCのコネクタから切り離すことで未入力タイマーがカウントされます。物理的な切断は確実な方法というだけであり、接続したままでもスリープ出来る手段があります。
1.USBポートからの切断
もっとも簡単なのは、ゲーム終了のたびにUSBコネクタからゲームパッドを取り外す事です。ゲームパッドの入力がなければスリープ機能は復帰します。
■メリット
- 特にありません。が、ゲームパッド接続で消費される電力が節約できることです。
■デメリット
- 抜き忘れをしやすいこと。忘れるとスリープしないこと
- USBケーブルの抜き差しでコネクタの摩耗が発生すること
- 差し込むPCのUSBポートを決めないとポートのドライバ接続情報が増加すること※(自分で抜き差しするUSBポートを決めれば問題ない)
※ドライバ接続情報の増加を確認するには、デバイスマネージャ>表示(V)で「デバイス(コンテナー別)」と「非表示のデバイスの表示」を選択することで、リスト上に過去USBポートに接続したゲームパッド情報がグレーアイコンで表示される。これはポートに差した数だけ増加します。
2.USBポートスイッチ付きハブの利用
- ゲームパッド振動なし・・・常時50から150mA
- ゲームパッド振動あり作動時・・・瞬間電力で1モータ100から200mA、2モータ強振動だと200から300mA
個別スイッチ付きUSBハブ(USB2.0セルフパワーモデル)
USB規格にて勘違いしやすいので書いておきますが、
PC本体のUSBポートが3.0規格なら、USB2.0ハブ接続でもPCからの電力量は最大900mAとなります。ただし、データ転送速度はUSB2.0規格のため低下します(最大5Gbpsが最大480Mbpsとおよそ1/10となる(実測は1/3から1/2程度))ゲームパッド使用だけなら速度に問題はありません。
空きポートに他の機器も接続するのであればUSB3.0規格やセルフパワー(ACアダプタ付き)モデルも考慮する必要があります。
SSDやHDDやメモリなども繋ぐ予定があるなら高速通信対応のUSB3.0規格のUSBハブ、モバイルHDDや外付けBD/DVDドライブやLEDライトやスマホなどのUSB家電の接続などを行う予定なら電力供給可能なセルフパワー(ACアダプタ付き)モデルが必要です。
個別スイッチ付きUSBハブ(USB3.0バスパワーモデル)
これらはゲームパッドと比べて多くの電力を消費します。通常のパソコンのUSB3.0ポートの供給可能電力(バスパワー)はおよそ900mA(2.0だとおよそ500mA)と言われていますので、USBハブとゲームパッド1つしか接続しないなら問題ありません。パソコン内部にUSBハブを持っている場合(ドライバを見るとわかる)にはポート接続数に応じて供給可能電力も変化します。
また、バスパワーモデルでもUSBブリッジ供給と言う手法が使えますが得策ではありません。
それと製品によっては「バスパワー」と記載されていてACアダプターが付属しないものがあるので注意が必要です。
■メリット
- コネクタを直接抜き差しせずに使えること。
- LED付きなら電源オフが見てわかること。
- 市販ゲーム機のマルチタップのように扱えること。
- PC接続先を1つに固定化できること。
■デメリット
- スイッチの切り忘れをすること。忘れるとスリープしないこと。
- 本来無用なUSBハブの購入が必要になること。
- 製品によっては、場所と取ったり、LEDが眩しかったりすること。
- Windows上にUSBハブのドライバが追加されること
- USBハブを経由することで余分な電力消費が発生すること
3.USB延長ケーブルや変換コネクタなどの利用
スイッチ付きUSBハブの購入利用にはデメリットが多いので、単純にPCとゲームパッド間のコネクタ摩耗が嫌だというのであれば、USB延長ショートケーブル、USB変換コネクタ、USB電源スイッチアダプタなどの組み合わせで代用できます。
この場合の接続としては、PC本体のUSBポート>(USB延長・変換などの組み合わせ)>USBゲームパッド となります。
ケーブルが長くなる、コネクタ周りが突出するだけなので、USBハブと違って不具合も起こらず電力消費もしませんし余計なドライバを使用することもありません。
摩耗するのは延長・変換コネクタの間のみとなります。延長ケーブルがショート(15cm程度)なのは邪魔にならないことと無駄な電力消費がないことです。
USBの規格(USB2.0/USB3.0など)は出来れば合わせる必要があります。最近USB3.0風ブルーコネクタのUSB2.0製品もあるので注意が必要です。
USB延長ケーブル
USB変換コネクタ/ケーブル・回転式コネクタ
USB変換コネクタ(ケーブルなし)は、接続をUSBスロットから直進させたくない場合にコネクタで90度に方向を固定するコネクタです。
USBポートに製品が直接するので接続箇所に余裕が必要だったり、上下左右にUSBポートが並んでいる場合には干渉して使用できなくなったりする可能性があるので注意が必要です。
USB方向変換(L字)コネクタ・・・方向を固定できる利点はあるが、コネクタにコネクタ接続するのでPC本体への直接接続などでは曲がらない部分が長くなる欠点があります。
USB変換ケーブル(L字ケーブル)も、上記と同じ理由です。ただし、USBポート横並びに隣接(干渉)するUSB/LAN/HDMI/オーディオなどの利用ポートやジャックがないことに注意が必要です。それとUSBコネクタには上下向きがあるので右向きL字コネクタ、左向きL字コネクタがあるので注意が必要です。
USB方向変換(L字)ケーブル・・・コネクタ付近もスッキリし稼働部はケーブルとなる。
また、USB変換コネクタ中央に関節が付いている「回転式」なるものが販売されていますが、全方向動く利点はありますが、関節内部ケーブルの耐久性が非常に低く、ロック機構も弱く常に動く(L字などで固定されない)など接続したケーブルの収まりも悪くなりやすいです。気になるのであれば100均などでも入手することが出来るようです。
USB回転式コネクタ
USB電源スイッチアダプタ/ケーブル
USB電源スイッチアダプタまたはスイッチ付きUSB延長ケーブルの場合にはスイッチをON/OFFするだけですのでコネクタの摩耗がありませんが、コネクタ周りが突出することになります。
電源スイッチの仕組みは、基本的にUSB電源(+)やグランド(-)を電気的に接続切断出来るようになっているものがほとんどです。
USBハブとしての機能はないのでWindowsドライバや余計な電力消費を必要としません(LED付きの製品でもあれば消費するかも)
それとネットで調べている限りではストレートコネクタ型 USB2.0/1.1の製品しか存在しないことと、延長ケーブル型はスイッチが格好悪いこと、製品の性質上「充電のみ」という製品が存在するので必ず「データ通信対応」の商品を探す必要があります。
USB電源スイッチアダプタ
スイッチ付きUSB延長ケーブル(LED付き)
ドライバの切断を行う
ゲームパッドを制御するためのデバイスドライバを無効とすることでスリープ機能を復帰させたり、ドライバをリセットする(無効にして有効に戻す)ことによってスリープ機能を復帰させることが出来ます。
この方法を利用することでゲームパッドを繋いだままでスリープを機能させることが出来ます。
条件がわかりませんが、すべてのゲームパッドドライバを無効にしなくてもスリープ機能が復帰するようです(上位下位などの優先順位がある?)
4.デバイスドライバの無効
デバイスマネージャからゲームパッドドライバを無効にすることでゲームパッドをWindowsに認識させなくすることができます(物理的切断ではなく、ソフトウェア的な切断を行う)
無効化されることでスリープ機能は正常になりますが、この場合には無効になっているゲームパッドは再度有効とするまで利用できなくなります。
スリープタイマが正常にカウントするかは入力経過時間の確認アプリ(Last Input)を利用してください。
標準ドライバの場合、スタート右クリック>デバイスマネージャ>ヒューマン インターフェイス デバイス>HID 準拠ゲーム コントローラーを右クリック>「デバイスを無効にする」
デバイスを無効にするとデバイスアイコンが変化(無効化)します。
ゲームパッドを利用するときには同じ手順にてドライバを有効にする必要があります。アイコンが変化(無効化)しているデバイスを有効にしてください。
USB有線ゲームパッドにおいて、ドライバ無効にしたままでUSBを抜き差ししている場合には、ドライバ有効にした際にスリープタイマがカウントしなくなることが確認されています。この場合にはUSBを抜き差しせずに再度ドライバ無効にすることで正常に戻ります。
(追加)ゲームコントローラの無効化を簡単に行うためのアプリ「DI Gamepad Manager」を作成しました。
5.デバイスドライバのリセット
利用しているゲームパッドにもよりますが、デバイスドライバをリセットする(無効にしてから有効に戻す)ことでスリープ機能が復帰するようになり、ゲームパッドも普通に利用することが出来るケースがあるようです。
標準ドライバの場合、スタート右クリック>デバイスマネージャ>ヒューマン インターフェイス デバイス>HID 準拠ゲーム コントローラーを右クリック>「デバイスを無効にする」>再度 HID 準拠ゲーム コントローラーを右クリック>「デバイスを有効にする」
スリープタイマが正常にカウントするかは入力経過時間の確認アプリ(Last Input)を利用する手段があります。当方の環境ではドライバ無効にしてからカウントが開始してドライバ有効でもカウントが継続しております。
慣れてくれば、Windows起動後に1度この手順を行うだけで問題なくスリープ利用できる状態が継続することを確認しています。
- USBゲームパッドをPCより抜き差ししたとき
- USBゲームパッドの電力低下や不具合により切断→再接続されたとき
- USBハブ上コネクタでの抜き差ししたとき
- USBハブ上スイッチのON/OFFしたとき
- USBハブの電力低下や不具合により切断→再接続されたとき
- Windowsをログオフ(サインアウト)→ログイン(サインイン)したとき
- Windowsを再起動したとき
ただし、ゲームパッド専用ドライバ(HID 準拠ゲーム コントローラー以外)や専用ユーティリティを有するゲームパッドについては確認できておりませんので、同様にスリープ機能が復帰するかはわかりません。
この場合には、USB差し込み検出(PnP)によるインストール機能を使わずに手動インストールをすることでスリープしなくなる現象が解決したというネットでの情報もあります。
ゲームパッドドライバのリセット方法によってスリープ機能が復帰したことを知る手段は、「スリープ確認方法」で取り上げたスリープ設定の画面オフ時間を短くして画面が消えるかで確認することになります(再設定の操作と最低1分以上の待機が必要)。
この場合は、一定時間待機後に画面が消えるかだけで判断することが出来ます(画面が消えるのであればPC電源オフも機能するため)ただし、ゲームが起動しているとスリープ禁止処理が働いていることがありますので、確認は必ずゲームを終了してから行ってください。
(追記)
スリープタイマのカウントを知る手段として、最終入力経過時間の確認アプリを制作しましたのでそちらで確認することが出来ます。


こんにちは
返信削除参考になりました、ありがとうございます
スリープ用のソフトを使う方法はどうでしょうか?
https://www.den4b.com/products/shutter
環境はPS5コントローラーをUSB接続で使用
上記ソフトの監視イベントで非アクティブなユーザ追加
メソッドはLow Level HookかInjection Hookで
http://www.den4b.com/wiki/Shutter:Events#User_Inactive
コントローラーの入力無視、マウスとキーボード監視になりました
PCスリープの場合は動作を追加にスリープ設定
モニタースリープはプログラム起動で下記ソフト指定
https://freesoft-100.com/review/sordum-monitor-off.html
画面がオフになったとき、マウスをブロック指定でマウスとコントローラー入力でもモニタ復帰しませんでした
復帰にキーボード入力必要なのが欠点です
ゲームパッド単独でもスリープしなくなることを興味深く拝見させて頂きました。
返信削除自分はPlaystationようゲームパッドを接続するアダプタを接続しているのですがコイツが原因でWin10/11ではスリープしません。抜くとスリープします。
Win8.1までは大丈夫です。
ゲームパッド繋がなくてもこのアダプタをUSBorBluetooth接続をするだけでスリープしなくなるので原因がコイツなんだな、ッテ所までは切り分けしましたが未だ解決出来ずWin8.1ので運用しています。
PSゲームパッドをマウスとして使っているので外すことが出来ない、スリープしないのも困る、と言うジレンマ。
このアダプタが何かしら信号を出しているのか省電力絡みなのか。
ネットでも情報が全然ないンですよね。
これ以上ないすばらしい記事!節電要請の折ドライバリセットの項とても助かりました
返信削除当方PS4コンおよび互換パッドでスリープしない状態でした
ドライバのイベントタブに今年8月から「デバイスが移行されませんでした」とあり、ここが起点だったかな?と考えています
win11 buffalo BSGP1601環境ですが、こんな感じで解決しています。
返信削除adminで
pnputil /disable-device "HID\VID_1DD8&PID_000B\8&33ef65b4&0&0000"
pnputil /enable-device "HID\VID_1DD8&PID_000B\8&33ef65b4&0&0000"
bootの度に行っています。
古い記事に対するコメントで失礼します。すでに解決しているかもしれませんが、こちらでも同様な現象が起きていました。
返信削除抜本的な解決には至りませんでしたが、bootの度に以下のコマンドでしのいでいました。
pnputil /disable-device "HID\VID_......"
pnputil /enable-device "HID\VID_......."
Win10にてスリープしない問題が発生しましたがこちらの情報のおかげで無事解決できました。
返信削除ありがとうございます。
私の環境では
・JY-PSUAD1にてPSのジョイパを接続
・GeForce Experienceのオーバーレイが有効
の2点のセットで問題が発生してました。
どちらか一方だけならスリープが正常に機能するようです。
普段は必要ないオーバーレイを無効にしておく事で対応できました。