PICO 4 Ultraの自動スリープについて

自動スリープはPICO OSの仕様

PICO OSには「自動スリープ」という機能が搭載されており、既定で有効です。PICO 4 Enterpriseでは自動スリープについて以下のような説明が書かれています。

近接センサーがブロックされてデバイスが静止している場合、デバイスは自動的にスリープになります。

近接センサーがブロックされている、つまり頭に被っている状態で静止していると自動的にスリープします。静止状態と判定されてから5分経過すると自動スリープが行われます。

静止状態とは

文字通りの意味です。コントローラーの操作がなく、頭に被って微動だにしないという状態です。検証したところ、以下の条件が全て成立すると強制的に自動スリープしてしまうようです。

  • 近接センサーがブロックされている(頭に被っている状態である)
  • コントローラーの操作が行われていない
  • ヘッドセットに動きがない
  • 上記の状態になってから5分が経過

コントローラーの操作がなくても、頭が少しでも動いていれば静止状態として判定はされないようです。

【追記】コントローラー操作があってもスリープするのを確認しましたので訂正いたします。

Enterpriseモデルは設定でオフにできる

この機能は基本的にオフにすることができないようになっています。但し、Enterpriseモデルでは自動スリープをオフにすることが可能です。

PICO 4 Enterpriseではビジネス設定内に自動スリープの項目があり、公式の機能として無効に設定できるようになっています。

参考:Enterpriseモデルにあるビジネス設定

ドキュメント | PICO Business
PICO Businessアカウント登録やログイン、ビジネス設定、PICO Business Suite、ビジネスストリーミングや業界ソリューションに関するユーザーガイドや技術的なFAQをご覧ください。

PICO 4の場合は非公式の手段で無効にすることが可能

PICO 4やPICO 4 ProではAndroid純正の設定を呼び出すと、「User configuration」という項目があるのでそこから自動スリープを無効にすることが可能になっています。

【Androidの設定>システム>詳細設定>User configuration>自動スリープモード】
センサーをカバー、完全に静止するとデバイスは自動的にスリープモードに入ります

また、ADBコマンドでも無効にすることも可能です。

【ADBコマンド】
adb shell setprop persist.pvr.sleep_by_static 0
2 ADB Frequently Used Command — ADB Frequently Used Command 0.1 documentation

PICO 4 Ultraでは無効にすることができない

残念ながらPICO 4 Ultraには自動スリープの設定項目が存在しません。つまり、PICO 4 Ultraだけが自動スリープを無効にすることができません。

「ディスプレイと明るさ」の設定はヘッドセットを外したときだけ機能する

PICO 4 Ultraでは、「設定>ディスプレイと明るさ」に「自動ディスプレイオフ」という項目があります。これはディスプレイがオフになるまでの時間を設定できますが、自動スリープ時間の方が優先されるためあまり意味のない項目となっています。

ではどんなときに機能するのかというと、近接センサーがブロックされて居ない状態、つまりPICO 4 Ultraを頭から外して机の上に置いてあるような状況でのみ機能します。お手洗いなどで5分以上離席するときぐらいしか役に立つ場面はないかと思います。あるいは、頭から外したら電源ボタンを押さなくてもすぐにスリープして欲しいときに短い時間に設定します。

Android設定内にUser configurationが存在しない

PICO 4 UltraではSettings.apkを入れたり、ADBコマンドでAndroid純正の設定を呼び出しても「User configuration」という項目が存在しません。

一見同じPICO OSのように思えますが、ベースとなるAndroidのバージョンがPICO 4と大きく異なるので、全く別のOSだと考えた方が良いです。PICO 4がAndroid 10でPICO 4 UltraはAndroid 14が動作しています。

Settings.apkはただのショートカットアプリ

PICO内部に元から存在しているAndroidの設定を呼び出しているだけなので、これは設定アプリそのものではありません。Settings.apkをインストールせずに、ADBコマンドで呼び出す場合は以下の通りです。

【adbコマンド】 
adb shell am start -a android.settings.SETTINGS
GitHub - Pico-4/Settings: App that allows to access the Android settings of the Pico 4.
App that allows to access the Android settings of the Pico 4. - Pico-4/Settings

ADBコマンドでシステムプロパティを変更する権限がない

PICO 4 UltraでADBを使用し、setpropコマンドによるシステムプロパティの変更を試すと「permission check failed」が返ってきます。

Android公式の情報は見つけられませんでしたが、Android 9以降ではセキュリティが強化されたことでsetpropコマンドでのシステムプロパティの変更が行えないようになっているようです。PICO 4では変更できたので、開発用にわざわざ解放されていたのだと思います。とはいえ、Android 10と比べるとAndroid 14ではセキュリティ周りがより強固になっている事でしょうから、融通が利きにくくなっていてもおかしくはないです。

スリープを無効にするようなAndroidアプリはPICOでは機能しない

