StereoKit: Pico 4 headset not working with StereoKit
Description
I cannot run StereoKit with the StereoKit_DotNet project and the StereoKit_Android project on my Pico 4. I’m using the SKTemplate-Universal repository.
StereoKit_DotNet (PC VR) problem
I use the Pico Streaming Assistant with a USB cable, which successfully opens and runs SteamVR. The problem is when I run StereoKit it does not recognise my headset and just opens in “flatscreen mode”, even though it is working right in SteamVR.

StereoKit_Android problem
When I run StereoKit natively on the Pico 4 it is just displayed in 2D mode and I can not do anything.

I then looked at the Pico 4 documentation and it stated that I should add <meta-data android:name="pvr.app.type" android:value="vr" /> in the AndroidManifest.xml file. When I then ran the StereoKit application, it was just stuck in the Pico 4 loading screen.

On their documentation, they are stating that some things need to be loaded into OpenXR, but I’m not that familiar with OpenXR so I have not tested adding that code.

Platform / Environment
I’m using the SKTemplate-Universal repository which is in C#. The headset I’m using is the Pico 4. I’m using the StereoKit_DotNet and StereoKit_Android project.
Logs or exception details
I get this output when running the StereoKit_DotNet(PC) project:
[SK diagnostic] Initializing StereoKit v0.3.6 Win32 x64...
[SK diagnostic] Initializing Assets
[SK diagnostic] Initializing Platform
[SK diagnostic] sk_gpu: Using Direct3D 11: NVIDIA GeForce GTX 1070 Ti
[SK diagnostic] Starting mixed reality mode
[SK diagnostic] available: XR_KHR_D3D12_enable
[SK diagnostic] available: XR_KHR_opengl_enable
[SK diagnostic] available: XR_KHR_vulkan_enable
[SK diagnostic] available: XR_KHR_vulkan_enable2
[SK diagnostic] available: XR_KHR_convert_timespec_time
[SK diagnostic] available: XR_KHR_composition_layer_cube
[SK diagnostic] available: XR_KHR_composition_layer_cylinder
[SK diagnostic] available: XR_KHR_composition_layer_equirect
[SK diagnostic] available: XR_KHR_visibility_mask
[SK diagnostic] available: XR_KHR_composition_layer_color_scale_bias
[SK diagnostic] available: XR_EXT_win32_appcontainer_compatible
[SK diagnostic] available: XR_EXT_debug_utils
[SK diagnostic] available: XR_OCULUS_recenter_event
[SK diagnostic] available: XR_FB_display_refresh_rate
[SK diagnostic] available: XR_META_performance_metrics
[SK diagnostic] available: XR_OCULUS_ovrsession_handle
[SK diagnostic] available: XR_FB_haptic_amplitude_envelope
[SK diagnostic] available: XR_FB_haptic_pcm
[SK diagnostic] available: XR_FB_touch_controller_pro
[SK diagnostic] available: XR_FB_touch_controller_proximity
[SK diagnostic] available: XR_OCULUS_external_camera
[SK diagnostic] REQUESTED: XR_KHR_D3D11_enable
[SK diagnostic] REQUESTED: XR_KHR_composition_layer_depth
[SK diagnostic] REQUESTED: XR_KHR_win32_convert_performance_counter_time
[SK diagnostic] REQUESTED: XR_OCULUS_audio_device_guid
[SK diagnostic] REQUESTED: XR_FB_color_space
[SK info] Couldn't find our desired MR form factor, no MR device attached/ready? [XR_ERROR_FORM_FACTOR_UNAVAILABLE]
[SK info] MixedReality display mode failed, falling back to Flatscreen
[SK diagnostic] Starting flatscreen mode
[SK diagnostic] Created swapchain: 1280x720 color:rgba32_linear depth:depth32
[SK diagnostic] Initializing Audio
[SK diagnostic] ISAC audio backend not available, falling back to miniaudio! It's likely the device doesn't have Windows Sonic enabled, which can be found under Settings->Sound->Device Properties->Spatial Sound.
[SK info] Using audio backend: WASAPI
[SK diagnostic] Initializing Defaults
[SK diagnostic] Initializing World
[SK diagnostic] Initializing Sprites
[SK diagnostic] Initializing Lines
[SK diagnostic] Initializing UI
[SK diagnostic] Initializing Renderer
[SK diagnostic] Initializing Physics
[SK diagnostic] Initializing Input
[SK info] Initialization successful
I get these errors in the output when I run the StereoKit_Android project:
Forwarding debugger port 8865
Detecting existing process
> am start -a "android.intent.action.MAIN" -c "android.intent.category.LAUNCHER" -n "com.companyname.stereokit_android/crc6422cdc46f005356b4.MainActivity"
> Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.companyname.stereokit_android/crc6422cdc46f005356b4.MainActivity }
Loaded assembly: /data/data/com.companyname.stereokit_android/files/.__override__/StereoKit_Android.dll
Loaded assembly: /data/data/com.companyname.stereokit_android/files/.__override__/StereoKit.dll [External]
Loaded assembly: /data/data/com.companyname.stereokit_android/files/.__override__/StereoKitApp.dll
Loaded assembly: /data/data/com.companyname.stereokit_android/files/.__override__/Xamarin.Android.Arch.Core.Common.dll [External]
Loaded assembly: /data/data/com.companyname.stereokit_android/files/.__override__/Xamarin.Android.Arch.Core.Runtime.dll [External]
Loaded assembly: /data/data/com.companyname.stereokit_android/files/.__override__/Xamarin.Android.Arch.Lifecycle.Common.dll [External]
Loaded assembly: /data/data/com.companyname.stereokit_android/files/.__override__/Xamarin.Android.Arch.Lifecycle.LiveData.Core.dll [External]
Loaded assembly: /data/data/com.companyname.stereokit_android/files/.__override__/Xamarin.Android.Arch.Lifecycle.LiveData.dll [External]
Loaded assembly: /data/data/com.companyname.stereokit_android/files/.__override__/Xamarin.Android.Arch.Lifecycle.Runtime.dll [External]
Loaded assembly: /data/data/com.companyname.stereokit_android/files/.__override__/Xamarin.Android.Arch.Lifecycle.ViewModel.dll [External]
Loaded assembly: /data/data/com.companyname.stereokit_android/files/.__override__/Xamarin.Android.Support.Animated.Vector.Drawable.dll [External]
Loaded assembly: /data/data/com.companyname.stereokit_android/files/.__override__/Xamarin.Android.Support.Annotations.dll [External]
Loaded assembly: /data/data/com.companyname.stereokit_android/files/.__override__/Xamarin.Android.Support.AsyncLayoutInflater.dll [External]
Loaded assembly: /data/data/com.companyname.stereokit_android/files/.__override__/Xamarin.Android.Support.Collections.dll [External]
Loaded assembly: /data/data/com.companyname.stereokit_android/files/.__override__/Xamarin.Android.Support.Compat.dll [External]
Loaded assembly: /data/data/com.companyname.stereokit_android/files/.__override__/Xamarin.Android.Support.CoordinaterLayout.dll [External]
Loaded assembly: /data/data/com.companyname.stereokit_android/files/.__override__/Xamarin.Android.Support.Core.UI.dll [External]
Loaded assembly: /data/data/com.companyname.stereokit_android/files/.__override__/Xamarin.Android.Support.Core.Utils.dll [External]
Loaded assembly: /data/data/com.companyname.stereokit_android/files/.__override__/Xamarin.Android.Support.CursorAdapter.dll [External]
Loaded assembly: /data/data/com.companyname.stereokit_android/files/.__override__/Xamarin.Android.Support.CustomTabs.dll [External]
Loaded assembly: /data/data/com.companyname.stereokit_android/files/.__override__/Xamarin.Android.Support.CustomView.dll [External]
Loaded assembly: /data/data/com.companyname.stereokit_android/files/.__override__/Xamarin.Android.Support.Design.dll [External]
Loaded assembly: /data/data/com.companyname.stereokit_android/files/.__override__/Xamarin.Android.Support.DocumentFile.dll [External]
Loaded assembly: /data/data/com.companyname.stereokit_android/files/.__override__/Xamarin.Android.Support.DrawerLayout.dll [External]
Loaded assembly: /data/data/com.companyname.stereokit_android/files/.__override__/Xamarin.Android.Support.Fragment.dll [External]
Loaded assembly: /data/data/com.companyname.stereokit_android/files/.__override__/Xamarin.Android.Support.Interpolator.dll [External]
Loaded assembly: /data/data/com.companyname.stereokit_android/files/.__override__/Xamarin.Android.Support.Loader.dll [External]
Loaded assembly: /data/data/com.companyname.stereokit_android/files/.__override__/Xamarin.Android.Support.LocalBroadcastManager.dll [External]
Loaded assembly: /data/data/com.companyname.stereokit_android/files/.__override__/Xamarin.Android.Support.Print.dll [External]
Loaded assembly: /data/data/com.companyname.stereokit_android/files/.__override__/Xamarin.Android.Support.SlidingPaneLayout.dll [External]
Loaded assembly: /data/data/com.companyname.stereokit_android/files/.__override__/Xamarin.Android.Support.SwipeRefreshLayout.dll [External]
Loaded assembly: /data/data/com.companyname.stereokit_android/files/.__override__/Xamarin.Android.Support.Transition.dll [External]
Loaded assembly: /data/data/com.companyname.stereokit_android/files/.__override__/Xamarin.Android.Support.v7.AppCompat.dll [External]
Loaded assembly: /data/data/com.companyname.stereokit_android/files/.__override__/Xamarin.Android.Support.v7.CardView.dll [External]
Loaded assembly: /data/data/com.companyname.stereokit_android/files/.__override__/Xamarin.Android.Support.v7.RecyclerView.dll [External]
Loaded assembly: /data/data/com.companyname.stereokit_android/files/.__override__/Xamarin.Android.Support.Vector.Drawable.dll [External]
Loaded assembly: /data/data/com.companyname.stereokit_android/files/.__override__/Xamarin.Android.Support.VersionedParcelable.dll [External]
Loaded assembly: /data/data/com.companyname.stereokit_android/files/.__override__/Xamarin.Android.Support.ViewPager.dll [External]
Loaded assembly: /data/data/com.companyname.stereokit_android/files/.__override__/Xamarin.Essentials.dll [External]
Loaded assembly: /data/data/com.companyname.stereokit_android/files/.__override__/Mono.Android.dll [External]
Loaded assembly: /data/data/com.companyname.stereokit_android/files/.__override__/Java.Interop.dll [External]
Loaded assembly: /data/data/com.companyname.stereokit_android/files/.__override__/System.dll [External]
[ereokit_androi] Late-enabling -Xcheck:jni
[ereokit_androi] Unknown bits set in runtime_flags: 0x8000
[ereokit_android] type=1400 audit(0.0:127): avc: denied { write } for path="/dev/blkio/tasks" dev="cgroup" ino=5 scontext=u:r:untrusted_app:s0:c111,c256,c512,c768 tcontext=u:object_r:cgroup:s0 tclass=file permissive=0
[Binder:6935_1] type=1400 audit(0.0:128): avc: denied { write } for path="/dev/blkio/tasks" dev="cgroup" ino=5 scontext=u:r:untrusted_app:s0:c111,c256,c512,c768 tcontext=u:object_r:cgroup:s0 tclass=file permissive=0
[libprocessgroup] AddTidToCgroup failed to write '7367'; fd=42: Permission denied
[libprocessgroup] Failed to add task into cgroup
[libprocessgroup] Failed to apply BlkIOForeground task profile: Permission denied
[libprocessgroup] AddTidToCgroup failed to write '7368'; fd=42: Permission denied
[libprocessgroup] Failed to add task into cgroup
[libprocessgroup] Failed to apply BlkIOForeground task profile: Permission denied
[libprocessgroup] AddTidToCgroup failed to write '7370'; fd=42: Permission denied
[libprocessgroup] Failed to add task into cgroup
[libprocessgroup] Failed to apply BlkIOForeground task profile: Permission denied
[Binder:6935_2] type=1400 audit(0.0:129): avc: denied { write } for path="/dev/blkio/tasks" dev="cgroup" ino=5 scontext=u:r:untrusted_app:s0:c111,c256,c512,c768 tcontext=u:object_r:cgroup:s0 tclass=file permissive=0
[ereokit_androi] hprofopt setDumpFlag: 0
[Perf] Connecting to perf service.
[debug-app-helper] Setting up for DSO lookup in app data directories
[debug-app-helper] Using runtime path: /data/app/com.companyname.stereokit_android-66jQR_3BjtXDV92KcWOG5Q==/lib/arm64
[debug-app-helper] checking directory: `/data/user/0/com.companyname.stereokit_android/files/.__override__/lib`
[debug-app-helper] directory does not exist: `/data/user/0/com.companyname.stereokit_android/files/.__override__/lib`
[debug-app-helper] Checking whether Mono runtime exists at: /data/user/0/com.companyname.stereokit_android/files/.__override__/libmonosgen-2.0.so
[debug-app-helper] Checking whether Mono runtime exists at: /data/app/com.companyname.stereokit_android-66jQR_3BjtXDV92KcWOG5Q==/lib/arm64/libmonosgen-2.0.so
[debug-app-helper] Mono runtime found at: /data/app/com.companyname.stereokit_android-66jQR_3BjtXDV92KcWOG5Q==/lib/arm64/libmonosgen-2.0.so
[ereokit_androi] Attempt to remove non-JNI local reference, dumping thread
[monodroid] Creating public update directory: `/data/user/0/com.companyname.stereokit_android/files/.__override__`
[ereokit_androi] Attempt to remove non-JNI local reference, dumping thread
[monodroid-debug] Trying to initialize the debugger with options: --debugger-agent=transport=dt_socket,loglevel=0,address=127.0.0.1:8865,server=y,embedding=1
[monodroid-gc] GREF GC Threshold: 46080
Loaded assembly: /data/data/com.companyname.stereokit_android/files/.__override__/Mono.Security.dll [External]
[ereokit_androi] Attempt to remove non-JNI local reference, dumping thread
[SysMonitorFwBridge] sISysMonitorFwFactory = android.app.SysMonitorFwFactoryImpl@37e0bbf
[libprocessgroup] AddTidToCgroup failed to write '7400'; fd=42: Permission denied
[ereokit_android] type=1400 audit(0.0:130): avc: denied { write } for path="/dev/blkio/tasks" dev="cgroup" ino=5 scontext=u:r:untrusted_app:s0:c111,c256,c512,c768 tcontext=u:object_r:cgroup:s0 tclass=file permissive=0
[libprocessgroup] Failed to add task into cgroup
[libprocessgroup] Failed to apply BlkIOForeground task profile: Permission denied
Loaded assembly: /data/data/com.companyname.stereokit_android/files/.__override__/netstandard.dll [External]
[ereokit_androi] Accessing hidden method Landroid/view/View;->computeFitSystemWindows(Landroid/graphics/Rect;Landroid/graphics/Rect;)Z (greylist, reflection, allowed)
[ereokit_androi] Accessing hidden method Landroid/view/ViewGroup;->makeOptionalFitsSystemWindows()V (greylist, reflection, allowed)
Thread started: <Thread Pool> #2
Thread started: <Thread Pool> #3
Thread started: <Thread Pool> #4
Thread started: <Thread Pool> #5
Loaded assembly: /data/data/com.companyname.stereokit_android/files/.__override__/System.Numerics.Vectors.dll [External]
[stereo] PackageName:com.companyname.stereokit_android type:null
Loaded assembly: /data/data/com.companyname.stereokit_android/files/.__override__/System.Numerics.dll [External]
[AdrenoGLES-0] QUALCOMM build : 4e19010, I576589ecdb
[AdrenoGLES-0] Build Date : 03/16/22
[AdrenoGLES-0] OpenGL ES Shader Compiler Version: EV031.36.06.01
[AdrenoGLES-0] Local Branch : Promotion602
[AdrenoGLES-0] Remote Branch :
[AdrenoGLES-0] Remote Branch :
[AdrenoGLES-0] Reconstruct Branch :
[AdrenoGLES-0] Build Config : S P 8.0.12 AArch64
[AdrenoGLES-0] Driver Path : /vendor/lib64/egl/libGLESv2_adreno.so
[AdrenoGLES-0] Driver Version : 0607.0
[AdrenoGLES-0] PFP: 0x016dd104, ME: 0x00000000
[System.err] android.content.pm.PackageManager$NameNotFoundException: Application package com.oculus.systemdriver not found
[System.err] at android.app.ContextImpl.createPackageContextAsUser(ContextImpl.java:2199)
[System.err] at android.app.ContextImpl.createPackageContext(ContextImpl.java:2170)
[System.err] at android.content.ContextWrapper.createPackageContext(ContextWrapper.java:876)
[OpenXR-Loader] Error [GENERAL | xrEnumerateInstanceExtensionProperties | OpenXR-Loader] : Failed to load runtime
[OpenXR-Loader] Error [GENERAL | xrEnumerateInstanceExtensionProperties | OpenXR-Loader] : RuntimeInterface::LoadRuntimes - failed to load a runtime
[OpenXR-Loader] Error [GENERAL | xrEnumerateInstanceExtensionProperties | OpenXR-Loader] : Failed to find default runtime with RuntimeInterface::LoadRuntime()
[OpenXR-Loader] Error [GENERAL | xrEnumerateInstanceExtensionProperties | OpenXR-Loader] : Failed querying extension properties
[System.err] android.content.pm.PackageManager$NameNotFoundException: Application package com.oculus.systemdriver not found
[System.err] at android.app.ContextImpl.createPackageContextAsUser(ContextImpl.java:2199)
[System.err] at android.app.ContextImpl.createPackageContext(ContextImpl.java:2170)
[System.err] at android.content.ContextWrapper.createPackageContext(ContextWrapper.java:876)
[OpenXR-Loader] Error [GENERAL | xrCreateInstance | OpenXR-Loader] : Failed to load runtime
[OpenXR-Loader] Error [GENERAL | xrCreateInstance | OpenXR-Loader] : RuntimeInterface::LoadRuntimes - failed to load a runtime
[OpenXR-Loader] Error [GENERAL | xrCreateInstance | OpenXR-Loader] : Failed loading runtime information
[OpenXR-Loader] Error [GENERAL | xrCreateInstance | OpenXR-Loader] : xrCreateInstance failed
[StereoKit] [SK info] Couldn't create OpenXR instance [XR_ERROR_RUNTIME_UNAVAILABLE], is OpenXR installed and set as the active runtime?
[StereoKit] [SK info] MixedReality display mode failed, falling back to Flatscreen
[AAudio] AAudioStreamBuilder_openStream() called ----------------------------------------
[AudioStreamBuilder] rate = 48000, channels = 2, format = 5, sharing = SH, dir = OUTPUT
[AudioStreamBuilder] device = 0, sessionId = -1, perfMode = 12, callback: ON with frames = 480
[AudioStreamBuilder] usage = 0, contentType = 0, inputPreset = 0, allowedCapturePolicy = 0
[com.companyname.stereokit_android] type=1400 audit(0.0:131): avc: denied { write } for comm=54687265616420506F6F6C20576F72 path="/dev/blkio/tasks" dev="cgroup" ino=5 scontext=u:r:untrusted_app:s0:c111,c256,c512,c768 tcontext=u:object_r:cgroup:s0 tclass=file permissive=0
[libprocessgroup] AddTidToCgroup failed to write '7409'; fd=42: Permission denied
[libprocessgroup] Failed to add task into cgroup
[libprocessgroup] Failed to apply BlkIOForeground task profile: Permission denied
[AudioTrack] createTrack_l(0): AUDIO_OUTPUT_FLAG_FAST successful; frameCount 1440 -> 1440
[AudioTrack] createTrack_l(): VCMotorTrack 0
[AudioStreamTrack] open() flags changed from 0x00000104 to 0x00000004
[AAudio] AAudioStreamBuilder_openStream() returns 0 = AAUDIO_OK for s#1 ----------------
[StereoKit] [SK info] Using audio backend: AAudio
[StereoKit] [SK info] Initialization successful
[Surface] queueBuffer: error queuing buffer to SurfaceTexture, -19
[Adreno] QueueBuffer: queueBuffer failed
[Adreno] DequeueBuffer: dequeueBuffer failed
[Adreno] DequeueBuffer: dequeueBuffer failed
[Adreno] DequeueBuffer: dequeueBuffer failed
[Adreno] DequeueBuffer: dequeueBuffer failed
[Adreno] DequeueBuffer: dequeueBuffer failed
[Adreno] DequeueBuffer: dequeueBuffer failed
[Adreno] DequeueBuffer: dequeueBuffer failed
[Adreno] DequeueBuffer: dequeueBuffer failed
[Adreno] DequeueBuffer: dequeueBuffer failed
I then added the <meta-data android:name="pvr.app.type" android:value="vr" /> in the AndroidManifest.xml file and I get this output when running the StereoKit_Android project:
Forwarding debugger port 8866
Detecting existing process
> am start -a "android.intent.action.MAIN" -c "android.intent.category.LAUNCHER" -n "com.companyname.stereokit_android/crc6422cdc46f005356b4.MainActivity"
> Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.companyname.stereokit_android/crc6422cdc46f005356b4.MainActivity }
Loaded assembly: /data/data/com.companyname.stereokit_android/files/.__override__/StereoKit_Android.dll
Loaded assembly: /data/data/com.companyname.stereokit_android/files/.__override__/StereoKit.dll [External]
Loaded assembly: /data/data/com.companyname.stereokit_android/files/.__override__/StereoKitApp.dll
Loaded assembly: /data/data/com.companyname.stereokit_android/files/.__override__/Xamarin.Android.Arch.Core.Common.dll [External]
Loaded assembly: /data/data/com.companyname.stereokit_android/files/.__override__/Xamarin.Android.Arch.Core.Runtime.dll [External]
Loaded assembly: /data/data/com.companyname.stereokit_android/files/.__override__/Xamarin.Android.Arch.Lifecycle.Common.dll [External]
Loaded assembly: /data/data/com.companyname.stereokit_android/files/.__override__/Xamarin.Android.Arch.Lifecycle.LiveData.Core.dll [External]
Loaded assembly: /data/data/com.companyname.stereokit_android/files/.__override__/Xamarin.Android.Arch.Lifecycle.LiveData.dll [External]
Loaded assembly: /data/data/com.companyname.stereokit_android/files/.__override__/Xamarin.Android.Arch.Lifecycle.Runtime.dll [External]
Loaded assembly: /data/data/com.companyname.stereokit_android/files/.__override__/Xamarin.Android.Arch.Lifecycle.ViewModel.dll [External]
Loaded assembly: /data/data/com.companyname.stereokit_android/files/.__override__/Xamarin.Android.Support.Animated.Vector.Drawable.dll [External]
Loaded assembly: /data/data/com.companyname.stereokit_android/files/.__override__/Xamarin.Android.Support.Annotations.dll [External]
Loaded assembly: /data/data/com.companyname.stereokit_android/files/.__override__/Xamarin.Android.Support.AsyncLayoutInflater.dll [External]
Loaded assembly: /data/data/com.companyname.stereokit_android/files/.__override__/Xamarin.Android.Support.Collections.dll [External]
Loaded assembly: /data/data/com.companyname.stereokit_android/files/.__override__/Xamarin.Android.Support.Compat.dll [External]
Loaded assembly: /data/data/com.companyname.stereokit_android/files/.__override__/Xamarin.Android.Support.CoordinaterLayout.dll [External]
Loaded assembly: /data/data/com.companyname.stereokit_android/files/.__override__/Xamarin.Android.Support.Core.UI.dll [External]
Loaded assembly: /data/data/com.companyname.stereokit_android/files/.__override__/Xamarin.Android.Support.Core.Utils.dll [External]
Loaded assembly: /data/data/com.companyname.stereokit_android/files/.__override__/Xamarin.Android.Support.CursorAdapter.dll [External]
Loaded assembly: /data/data/com.companyname.stereokit_android/files/.__override__/Xamarin.Android.Support.CustomTabs.dll [External]
Loaded assembly: /data/data/com.companyname.stereokit_android/files/.__override__/Xamarin.Android.Support.CustomView.dll [External]
Loaded assembly: /data/data/com.companyname.stereokit_android/files/.__override__/Xamarin.Android.Support.Design.dll [External]
Loaded assembly: /data/data/com.companyname.stereokit_android/files/.__override__/Xamarin.Android.Support.DocumentFile.dll [External]
Loaded assembly: /data/data/com.companyname.stereokit_android/files/.__override__/Xamarin.Android.Support.DrawerLayout.dll [External]
Loaded assembly: /data/data/com.companyname.stereokit_android/files/.__override__/Xamarin.Android.Support.Fragment.dll [External]
Loaded assembly: /data/data/com.companyname.stereokit_android/files/.__override__/Xamarin.Android.Support.Interpolator.dll [External]
Loaded assembly: /data/data/com.companyname.stereokit_android/files/.__override__/Xamarin.Android.Support.Loader.dll [External]
Loaded assembly: /data/data/com.companyname.stereokit_android/files/.__override__/Xamarin.Android.Support.LocalBroadcastManager.dll [External]
Loaded assembly: /data/data/com.companyname.stereokit_android/files/.__override__/Xamarin.Android.Support.Print.dll [External]
Loaded assembly: /data/data/com.companyname.stereokit_android/files/.__override__/Xamarin.Android.Support.SlidingPaneLayout.dll [External]
Loaded assembly: /data/data/com.companyname.stereokit_android/files/.__override__/Xamarin.Android.Support.SwipeRefreshLayout.dll [External]
Loaded assembly: /data/data/com.companyname.stereokit_android/files/.__override__/Xamarin.Android.Support.Transition.dll [External]
Loaded assembly: /data/data/com.companyname.stereokit_android/files/.__override__/Xamarin.Android.Support.v7.AppCompat.dll [External]
Loaded assembly: /data/data/com.companyname.stereokit_android/files/.__override__/Xamarin.Android.Support.v7.CardView.dll [External]
Loaded assembly: /data/data/com.companyname.stereokit_android/files/.__override__/Xamarin.Android.Support.v7.RecyclerView.dll [External]
Loaded assembly: /data/data/com.companyname.stereokit_android/files/.__override__/Xamarin.Android.Support.Vector.Drawable.dll [External]
Loaded assembly: /data/data/com.companyname.stereokit_android/files/.__override__/Xamarin.Android.Support.VersionedParcelable.dll [External]
Loaded assembly: /data/data/com.companyname.stereokit_android/files/.__override__/Xamarin.Android.Support.ViewPager.dll [External]
Loaded assembly: /data/data/com.companyname.stereokit_android/files/.__override__/Xamarin.Essentials.dll [External]
[ereokit_androi] Late-enabling -Xcheck:jni
[ereokit_androi] Unknown bits set in runtime_flags: 0x8000
[ereokit_android] type=1400 audit(0.0:217): avc: denied { write } for path="/dev/blkio/tasks" dev="cgroup" ino=5 scontext=u:r:untrusted_app:s0:c111,c256,c512,c768 tcontext=u:object_r:cgroup:s0 tclass=file permissive=0
[Binder:9851_1] type=1400 audit(0.0:219): avc: denied { write } for path="/dev/blkio/tasks" dev="cgroup" ino=5 scontext=u:r:untrusted_app:s0:c111,c256,c512,c768 tcontext=u:object_r:cgroup:s0 tclass=file permissive=0
[libprocessgroup] AddTidToCgroup failed to write '10132'; fd=43: Permission denied
[libprocessgroup] Failed to add task into cgroup
[libprocessgroup] Failed to apply BlkIOForeground task profile: Permission denied
[libprocessgroup] AddTidToCgroup failed to write '10133'; fd=43: Permission denied
[libprocessgroup] Failed to add task into cgroup
[libprocessgroup] Failed to apply BlkIOForeground task profile: Permission denied
[libprocessgroup] AddTidToCgroup failed to write '10135'; fd=43: Permission denied
[libprocessgroup] Failed to add task into cgroup
[libprocessgroup] Failed to apply BlkIOForeground task profile: Permission denied
[LoadedApk] add verifyjar, outZipPaths = [/data/app/com.companyname.stereokit_android-ZpZARXW_SP_3CVm-kxbsuQ==/lib/arm64, /data/app/com.companyname.stereokit_android-ZpZARXW_SP_3CVm-kxbsuQ==/base.apk!/lib/arm64-v8a]
[ereokit_androi] The ClassLoaderContext is a special shared library.
[ereokit_androi] hprofopt setDumpFlag: 0
[Perf] Connecting to perf service.
[debug-app-helper] Setting up for DSO lookup in app data directories
[debug-app-helper] Using runtime path: /data/app/com.companyname.stereokit_android-ZpZARXW_SP_3CVm-kxbsuQ==/lib/arm64
[debug-app-helper] checking directory: `/data/user/0/com.companyname.stereokit_android/files/.__override__/lib`
[debug-app-helper] directory does not exist: `/data/user/0/com.companyname.stereokit_android/files/.__override__/lib`
[debug-app-helper] Checking whether Mono runtime exists at: /data/user/0/com.companyname.stereokit_android/files/.__override__/libmonosgen-2.0.so
[debug-app-helper] Checking whether Mono runtime exists at: /data/app/com.companyname.stereokit_android-ZpZARXW_SP_3CVm-kxbsuQ==/lib/arm64/libmonosgen-2.0.so
[debug-app-helper] Mono runtime found at: /data/app/com.companyname.stereokit_android-ZpZARXW_SP_3CVm-kxbsuQ==/lib/arm64/libmonosgen-2.0.so
[ereokit_androi] Attempt to remove non-JNI local reference, dumping thread
[monodroid] Creating public update directory: `/data/user/0/com.companyname.stereokit_android/files/.__override__`
[ereokit_androi] Attempt to remove non-JNI local reference, dumping thread
[monodroid-debug] Trying to initialize the debugger with options: --debugger-agent=transport=dt_socket,loglevel=0,address=127.0.0.1:8866,server=y,embedding=1
Loaded assembly: /data/data/com.companyname.stereokit_android/files/.__override__/Mono.Android.dll [External]
[monodroid-gc] GREF GC Threshold: 46080
Loaded assembly: /data/data/com.companyname.stereokit_android/files/.__override__/Java.Interop.dll [External]
Loaded assembly: /data/data/com.companyname.stereokit_android/files/.__override__/System.dll [External]
Loaded assembly: /data/data/com.companyname.stereokit_android/files/.__override__/Mono.Security.dll [External]
[ereokit_androi] Attempt to remove non-JNI local reference, dumping thread
[SysMonitorFwBridge] sISysMonitorFwFactory = android.app.SysMonitorFwFactoryImpl@37e0bbf
[libprocessgroup] AddTidToCgroup failed to write '10178'; fd=43: Permission denied
[libprocessgroup] Failed to add task into cgroup
[libprocessgroup] Failed to apply BlkIOForeground task profile: Permission denied
[ereokit_android] type=1400 audit(0.0:257): avc: denied { write } for path="/dev/blkio/tasks" dev="cgroup" ino=5 scontext=u:r:untrusted_app:s0:c111,c256,c512,c768 tcontext=u:object_r:cgroup:s0 tclass=file permissive=0
Loaded assembly: /data/data/com.companyname.stereokit_android/files/.__override__/netstandard.dll [External]
[ereokit_androi] Accessing hidden method Landroid/view/View;->computeFitSystemWindows(Landroid/graphics/Rect;Landroid/graphics/Rect;)Z (greylist, reflection, allowed)
[ereokit_androi] Accessing hidden method Landroid/view/ViewGroup;->makeOptionalFitsSystemWindows()V (greylist, reflection, allowed)
Thread started: <Thread Pool> #2
Thread started: <Thread Pool> #3
Thread started: <Thread Pool> #4
[stereo] PackageName:com.companyname.stereokit_android type:null
Loaded assembly: /data/data/com.companyname.stereokit_android/files/.__override__/System.Numerics.Vectors.dll [External]
Loaded assembly: /data/data/com.companyname.stereokit_android/files/.__override__/System.Numerics.dll [External]
[AdrenoGLES-0] QUALCOMM build : 4e19010, I576589ecdb
[AdrenoGLES-0] Build Date : 03/16/22
[AdrenoGLES-0] OpenGL ES Shader Compiler Version: EV031.36.06.01
[AdrenoGLES-0] Local Branch : Promotion602
[AdrenoGLES-0] Remote Branch :
[AdrenoGLES-0] Remote Branch :
[AdrenoGLES-0] Reconstruct Branch :
[AdrenoGLES-0] Build Config : S P 8.0.12 AArch64
[AdrenoGLES-0] Driver Path : /vendor/lib64/egl/libGLESv2_adreno.so
[AdrenoGLES-0] Driver Version : 0607.0
[AdrenoGLES-0] PFP: 0x016dd104, ME: 0x00000000
[System.err] android.content.pm.PackageManager$NameNotFoundException: Application package com.oculus.systemdriver not found
[System.err] at android.app.ContextImpl.createPackageContextAsUser(ContextImpl.java:2199)
[System.err] at android.app.ContextImpl.createPackageContext(ContextImpl.java:2170)
[System.err] at android.content.ContextWrapper.createPackageContext(ContextWrapper.java:876)
[OpenXR-Loader] Error [GENERAL | xrEnumerateInstanceExtensionProperties | OpenXR-Loader] : Failed to load runtime
[OpenXR-Loader] Error [GENERAL | xrEnumerateInstanceExtensionProperties | OpenXR-Loader] : RuntimeInterface::LoadRuntimes - failed to load a runtime
[OpenXR-Loader] Error [GENERAL | xrEnumerateInstanceExtensionProperties | OpenXR-Loader] : Failed to find default runtime with RuntimeInterface::LoadRuntime()
[OpenXR-Loader] Error [GENERAL | xrEnumerateInstanceExtensionProperties | OpenXR-Loader] : Failed querying extension properties
[System.err] android.content.pm.PackageManager$NameNotFoundException: Application package com.oculus.systemdriver not found
[System.err] at android.app.ContextImpl.createPackageContextAsUser(ContextImpl.java:2199)
[System.err] at android.app.ContextImpl.createPackageContext(ContextImpl.java:2170)
[System.err] at android.content.ContextWrapper.createPackageContext(ContextWrapper.java:876)
[OpenXR-Loader] Error [GENERAL | xrCreateInstance | OpenXR-Loader] : Failed to load runtime
[OpenXR-Loader] Error [GENERAL | xrCreateInstance | OpenXR-Loader] : RuntimeInterface::LoadRuntimes - failed to load a runtime
[OpenXR-Loader] Error [GENERAL | xrCreateInstance | OpenXR-Loader] : Failed loading runtime information
[OpenXR-Loader] Error [GENERAL | xrCreateInstance | OpenXR-Loader] : xrCreateInstance failed
[StereoKit] [SK info] Couldn't create OpenXR instance [XR_ERROR_RUNTIME_UNAVAILABLE], is OpenXR installed and set as the active runtime?
[StereoKit] [SK info] MixedReality display mode failed, falling back to Flatscreen
[AAudio] AAudioStreamBuilder_openStream() called ----------------------------------------
[AudioStreamBuilder] rate = 48000, channels = 2, format = 5, sharing = SH, dir = OUTPUT
[AudioStreamBuilder] device = 0, sessionId = -1, perfMode = 12, callback: ON with frames = 480
[AudioStreamBuilder] usage = 0, contentType = 0, inputPreset = 0, allowedCapturePolicy = 0
[com.companyname.stereokit_android] type=1400 audit(0.0:258): avc: denied { write } for comm=54687265616420506F6F6C20576F72 path="/dev/blkio/tasks" dev="cgroup" ino=5 scontext=u:r:untrusted_app:s0:c111,c256,c512,c768 tcontext=u:object_r:cgroup:s0 tclass=file permissive=0
[libprocessgroup] AddTidToCgroup failed to write '10191'; fd=43: Permission denied
[libprocessgroup] Failed to add task into cgroup
[libprocessgroup] Failed to apply BlkIOForeground task profile: Permission denied
[AudioTrack] createTrack_l(0): AUDIO_OUTPUT_FLAG_FAST successful; frameCount 1440 -> 1440
[AudioTrack] createTrack_l(): VCMotorTrack 0
[AudioStreamTrack] open() flags changed from 0x00000104 to 0x00000004
[AAudio] AAudioStreamBuilder_openStream() returns 0 = AAUDIO_OK for s#1 ----------------
[StereoKit] [SK info] Using audio backend: AAudio
[StereoKit] [SK info] Initialization successful
[ViewRootImpl[MainActivity]] Cancelling event due to no window focus: KeyEvent { action=ACTION_UP, keyCode=KEYCODE_MEDIA_PAUSE, scanCode=0, metaState=0, flags=0x28, repeatCount=0, eventTime=615908, downTime=615908, deviceId=-1, source=0x101, displayId=0 }
[chatty] uid=10111(com.companyname.stereokit_android) identical 2 lines
[ViewRootImpl[MainActivity]] Cancelling event due to no window focus: KeyEvent { action=ACTION_UP, keyCode=KEYCODE_MEDIA_PAUSE, scanCode=0, metaState=0, flags=0x28, repeatCount=0, eventTime=615908, downTime=615908, deviceId=-1, source=0x101, displayId=0 }
About this issue
- Original URL
- State: open
- Created a year ago
- Comments: 15 (9 by maintainers)
I can confirm SK runs on the Pico 4 using the 0.3.7-preview.9 package and in immersive VR. Attached is an example project that also includes the Pico’s recent OpenXR SDK 2.2 loader. The library is linked from the csproj instead of swapping it out in the nuget packages folder as previously suggested.
Ignore the bunch of code in there that’s trying to get passthrough and hand tracking working, it’s not working and I’m yet to figure it out.
StereoKitPico4Demo.zip
Cheers for the info. I added the Pico 4 controller mappings, recompiled the lib and was then able to use the controllers in a SK app.
The hands are a different matter. The hands show in home screen/environment but are not visible within the SK app. I did see that the
XR_EXT_palm_posefeature is in the list of available features, despite being listed for the Pico in the Khronos repository. pico features.txtFor Passthrough, the
StereoKitTest_Mauiapp crashes when enabling the passthrough mode. I have attached the Stacktrace. It looks like something funky is going on when calling into libopenxr_loader.so (which is Pico’s version of the loader). pico passthrough crash stack.txtI’ve started down the path of using the HelloXR example from Pico’s OpenXR SDK compiling so to test their OpenXR implementation. Maybe I can work out if anything special needs to be done to enable hand-tracking and passthrough. I haven’t been able to find any examples from the web that show these using OpenXR, so this may end up being a dead end.
Apart from that, everything else seems to be working in the Test app, so at least these efforts get SK running on the Pico. Are you interesting in having a pull request setup for the controller profiles and the Pico loader lib?
Although adding the Pico lib looks like this would need to consider how the
oculus-openxrbuild config is used. I reckon my approach would be to rename it toandroid-openxrand have both Pico and Oculus loaders copied to be available for the SKLoader target to pick up during the .Net app build.Here’s kinda what you need to do for working with Pico! SK seems to work with it, maybe minus some controller quirks, but Pico currently doesn’t use the correct OpenXR loader, so there’s some stuff you have to do to work around this.
sk-multitemplate from the newer templates I’ve been working on. The previous Universal template can do Pico, but will need some additional AndroidManifest.xml additions for Pico./libs/android.arm64-v81/libopenxr_loader.soin the download therelibopenxr_loader.sofile to StereoKit’s NuGet folder. Go toC:\Users\[username]\.nuget\packages\stereokit\0.3.7-preview.9\android_openxr_loaders, add a folder calledpico(should be lowercase), and copy Pico’slibopenxr_loader.sointo it. You should probably be using preview.9 or newer for this.<SKOpenXRLoader>Oculus</SKOpenXRLoader>to<SKOpenXRLoader>Pico</SKOpenXRLoader>, or add it if it’s not there.I’ll try and make this a bit smoother pretty soon, but feel free to chastise Pico on whatever forums they’ve got for not using the official loader 😃