数年前に購入したHPのノートPCで「スリープ、休止状態にしても即座に立ち上がってくる」不具合に数年前から悩まされていたのだが、このほどようやく原因を突き止めたので備忘録を起こす。
※忙しい人は「犯人はセキュリティ > コア分離 > メモリ整合性」まで読み飛ばしてください
概要
「スリープが勝手に復帰する」という不具合はかなりポピュラーで、ちょっと検索すればすぐに対処法を見つけることができる。
多くの場合、この問題は電源管理のオプションやスリープ解除許可デバイスの設定を変更することで解決できる。しかし今回のケースでは、検索で見つかるような一般的な解決策が効果を発揮せず、かえって検索ノイズになる始末。
かくして有用な対策を見いだせないまま時が過ぎ、結局解決まで数年の月日を要することになってしまった。
記事タイトルですでにネタバレしているが、おおよそ電源関係とは思えないオプションが影響しており、久しぶりにWindowsなんもわからんの気持ちを味わっている。
不具合発生した機種について
- HP製ノートPC ENVY x360 の 15インチモデル
- 購入時期2019年10月
- Ryzen5 3500U / 16GB DDR4 / 512GB SSD / Radeon Vega8 Graphics
- 型番 15-ds0xxx。価格.com限定商品だが、同一構成である15-ds0001AUと中身は同じはず
- 初期OSはWin10 Home。Win11 Home 23H2までアップグレード済み
- 不具合発生は購入後2年~ぐらいしてから。それまでは普通だった
どのような症状か
- 起動中のPC作業については何も問題ない。パフォーマンスも想定通り出ているし不安定さも見受けられない
- しかしスリープや休止状態といった低消費電力モードに入ると不具合が発生する
- スリープした場合:約1秒でスリープ解除され、すぐログイン画面に戻ってくる
- 休止した場合:一度電源LEDが消灯したあと約1秒で再点灯し、メーカーロゴを経てログイン画面に戻ってくる
- これらの不具合再現率は100%である。つまりスリープも休止状態も「毎回必ず」勝手に解除される
- たとえば「無操作状態で3分放置するとスリープ」の設定にして放置すると、3分おきにスリープ入⇔出を繰り返し続け、いずれ電池切れで力尽きる
- シャットダウンや再起動は問題なくできる場合も多いのだが、何かのきっかけでそれらですら失敗するようになる場合がある
- この状態になるとシャットダウンしても直後に勝手に立ち上がってくるし、再起動はログアウト前の状態でずっとぐるぐるし続けたりする
- 対処法は電源ボタン長押しでの強制断のみ
- たぶんこの人が同じ症状:Y!知恵袋
イベントビュアーからの抜粋
休止状態に入るとき [Kernel-Power]
システム セッションが 17 から 18. Reason SxTransition BootId: 251 に移行しました
休止状態が勝手に解除されたとき [Kernel-Power]
システム セッションが 18 から 20. Reason Unknown BootId: 251 に移行しました
[Power-Troubleshooter]
システムは低電力状態から再開しました。 スリープ時間: 2024-02-09T14:48:30.527490200Z スリープ解除時間: 2024-02-09T14:48:48.121263400Z スリープ状態の解除元: 不明
[BTHUSB]
※これらは不具合とは無関係だった。問題解決後も同じログが出続けているため。
Bluetooth の認証コード (link keys) をローカル アダプター上に保管できません。スタートアップの間に Bluetooth キーボードは、システム BIOS で機能しない可能性があります。
ローカル アダプターは、周辺モードをサポートするための重要な低エネルギー コントローラー状態をサポートしていません。サポートされている最低限必要な状態マスクは 0x2491f7fffff ですが、0xffffffff を取得しました。低エネルギー周辺ロール機能は無効になります。
試してみてダメだった対策
電源不具合関連のトラブルシュート
類似の不具合事例について日本語と英語で検索し、出てきた対策を全て試した。
- 電源オプションのプランで「常にON」「バランス」「低消費電力」を切り替えてみる
- 高速スタートアップの有効無効を切り替えてみる
- ハイブリッドスリープ許可のON/OFFを切り替えてみる
- スリープ解除が許可されているデバイス一覧を powercfg -devicequery wake_armed で取得し、すべて許可を取り消す
- スリープ解除タイマー一覧を powercfg /waketimers で取得し、すべて解除する
- ネットワークを全部切断
- ネットワークデバイスを無効化
電源関連に限らない一般的なトラブルシュート
どんな不具合時でも案内される対策をヤケクソ気味に全部試した。- ゴミファイルを消す(ディスククリーンアップとかで)
- ウイルスチェックする
- ウイルス対策を一次停止する(ちなみにWindowsDefenderしか入れてない)
- 常駐プログラムを全部終了
- services.msc を使い停止できる限り全てのサービスを停止
- 周辺機器等のオプション更新プログラムまで含めWindows Updateを全適用
- WindowsUpdateのキャッシュを全部消して再実行
- wuauservとかbitsのサービスを停止したあとSoftwareDistributionとcatroot2を削除して再生成させるやつ
- 作ったばかりの新規ユーザーでWindowsにログイン
- sfc /scannow する
- DISM /Online /Cleanup-Image /RestoreHealth する
- USB機器や外部モニタなどの周辺機器をすべて取り外す
- メーカーが出しているドライバとBIOSアップデートをすべて適用する
- BIOSの設定項目を全部見直す
- AMD Software Adrenalinでチップセット等のドライバを全て最新化する
- DDUでグラフィックスドライバを完全消去する
- Radeonのグラフィックスドライバのバージョンを購入初期のものにダウングレードしてみる
- Windowsのブートログを出してみて、検知されたRyzenMasterのレジストリエントリを削除する
SafeModeに手がかりが……? と希望を抱いたが結局わからず
いろいろ試しているうちに、SafeMode(ネットワークあり/なし両方)での起動時にはスリープと休止が正常に機能することに気付いた。
このことから、通常の起動とSafeModeの間に何らかの差異があると考え、デバイスマネージャーを使用して多くのデバイスを無効化し、SafeMode相当の状態にまで縮退させてみた。しかし、この試みでも問題は解決されなかった。
なおSafeModeに限らず全てのスタートアップオプションを試しているが、それらでは一切問題解決していない。
ここまでの実験結果を考察
- メーカー製のそれもノートPCで、スリープなんていう基本機能に問題が出ること自体に違和感がある
- Power-Troubleshooterの言っているスリープ状態の解除元が「不明」である以上、デバイスマネージャーで見えている程度のものがスリープ解除の原因だとは考えづらい
- スリープのみならず休止状態からも勝手に立ち上がってくるのは異常
- 休止状態は電源LEDが完全に消灯するようなモードであり、マウスやキーボードを触っただけで復帰可能なスリープとはわけが違う
- 休止状態はほぼほぼ電源OFFであるとみなせる。そこから勝手に電源投入されてしまうということは、Windowsより低いレイヤ(ざっくりハードウェアまわり)の故障なのでは?
- それにしてはSafeMode時にのみ不具合が100%再現しなくなるのが解せない
- ハードの不具合ならSafeModeでも同様に問題再現するはず
結論:わからん。お手上げ。
原因がわからないので結局再インストールに
Microsoftコミュニティみたいな結論になってしまって申し訳ないのだが、結局これが一番確実ではある。手順は以下のとおり:
- バックアップを取る
- SSDの全パーティションをクリア
- Windows11をクリーンインストール
- この段階でスリープと休止が正しく動作することを確認したらシステムイメージと復元ポイントを作成
- 以後も頻繁にスリープの動作確認を行いながら作業する
- WindowsUpdateをかけて自動でドライバを当てつつ23H2にする
- AMD Software Adrenalinでシステムデバイスのドライバを当てる
- 旧環境のUsersフォルダを環境設定ごと移植してくる
- 旧環境で使っていた周辺機器をすべて再接続する
- 旧環境で使っていたソフトを再インストールして、元通りの設定にする
すると最後のステップを作業していたところでスリープに不具合が発生するようになった。挙動も完全に同じで、再現率は100%。スリープも休止状態も勝手に解除されてしまう。
こうなると俄然調査がしやすくなる。
作業の途中途中で作っておいた復元ポイントで何度か巻き戻しを行い、作業の差分から原因特定に至った。
犯人はセキュリティ > コア分離 > メモリ整合性
最終的に判明した解決手順は以下。
- 設定から、プライバシーとセキュリティ → Windows セキュリティ → [Windows セキュリティを開く]
- 表示された画面で、デバイス セキュリティ → コア分離の詳細
- メモリ整合性がオンになっているのを、オフに切り替え
これ結構な罠UIになってて
- オフの状態ではさも問題であるかのような顔をして⚠がついている
- ひとたびオンにすると⚠マークが消えてしまうので何も異常に見えなくなる
- オンにした場合に発生しうる不具合についての記載が一切ない
- セキュリティ対策のせいでスリープできないとは普通思いつけないので原因不明になってしまう
オフ状態:こうしてタスクトレイにまで⚠マークが出てくる ここから2タップでメモリ整合性をオンにできてしまい危険 |
慣れた人ほどポチポチーと有効化しがち&切り替えたことすら忘れてしまいそう…… なので罠度が高い。今回は偶然気づけたが、そうでなければアウトだった。
補遺
メモリ整合性(コア分離)の機能はWindows10にもあったらしいが、どの時期の更新で追加された機能なのかはよく分からなかった。
問題のノートPCは、結局のところコア分離機能に互換性がなかった。ということは、PCが発売された当初はWindowsにコア分離機能が搭載されておらず、潜在的に問題を抱えた状態のまま出荷されていたのだと想像される。
ちなみにWindows10のデフォルト設定において、「メモリ整合性はオフ」らしい。これはコア分離機能の有効化が多少のパフォーマンス低下を引き起こすことに加え、一部ドライバとの互換性に問題が出るケースがあったためとされている。
今回まさにドライバ互換性?相性問題?のようなものを引いたのだが、結果、おおよそメモリ関連とは思えない妙な副作用が発生してしまったことになる。
表面上見えた症状からは、スリープ機能とコア分離機能の相性が悪いようにも見える。しかし実際にはおそらくチップセットや電源管理系デバイスの方に互換性の微妙なものがあり、それらがコア分離有効時に妙な挙動をする…… ということなのだと思われる。
ちなみにメモリ整合性を有効にする際はWindows側で非互換デバイスを検出し、見つかった場合はオンにできないはずなのだが、今回はそのチェックもすり抜けて不具合発生に至ってしまった。
不具合が出るとはいえ比較的マイナーな範囲に収まっている(通常の起動と終了はできる。低消費電力モードだけがうまく動かない)こともあって、検知に引っかからなかったのだろうか。
解決後にメインのデスクトップPCで設定を確認したところ、やはりコア分離・メモリ整合性は無効化してあった。もはや覚えていないが、過去に何か問題を引き起こしてオフにした経緯があったのかもしれない。
高速スタートアップのように「不具合時、とりあえずオフにして様子を見るやつ」になりつつあるように思える。
コメント