PCのスリープでQuest Link(有線)が繋がらなくなる問題(と解決)
🕑 Added 2024-11-01 05:10:40 +0000 UTCはじめに
わたしは Quest Pro を PC に USB 接続して、Quest Link (有線) の環境でいつも Beat Saber を遊んでいます。ただ、ひとつ問題があって…。
PC は基本的にシャットダウンせずに、スリープ、スリープ復帰で使っているのですが、このスリープと Quest Link の相性がとてもよろしくない…。さあ、Quest Pro をかぶって Beat Saber 遊ぼう!と思ったとき、下記のいずれかになります。
1. 普通に Quest Link が開始できる。いいね!
2. Quest Link が未接続になってしまっている…が、Quest Pro につながっている USB-C ケーブルを抜いて挿し直すと認識され、Quest Link が開始できるようになる
3. Quest Link が未接続になってしまっている。USB ケーブルの抜き差ししても、PC を検索中... のまま変わらない
確率は 1/3 ずつくらい。2. はまだ良いのですが、3. は困ります。せっかく VR HMD かぶったのをまたはずして、PC にもどって再起動して、3 分くらい待って、やっとはじめられる…。Beat Saber やる気分だったのも冷めてしまいますね。
というわけで、解決できないか、いろいろ探ってみました。
OVRService の再起動で認識するようになる
いろいろ試行錯誤していると、どうもこの問題は Windows の裏で動いている Meta の OVRService を再起動することで、繋がらなくなってしまった Quest Link が再接続可能になることがわかりました。
PC を再起動しなくても、サービスの管理画面を開いて、この OVRSerivce を再起動すれば良い、ということですね。
スリープ復帰で自動的に実行
すこし復帰までの手間は短くなりましたが、せっかくかぶった VR HMD をまたはずして PC をいじる、というのは気分が良くありません。なんとか自動化できないか、またいろいろ試行錯誤してみました。
結論から言うと、タスクスケジューラに、スリープのイベントをトリガーにして、サービスの再起動するタスクを登録することで、スリープ復帰時に自動で上の処理を行えるようにできました。
具体的な方法は…
1. スタートボタンを右クリックして「ターミナル (管理者)」を起動
(コマンドプロンプトを管理者として起動)
2. 下記のコマンドをコピーして、コマンドプロンプトに張り付けて、enter キー
schtasks /create /tn RestartQuestLink /tr "powershell -windowstyle hidden -command \"Restart-Service OVRService -force\"" /sc onevent /mo "*[System[(EventID=107)]]" /ec System /rl highest
3. これで完了です。登録されたタスクは、タスクスケジューラで確認できます。ちゃんと動いているかどうかは、「Meta Quest Link」のアプリを開いた状態でタスクを手動で実行してみるとわかります。正常に動いていれば、アプリが終了して、そのあとまた起動する様子がわかります。
自動ではなく、手動で実行
手動でサービスを再起動させたい、という場合のためのバッチファイルも作成しました。スリープとは関係なしに、長時間 PC を使っていたら Quest Link が接続できなくなった、という場合に使えると思います。
使い方は、事前に上の 1. 2. を実行してタスクを登録しておきます。あとは、下記の zip 内にあるバッチファイルをダブルクリックするとサービスを再起動します。デスクトップにでも置いておくと便利かも。
タスクを削除する方法
このタスクを削除して元に戻す方法も書いておきます。
1. スタートボタンを右クリックして「ターミナル (管理者)」を起動
(コマンドプロンプトを管理者として起動)
2. 下記のコマンドをコピーして、コマンドプロンプトに張り付けて、enter キー
schtasks /delete /tn RestartQuestLink /f
3. これで元通りです。
おわりに
短い記事ですが、いろいろと試行錯誤で時間がかかってしまいました。サービスの再起動には管理者権限が必要なので、管理者権限を要求するダイアログを出さずにどうやれば自動化できるか…、スリープ復帰を判定してサービスを再起動する Windows アプリまで作ってみたけど、結局タスクスケジューラでできてしまった…。これが一番シンプルなのでこうなりました。
Comments
なるるるるな / NALULUNA
再起動も地味に時間かかるので、意地でも解決しようとがんばりました!
なるるるるな / NALULUNA
わたしも以前はほぼ100%だめでしたが、いまはすこしは改善されたもののまだまだ…という感じです。この解決法で100%OKになるといいなあ。
DrillUsagi
いつも3になり理由がわからず、追究するより再起動が早いっしょと、PCもHMDも再起動していたので助かります。やってみます。
JAN
このスリープ問題は経験があります。私の環境では復帰後に再接続できない率がほぼ100%でした。 AirLinkが悪いのか接続が悪いのか問題の切り分けをするのも面倒になり、Wi-fi6eの6GHz帯でVD使って2401Mbps(有線の半分くらい)出ていたのでもうそれでいいやってなりました。無線でAirLinkを使って問題が再現するかは不明。 そして天吊り式のケーブルは今も宙ぶらりんのまま。次世代のデバイスがWi-fi7に対応してくれればこういう悩みも減るんでしょうかね…