わたしは 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 やる気分だったのも冷めてしまいますね。
というわけで、解決できないか、いろいろ探ってみました。
いろいろ試行錯誤していると、どうもこの問題は 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 アプリまで作ってみたけど、結局タスクスケジューラでできてしまった…。これが一番シンプルなのでこうなりました。
なるるるるな / NALULUNA
2024-11-01 09:50:29 +0000 UTCなるるるるな / NALULUNA
2024-11-01 09:45:27 +0000 UTCDrillUsagi
2024-11-01 08:49:34 +0000 UTCJAN
2024-11-01 08:24:37 +0000 UTC