Androidスマートフォン向けに公開されている、WakeLockを掴むなどしてスリープを無効にする機能を搭載したアプリでも、PICO OSの自動スリープを無効にすることはできませんでした。

Androidの開発者向けオプションに存在する「充電中にスリープしない」もPICOでは機能しません。恐らくAndroid標準の自動スリープ機能が動作しているのではなく、独自実装の自動スリープである可能性が高いです。

PICO 4 Ultra Enterpriseなら無効にできる?

PICO 4 Ultra Enterpriseを所有していないので確認できていませんが、ビジネス設定が搭載されているはずなので恐らく設定の変更が可能です。少なくともPICO 4 Enterpriseには自動スリープの設定が存在します。

設定項目の内訳について

PICO 4 Ultraの「ディスプレイと明るさ」設定にある項目やPICO 4の「User configuration」にある項目を変更すると、システムプロパティの値も変更されます。この「persist.pvr.sleep_by_static」が自動スリープに関する値ですが、PICO 4 Ultraではこれを変更する権限がユーザー側にありません。

機能名システムプロパティ名
自動スリープpersist.pvr.sleep_by_static1:オン 0:オフ
自動ディスプレイオフpersist.psensor.screenoff.delay-1:なし 任意の秒数で設定
自動起動persist.psensor.sleepmode2:オン 3:オフ
システムスリープタイムアウトpersist.psensor.sleep.delay-1:なし 任意の秒数で設定

V睡に関係なく地味に困る機能

PICOの自動スリープは、主にVRChatでのV睡を行う方が無効にしたいと要望を出している機能です。ただ、PICO内蔵アプリで動画視聴をしているときにもスリープしてしまう可能性がありますので、V睡云々に関係なく無効にできた方が嬉しいのは間違いないでしょう。

自動スリープ自体はPICO OSに元からある仕様なので、PICO 4 Ultraの不具合ではありません。残念ながらPICO 4 Ultraではソフトウェア的に無効にする手段がないというだけです。

自動ディスプレイオフの設定よりも自動スリープが優先されることや、頭に被っている状態かどうかで自動スリープが動作するかが決まるという分かりにくい仕様のため、何故スリープしてしまうのかがよく分からないという人も多いかと思います。自動スリープの説明自体が明記されていないことも、混乱の原因になっているように感じます。

もちろん、国内外問わず修正して欲しいという声は挙がっています。この仕様を理解した上での詳細なフィードバックや熱い要望がPICOの開発まで上手く伝われば動きがあるかもしれませんが、安全上の懸念もあるので、今後どうなるのかはなんとも言えない感じがします。

個人的には特に困っていないとはいえ、動画鑑賞時に遭遇する可能性はあるので自動スリープをオフにするスイッチは是非とも実装して欲しいですね。

トラッカーが飛ばないでほしいだけなら対応可能

Standableを併用すると、スリープ時にPICO Motion Trackerが飛んで身体が滅茶苦茶になってしまうのを防げます。別に画面が消えても構わないという人はStandableで対処してみましょう。

Standable:FBEとPICO Motion Trackerを併用する
「Standable: Full Body Estimation」を使用すると、PICO Motion Trackerの位置合わせが楽になったり、スリープするなどしてPICO Motion Trackerが切断されてしまっても身体が吹き飛ば...

近接センサーの仕様について(ハードウェア側に対策する場合)

近接センサー(Proximity Sensor)のモジュールは「stk_stk3x1x_prox」のようで、環境光センサー(ALS: Ambient Light Sensor)としても動作するものです。 デバイス情報を見る限りでは、最大検出範囲が5cmのようです。

モノクロカメラ越しに下部が発光するため、赤外線センサーであることが推測されます。

下が送信部、上が受信部かと思われます。

センサーの応答を確認しながらテストしたところ、受信部となる下部を覆うと反応しなくなるようです。全体を覆う場合はゼロ距離扱いで反応してしまうほか、位置調整が少々シビアです。理屈としては送信部・受信部のどちらか片方だけ覆えば良さそうですが、下部の方がやりやすいように感じました。

どちらに貼るのが適切かについては追求いたしません。そもそもテープを貼るだけとはいえ、改造行為は適切ではありません。それと、SteamVR側からオフにされる場合もあるようですので、その辺りの設定も確認しておくのをお忘れなく。

オフにした方が良いかもしれないし、関係ないかもしれない。(どうにもハッキリしない)

VRヘッドセットを着用したまま就寝することで起こりうる、事故・損傷・怪我などについて、当サイトでは一切の責任を負いません。リチウム電池を頭部に装着している危険性を十分認識の上、自己責任でお試しください。

以下の枕であれば、安価かつ容易に横たわるのに便利でした。熱がこもったりしないよう十分なチェックを行うことをおすすめします。横を向くなら「ぶいすいーと Your Side」の方が良さそうに思えます。

タイトルとURLをコピーしました