Getting battery percentage for headset/controllers in Unity over Meta Link (Meta XR SDK)
Hi, I’m working with Unity + Meta XR SDK and using Meta Quest 3 via Meta Link (PC VR / OpenXR runtime). I would like to retrieve the battery percentage of the headset and controllers while running in PC VR mode (Link/Air Link). What I’ve tried: - SystemInfo.batteryLevel returns PC/laptop battery, not headset - OVRPlugin.batteryLevel marked as obsolete, and returns 0 when running via Link - OVRManager.batteryLevel same behavior as OVRPlugin However, the Meta Quest Link desktop and mobile app itself are able to display headset and controller battery information, so the data clearly exists in the system. Is there any supported way in Meta XR SDK / OpenXR / Oculus PC SDK to access: - Headset battery percentage - Controller battery level …while running in PC VR mode (Link/Air Link)? Or is this data intentionally not exposed to third-party applications on the SDK side? Any clarification from Meta or experienced XR developers will be appreciated. Thanks!19Views0likes0CommentsBusiness Verification 'In Review' 10+ days — blocking App Review submission
Hi everyone, I'm building ZynPost (zynpost.co.uk) — an AI-powered social media scheduling platform for small businesses. I submitted my business verification over 10 days ago and it's still showing "In Review" with no updates. Details: Business Portfolio ID: 1514153376737761 Use case selected: "App requires access to permissions on Meta for Developers" App name: ZynPost App status: Published (Live mode) The problem: The pending business verification is blocking me from completing my App Review submission. Specifically, instagram_business_content_publish requires Advanced Access which requires Business Verification to be complete before I can run the required API test call. This means I cannot submit my App Review until verification completes. I have completed everything else: All permission descriptions written All screen recordings uploaded Facebook OAuth working and tested Instagram connected and tested All other API test calls completed I've tried raising a support ticket through the bug reporter but was told individual cases can't be handled there. Is there any way to escalate this or get a manual review? Any help from Meta staff or community members who've resolved this would be greatly appreciated. Thank you20Views0likes0CommentsCan Meta XR SDK build for Windows PC VR, or is it Quest-only?
I've been developing a VR game for Quest Pro/Quest 3 for the past year using Unity 6 (6000.0.40f1) with Meta XR SDK (Core 74.0.1, All-in-One 74.0.2, Interaction SDK 74.0.2, Essentials 74.0.1). Current situation: Standalone Quest APK builds work functionally Performance is poor (~40-50 FPS, pixelated visuals) Unity Editor with Quest Link runs beautifully (80+ FPS, crisp visuals) What I need to know: Can I build a Windows platform executable with Meta XR SDK and run it as a PC VR app via Quest Link? Or is Meta XR SDK strictly for standalone Quest Android builds? What I've done: Optimizing the standalone build with my own code logic and texture compression, and logging disabled (My game has a server logging feature) Limited improvement due to an asset-heavy project Why I'm asking: Since Quest Link (Editor to Quest) performs so well, I'm wondering if I can build a Windows .exe that runs the same way - using my PC's GPU while the Quest acts as a display/input device. Constraints: I need Meta XR SDK specifically for eye tracking (Quest Pro) Not using OpenXR due to reported conflicts with Meta XR SDK Has anyone successfully built Windows PC VR apps using Meta XR SDK? Or is the SDK Android-only, requiring a switch to OpenXR/SteamVR for PC builds? Any guidance or documentation links appreciated! Other questions: Does eye tracking work over Quest Link with Windows builds? Are there specific build settings or plugins needed? Any performance differences vs standalone?Solved61Views0likes4CommentsRecord and replay real hand pose at runtime (Meta Interaction SDK – Unreal)
Hi everyone, I’m currently working with the Meta Interaction SDK in Unreal Engine (UE 5.6) and using hand tracking only (no controllers). I’m using the ISDK Hand Rig Component for both hands. What I’m trying to achieve is: I want to capture the user’s real hand pose at runtime, save that pose, and then reapply (replay) that exact pose later on command. So, basically my requirement is, Is there a built-in way in Meta Interaction SDK to record and replay hand poses ? What’s the best way to temporarily override hand tracking and apply a custom pose? Any guidance, suggestions, or pointers would be really helpful. help in any way you can. Thanks.38Views0likes1CommentIs there a way to make the player not see their own avatar
Hello, I am building a Unity Project with Meta All-In-One SDK and I'm using the Networked Avatar Building Block on top of Matchmaking and Hand Tracking and Passthrough to create an experience where users can see other avatars with their hand movements with Passthrough in the real world , this creates an effect where you can see people walking around, talking and interacting with things in a room that they are not physically in with passthrough. My issue with this is the fact that the player (host) can see other players' Avatar and other players can see the host's avatar but when the host themselves also look down they also see their own avatar arms connected to their hands and body. I do not really want this Is there way for the player to just see their normal hand prefabs/meshes from their perspective while other connected players see the full avatar and vice versa?21Views0likes1CommentMeta XR Standalone Simulator V83.2 crash immediately on running the game in unity
Meta XR Standalone Simulator V83.2 crash immediately on running the game in unity I am using Unity 6.3 LTS , Meta All-In-One SDK v83, using URP and Ghraphics API D3D11 full log from simulator app: [com.meta.xrsim.grpcconnectionfeeder]: Handling connection request with URI: [ :: 1]:56959 [com.meta.xrsim.openxrplatform]: Starting logging for device: [: :1]:56959 [com.meta.xrsim. openxrplatform]: Successfully started logging for device: [ :: 1]:56959 [meta.xrsim. logger_factory]: Started message streaming for device: [ :: 1]:56959 [arvr. simulation.xrsim]: XrSynch received changed state no session, asked to terminate: yes [com.meta.xrsim.openxrplatform]: Device 12281027643599708862 notified about disconnected state. (XrInstance destroyed) Scheduled terminaiton. [arvr. simulation.xrsim]: XrSynch received changed state no session, asked to terminate: yes [com.meta.xrsim.openxrplatform]: Device 12281027643599708862 notified about disconnected state. (XrInstance destroyed) Scheduled terminaiton. [arvr. simulation. openxr.xrsyn]: XrStateReactor :: OnDone: Cancelled on the server side [arvr. simulation. openxr.xrsyn]: Client synchronization was interrupted; client may have disconnected. Cancelled on the server side [meta.xrsim. logger_factory]: Message streaming canceled for device: [ :: 1]:56959 [com.meta.xrsim.openxrplatform]: There are no more active connections. Nothing to show. [com.meta.xrsim.openxrplatform]: Device 12281027643599708862 is terminated in platform. [arvr. simulation. openxr. compositor_readback]: Client disconnected during swapchain enumeration (this happens when no XrSession was created for XrInstance): GOAWAY received [arvr. simulation. openxr. compositor_readback]: Failed to enumerate swapchains. Client may have disconnected. [com.meta.xrsim.openxrplatform]: Device 12281027643599708862 notified about disconnected state. (XrInstance destroyed) Scheduled terminaiton. [com.meta.xrsim.grpcconnectionfeeder]: Handling connection request with URI: [ :: 1]:56966 [com.meta.xrsim. openxrplatform]: Starting logging for device: [: :1]:56966 [com.meta.xrsim. openxrplatform]: Successfully started logging for device: [ :: 1]:56966 [meta.xrsim. logger_factory]: Started message streaming for device: [ :: 1]:56966 [arvr. simulation.xrsim]: XrSynch received changed state XR_SESSION_STATE_IDLE, asked to terminate: no [arvr. simulation. xrsim]: XrSynch received changed state XR_SESSION_STATE_READY, asked to terminate: no [arvr. simulation. openxr. compositor_readback]: Client disconnected during swapchain enumeration (this happens when no XrSession was created for XrInstance): Handle canno [arvr. simulation. openxr. compositor_readback]: Failed to enumerate swapchains. Client may have disconnected. [com.meta.xrsim.openxrplatform]: Device 12282005109436999216 notified about disconnected state. (XrInstance destroyed) Scheduled terminaiton. [meta.xrsim. logger_factory]: Message streaming canceled for device: [ :: 1]:56966 [arvr. simulation.xrsim]: XrSynch received changed state XR_SESSION_STATE_SYNCHRONIZED, asked to terminate: no [arvr. simulation.xrsim]: XrSynch received changed state XR_SESSION_STATE_STOPPING, asked to terminate: no [arvr. simulation.xrsim]: XrSynch received changed state XR_SESSION_STATE_IDLE, asked to terminate: no [arvr. simulation.xrsim]: XrSynch received changed state XR_SESSION_STATE_EXITING, asked to terminate: no [arvr. simulation.xrsim]: XrSynch received changed state no session, asked to terminate: no [arvr. simulation.xrsim]: XrSynch received changed state no session, asked to terminate: yes [com.meta.xrsim.openxrplatform]: Device 12282005109436999216 notified about disconnected state. (XrInstance destroyed) Scheduled terminaiton. [arvr. simulation.xrsim]: XrSynch received changed state no session, asked to terminate: yes [com.meta.xrsim.openxrplatform]: Device 12282005109436999216 notified about disconnected state. (XrInstance destroyed) Scheduled terminaiton. [arvr. simulation. openxr.xrsyn]: XrStateReactor :: OnDone: Cancelled on the server side [com.meta.xrsim. openxrplatform]: There are no more active connections. Nothing to show. [com.meta.xrsim.openxrplatform]: Device 12282005109436999216 is terminated in platform. [arvr. simulation. openxr.xrsyn]: Client synchronization was interrupted; client may have disconnected. Cancelled on the server side [arvr. simulation. openxr. compositor_readback]: Using VulkanBundle for device: Device: 000000000 [arvr. simulation. openxr. compositor_readback]: No swapchain images for eye 0 [arvr. simulation. openxr. compositor_readback]: Failed to enumerate swapchains. Client may have disconnected. [com.meta.xrsim.openxrplatform]: Device 12282005109436999216 notified about disconnected state. (XrInstance destroyed) Scheduled terminaiton. ------------------------------------------------------------------------------------------------------ [sim_rpc_xr_sync .cpp:las [General]] Propagating instance exit. .. [sim_rpc_xr_sync.cpp:116 [General]] Cancelling synchronisation. [sim_rpc_xr_sync.cpp:68 [General]] Frontend is disconnected. XrSession synchronization with ipv6: [: :1]:56961 cancelled. Runtime will continue. [sim_rpc_xr_sync.cpp:55 [General]] XrSession synchronization with ipv6: [ :: 1]:56961 finished [sim_rpc_service.cpp:165 [General]] Stopping SimRpc server ... [sim_xrapi_command_hooks.cpp:71 [General]] Command xrHapticParametricGetPropertiesEXTX1 is not instrumented [sim_xrapi_command_hooks.cpp:71 [General]] Command xrRequestBoundaryVisibilityMETA is not instrumented [sim_xrapi_command_hooks.cpp:71 [General]] Command xrCreateDynamicObjectTrackerMETA is not instrumented [sim_xrapi_command_hooks.cpp:71 [General]] Command xrDestroyDynamicObjectTrackerMETA is not instrumented [sim_xrapi_command_hooks.cpp:71 [General]] Command xrSetDynamicObjectTrackedClassesMETA is not instrumented [sim_xrapi_command_hooks. cpp:71 [General]] Command xrGetSpaceDynamicObjectDataMETA is not instrumented [sim_xrapi_command_hooks.cpp:71 [General]] Command xrCreateMarkerTrackerAsyncMETAX1 is not instrumented [sim_xrapi_command_hooks.cpp:71 [General]] Command xrCreateMarkerTrackerCompleteMETAX1 is not instrumented [sim_xrapi_command_hooks.cpp:71 [General]] Command xrDestroyMarkerTrackerMETAX1 is not instrumented [sim_xrapi_command_hooks.cpp:71 [General]] Command xrGetSpaceMarkerPayloadMETAX1 is not instrumented [sim_xrapilayer_rendering_d3d11_on_vulkan. cpp:58 [General]] DXGI Adapter NVIDIA GeForce RTX 3080 VMem 10053MB SMem OMB SSMem 8154MB [sim_xrapilayer_rendering_d3d11_on_vulkan. cpp:58 [General]] DXGI Adapter NVIDIA GeForce RTX 3080 VMem 10053MB SMem OMB SSMem 8154MB [sim_xrapilayer_rendering_d3d11_on_vulkan. cpp:58 [General]] DXGI Adapter Microsoft Basic Render Driver VMem OMB SMem OMB SSMem 8154MB [sim_xrapilayer_rendering_d3d11_on_vulkan. cpp:78 [General]] (selected) DXGI Adapter NVIDIA GeForce RTX 3080 VMem 10053MB SMem OMB SSMem 8154MB [XRRP [General]] NO BUFFER DEVICE ADDRESS [XRRP [General]] Device does not support timestamp queries. [sim_xrsession. cpp:35 [General]] Creating XrSession (65767) for XrInstance (65721) (GraphicsApi=D3D11) [sim_xrsession. cpp:194 [Validation]] XrSessionImpl :: switchToSessionState(), session 000001CF6693C680: switch session state from XR_SESSION_STATE_UNKNOWN to XR_SESSION_STATE_IDLE [sim_rpc_xr_sync.cpp:82 [General]] Session state updated to 1, propagating to the frontend ... [sim_xrspace.cpp:48 [Validation]] Space (ReferenceSpace) created (000001CF670B0D80): type(XR_REFERENCE_SPACE_TYPE_VIEW), pose({(0.000, 0.000, 0.000, 1.000), (0.000, 0.000, 0.000)}) [sim_configurationregistry.cpp:260 [General]] saved persistent data to "C:\Users\****\AppData\Roaming\MetaXR\MetaXrSimulator\persistent_data. json" [sim_configurationregistry.cpp:260 [General]] saved persistent data to "C:\Users\****\AppData\Roaming\MetaXR\MetaXrSimulator\persistent_data.json" [sim_window_service. cpp:78 [General]] inserted duplicated window id=session_capture [sim_frontend. cpp:76 [General]] Successfully requested connection. [sim_rpc_xr_sync.cpp:82 [General]] Session state updated to 1, propagating to the frontend ... [sim_xrapilayer_telemetry. cpp:76 [General]] hooking the window function [sim_telemetry_service.cpp:322 [General]] session_id = '5dd1629c-1cf4-4cc5-9109-b08d8f52d360' [sim_window_service. cpp:78 [General]] inserted duplicated window id=plugin [sim_xrspace.cpp:48 [Validation]] Space (ReferenceSpace) created (000001CF670B1F60): type(XR_REFERENCE_SPACE_TYPE_LOCAL_FLOOR), pose({(0.000, 0.000, 0.000, 1.000), (0.000, 0.000, 0.000)}) [sim_xrspace.cpp:48 [Validation]] Space (ReferenceSpace) created (000001CF670B08A0): type(XR_REFERENCE_SPACE_TYPE_VIEW), pose({(0.000, 0.000, 0.000, 1.000), (0.000, 0.000, 0.000)}) [sim_xrspace.cpp:48 [Validation]] Space (ReferenceSpace) created (000001CF670B0FF0): type(XR_REFERENCE_SPACE_TYPE_LOCAL), pose({(0.000, 0.000, 0.000, 1.000), (0.000, 0.000, 0.000)}) [sim_xrspace.cpp:48 [Validation]] Space (ReferenceSpace) created (000001CF670B1330): type(XR_REFERENCE_SPACE_TYPE_STAGE), pose({(0.000, 0.000, 0.000, 1.000), (0.000, 0.000, 0.000)}) [sim_xrspace.cpp:48 [Validation]] Space (ReferenceSpace) created (000001CF670B2AC0): type(XR_REFERENCE_SPACE_TYPE_STAGE), pose({(0.000, 0.000, 0.000, 1.000), (0.000, 0.000, 0.000)}) [sim_xrspace.cpp:69 [Validation]] Space (ActionSpace) created (000001CF670B15A0): subactionPath(/user/hand/left), pose({(0.000, 0.000, 0.000, 1.000), (0.000, 0.000, 0.000)}) [sim_xrspace.cpp:69 [Validation]] Space (ActionSpace) created (000001CF670B1670): subactionPath(/user/hand/right), pose({(0.000, 0.000, 0.000, 1.000), (0.000, 0.000, 0.000)}) [sim_xrspace.cpp:48 [Validation]] Space (ReferenceSpace) created (000001CF670B2B90): type(XR_REFERENCE_SPACE_TYPE_LOCAL), pose({(0.000, 0.000, 0.000, 1.000), (0.000, 0.000, 0.000)}) [sim_xrspace.cpp:48 [Validation]] Space (ReferenceSpace) created (000001CF670B2ED0): type(XR_REFERENCE_SPACE_TYPE_VIEW), pose({(0.000, 0.000, 0.000, 1.000), (0.000, 0.000, 0.000)}) [sim_xrspace.cpp:48 [Validation]] Space (ReferenceSpace) created (000001CF670B2100): type(XR_REFERENCE_SPACE_TYPE_STAGE), pose({(0.000, 0.000, 0.000, 1.000), (0.000, 0.000, 0.000)}) [sim_xrapi_command_hooks.cpp:71 [General]] Command xrCreateDynamicObjectTrackerMETA is not instrumented [sim_xrapi_command_hooks.cpp:71 [General]] Command xrDestroyDynamicObjectTrackerMETA is not instrumented [sim_xrapi_command_hooks.cpp:71 [General]] Command xrSetDynamicObjectTrackedClassesMETA is not instrumented [sim_xrapi_command_hooks.cpp:71 [General]] Command xrGetSpaceDynamicObjectDataMETA is not instrumented [sim_xrapi_command_hooks.cpp:71 [General]] Command xrCreateMarkerTrackerAsyncMETAX1 is not instrumented [sim_xrapi_command_hooks.cpp:71 [General]] Command xrCreateMarkerTrackerCompleteMETAX1 is not instrumented [sim_xrapi_command_hooks.cpp:71 [General]] Command xrDestroyMarkerTrackerMETAX1 is not instrumented [sim_xrapi_command_hooks. cpp:71 [General]] Command xrGetSpaceMarkerPayloadMETAX1 is not instrumented [sim_xrspace.cpp:48 [Validation]] Space (ReferenceSpace) created (000001CFB9FECA50): type(XR_REFERENCE_SPACE_TYPE_VIEW), pose({(0.000, 0.000, 0.000, 1.000), (0.000, 0.000, 0.000)}) [sim_xrspace.cpp:48 [Validation]] Space (ReferenceSpace) created (000001CF8FF829A0): type(XR_REFERENCE_SPACE_TYPE_LOCAL_FLOOR), pose({(0.000, 0.000, 0.000, 1.000), (0.000, 0.000, 0.000)}) [sim_xrspace.cpp:48 [Validation]] Space (ReferenceSpace) created (000001CF66831C10): type(XR_REFERENCE_SPACE_TYPE_LOCAL_FLOOR), pose({(0.000, 0.000, 0.000, 1.000), (0.000, 0.000, 0.000)}) [sim_xrsession. cpp:194 [Validation]] XrSessionImpl :: switchToSessionState(), session 000001CF6693C680: switch session state from XR_SESSION_STATE_IDLE to XR_SESSION_STATE_READY [sim_rpc_xr_sync.cpp:82 [General]] Session state updated to 2, propagating to the frontend ... [sim_xrapilayer_debug_window_vulkan_offscreen.cpp:39 [General]] XrApiLayerDebugWindowVulkan: :setSession(): completed [sim_vulkan_helpers. cpp:871 [General]] Failed to open target process, will continue, but chances to success are minimal, error code: 00000005 [sim_session_capturer.cpp:493 [General]] Transitioning from state IDLE to IDLE [sim_vulkan_helpers. cpp:877 [General]] Failed to duplicate handle for target process, error code: 00000057170Views0likes2CommentsPath to Meta Horizon Start Partner
Overview Meta Horizon Start Partners are recognized for their commitment to building high-quality, innovative VR experiences on Meta Horizon. Partner status comes with tailored support from Meta experts, expanded program benefits, and new opportunities to grow your project. Start Partners receive exclusive resources designed to help you maximize impact and succeed in the evolving VR ecosystem. How to Join Start Partner invitations are extended based on periodic reviews of member progress and engagement. You do not need to apply or reach out; the Start team will contact you if you become eligible. We will also announce any changes to the selection process in our community channels. Note for current Start Members: The Start team regularly reviews your progress and contributions. If you become eligible for Partner status, you’ll be notified. We expect to open applications to current Start members in the future, and we’ll update this post (and announce in our community channels) when applications become available. Partner Benefits As a Meta Horizon Start Partner, you receive all core program benefits plus additional perks, including: Access to the Partner community Discord to connect and collaborate with experienced developers and program mentors 1:1 mentoring sessions for personalized support and feedback on your project Educational and social events with advanced content from Meta leads, hands-on workshops, live Q&A, panels, and more Prioritized technical support from a dedicated team Product feedback opportunities to help shape the platform and have your voice heard Qualifications We’re looking for Start members who demonstrate strong content quality, product adoption, and sustained development momentum. When evaluating eligibility for Partner status, we use the following minimum guidelines (which may evolve over time): Have a working build: A playable or internal build that demonstrates core gameplay/app flow and baseline stability (not necessarily final or polished), ready for evaluation Build an engaging experience: Strong session quality, retention drivers, and content depth—meaningful user engagement is an important signal Show sustained development momentum: Regular iteration, shipping updates, and steady progress toward release Use platform tooling to improve quality: Leverage performance tooling and relevant XR tech features; adoption of Meta’s recommended developer tools often correlates with successful, engaged apps We also consider additional factors, such as: Community involvement: Positive, substantive contributions—sharing knowledge, assisting other members, or participating in community events Commitment: Consistent engagement and meaningful progress over time Subject-matter expertise: Demonstrated expertise, especially when shared to help others If you don’t meet these guidelines yet, we encourage you to keep building and participating in the Meta Horizon Start program. Take advantage of educational programming, technical support, and the community forum to strengthen your experience, performance, and retention. We’re excited to see your progress—and hope to welcome you as a Meta Horizon Start Partner in the future. Want to work toward Partner status? Keep a working build ready for evaluation, focus on building an engaging experience, iterate regularly, and use Meta’s recommended developer tooling to improve performance and quality. We also encourage you to share your progress in the What I’m Building section of the Developer Forum. For more information on Start membership, see the Meta Horizon Start program terms.97Views0likes0CommentsHow Can I Turn Off the "Frames Per Second" Overlay on My Quest 3?
Every time I turn on my Quest 3, there is an unwanted "Frames Per Second" overlay that pops up, and stays on my screen no matter what I do; and I really want to turn it off! See the attached picture that I mocked-up as an example of what I keep seeing so you'll understand what I'm dealing with. Please Help if you can! Thank You in Advance!327Views1like4Comments