Hatena::ブログ(Diary)

ウィモバの日々 Twitter

2017-08-05

スリープ挙動検出アプリを作ってみたけど何故かGPD Pocketでは検出できない

どうにもGPD Pocketのスリープの挙動が怪しいので、スリープの挙動検出アプリっぽいものを作ってみた。

http://island.geocities.jp/flcl_ride_on_shooting_star/soft/SleepChecker.zip

仕組み自体は簡単なもので、.NetアプリでPowerModeChangedイベントを登録して検出時にログ表示しているだけ。

Windows10デスクトップPCや、同じくWin10のレッツノート(CF-N10)では

スリープした際とレジュームした際、電源↔バッテリ変更時(ノートのみ)に状態を検出してログが取れた。

f:id:rideonshooting:20170808003609j:image:w640

少なくとも、一般的なPCでは問題なく取得出来ているようにみえる。


ただ、このアプリをGPD Pocketで動かしてみると、一番最初の起動ログしか取れず

手動スリープでも放置でのスリープでも、状態変化を検出出来なかった。

ちなみに、スリープから復帰後にコマンドプロンプト(要管理者権限)で確認してみたら下記のような状態だった。


powercfg /requests・・・スリープを妨げる要因は無し

powercfg /lastwake・・・スリープ状態の解除履歴カウント - 0

powercfg /sleepstudy・・・出力したログファイルを見るとActiveからStandbyに状態遷移しているようには見えるが・・・

f:id:rideonshooting:20170809120905j:image:w640

さらに管理ツールのシステムログを見ると、こちらもスリープを認識しているようにはみえる。

しかし、lastwakeカウントが0でUSB Composite Deviceなり電源ボタンといった要因が上がってきていないのが妙に感じる。

他のPCと何が違うんだろう(困惑

GPD Pocketのファームウェア(リカバリイメージ)で出荷時らしき状態に戻してみた

どうにもWindows10クリーンインストールしたGPD Pocketのスリープ問題

(きちんとスリープ出来ていない?スリープ中に死ぬ等)がうまく解決せず挙動がおかしく、どうにもままならない。

なので公式のファームウェアリカバリイメージ)で出荷時らしき初期状態に戻してみようという試み。



まずは配布されているファームウェアダウンロードしよう。

https://mega.nz/#!pJpWDSDJ!xv1E-Lsa9m-9KOXqyofHvdB90lmJ7_Ln6zVzmSwAhtI

から「GPD Pocket--firmware of Windows OS(20170526).rar」をダウンロードする。

7.38GBもあるうえに転送制限があって滅茶苦茶時間がかかるので、余裕のある時にダウンロードしておこう。

レジュームもしてくれるのでブラウザを立ち上げっぱなしのまま放置推奨。



ダウンロードが終わったらrarファイルの中身を解凍し、容量8GB以上のUSBメモリに全部コピーする。

f:id:rideonshooting:20170806012429p:image:w640

なお、USBメモリにコピーする前にフォーマットを下記のように変更しよう。

・フォーマットが既定のFAT32ではコピー出来ないサイズのファイルがあるのでNTFSに変更する。

・ボリューム名がおかしいとファイルアクセスでコケるため、ボリューム名をWINPEに変更する。

f:id:rideonshooting:20170805155355p:image

なお、当然ながらイメージ本体のサイズが大きいので高速なUSBメモリをオススメする。

別に信頼と実績のトランセンドでなくてもいいが、信頼性があり高速なUSBメモリを選ぼう。



USBメモリへのコピーが終われば、いよいよGPD Pocket本体に書き込む。

GPD Pocketの電源を入れたらGPDロゴが出てる間に「Fn+7」でF7キーを押下してbootデバイス一覧画面を表示し、

bootするデバイスとして刺したUSBメモリを選択して実行。

f:id:rideonshooting:20170805154254j:image:w640

画面が変わってログが動き出したらしばらく放置しよう。

f:id:rideonshooting:20170805160644j:image:w360

完了すると「〜complete, system restart」的なメッセージが出た後にGPDロゴ画面に戻るので、その時にUSBメモリを抜こう。



  • 3:Windows10が立ち上がったら最終仕上げ

リカバリが無事に完了してUSBメモリを抜くとWindows10が自動的に立ち上がる。

f:id:rideonshooting:20170805202639j:image:w640

アカウントが最初から作られていたりテストファイル(?)等のゴミが残っているが

デスクトップにある「CleanupTestTool」を実行するとゴミファイルが消える。

その後、Windows10起動時に一緒に立ち上がるツールの[OK]を押下すると再起動して

GPD Pocketが届いてから一番最初に起動した際のセットアップ開始状態になる。

セットアップを進めて完了すると、デスクトップからゴミファイルが消えていてWifiの5G認識&接続も出来た。

f:id:rideonshooting:20170805204143j:image:w640

これで出荷時の状態に復帰出来たと思っていいのだろう。タブンネ

この状態でスリープを試してみたが、クリーンインストールした時のように死んで再起動するようなことはなかった。



念のためスリープ検出確認アプリでも確認してみた。

http://island.geocities.jp/flcl_ride_on_shooting_star/soft/SleepChecker.zip

同じWindows10デスクトップPCやレッツノートではスリープとレジュームのイベントが検出出来ていたが、果たして検出出来るのか?

とGPD Pocketで動かしてみたが、一番最初のアプリ起動ログしか出ていない。

スリープ挙動検出アプリを作ってみたけど何故かGPD Pocketでは検出できない - ウィモバの日々

管理ツールWindowsイベントログを見てみると、そっちのログはちゃんと出てるんだよなあ。

うーん、この機種のスリープは何が違うんだろう・・・

まぁスリープ死や再起動が起こらないからまぁいっかー・・・ちょっとモヤモヤするけど(;´∀`)



参考サイト様:http://yasuos.com/blog/2016/11/29/post-8999/

先人様の叡智に感謝。ありがとう・・・っ!ありがとう・・・っ!