Your VR games, on the Steam Frame
FramePort puts Quest games, PC VR games, Android apps and Linux apps on the Steam Frame and in your Steam library. Connect the Frame once; then each game is one click.
Free and open source · GPL-3.0 · Wi-Fi or USB cable · Not affiliated with Valve or Meta
com.Oculus.FirstContact → First Contact
See how it works
What happens when you click Install on Frame
Ten stages: seven on your PC, three on the Frame. You only click once.
On your PC
-
scanPoint FramePort at a folder. It finds Quest games, PC VR games, Android apps and Linux apps.
com.Armature.VR4 · APKok -
analyzeChecks what the game is built with, without running it.
Unreal · VrApi · arm64ok -
recipePicks the tested recipe (the patches a game needs), or suggests patches for an untested game.
tested 2026-10-02 · 2 patchesok -
convertOVRPort rewrites the game's Meta VR code for the Frame.
OVRPort · VrApi → OpenXRok -
patchPatches fill in what the Frame lacks, such as passthrough and 360° screens.
OVRPort: remove unreal force quit, setting: Vulkan shader fixok -
signEach game keeps its own key, so updates keep your saves.
own key · VR4ok -
checkProblems that would stop the game are reported before the upload.
v2.3 · arm64-v8aok
On the Frame
-
uploadOver Wi-Fi or a USB cable. A stopped upload continues where it left off.
SSH · resumableok -
libraryThe game shows up in your Steam library with its artwork. Start it like any other game.
"VR4" + artworkok -
testA launch test starts the game and, if it fails, names the likely patch.
passed · FramePort 0.3.4ok
Recipe
OVRPort: remove unreal force quitsetting: Vulkan shader fix
Installs the no-ForceQuit build and fixes two campaign shaders that hung the GPU at cutscenes.
VR4's recipe from the catalog. Untested games get suggested patches.
How PC VR games workHide PC VR▾
PC VR games are Windows VR games. FramePort runs them on the Frame itself or on your PC.
On the Frame▾
-
scanOne folder per game. FramePort finds the program that starts the game and asks when there are several.
-
analyzeReads which VR interface the game uses (OpenXR, OpenVR or Oculus) from its files.
-
uploadThe game goes to the Frame unchanged. Proton, Valve’s layer for Windows games, is installed for you.
-
patchA small OpenXR layer lets the game talk to the Frame’s SteamVR. Unreal games start without their crash reporter.
-
libraryThe game shows up in your Steam library and starts in the headset like any other.
Games that use OpenXR or OpenVR run directly. Oculus-only games run on your PC; the experimental path below runs them on the Frame. PC VR in the docs
On your PC▾
-
install“Install on this PC” adds the game to Steam on your PC, with its artwork.
-
reviveOculus Rift games get Revive automatically: your installed Revive if you have one, else a private copy unpacked from Revive’s own installer. Your install is never replaced.
-
playPlay starts SteamVR. After a session, FramePort picks a refresh rate and motion smoothing that the game keeps up with.
-
streamSteam Link streams the game from your PC to the Frame.
Needs Windows with Steam and SteamVR. Games that check their license through Meta’s app need Meta’s app on the PC too. PC VR in the docs
Quest games in PC VR Experimental · not in the app yet▾
Quest games run on your PC through AXRB (Android XR Bridge) and SteamVR, then stream to the Frame like any PC VR game. FramePort downloads AXRB the first time you use it, like Revive. Some games already start; most don’t show a usable picture yet.
On an experimental branch, not in a release yet. Follow its progress
Rift games on the Frame alone Experimental · not in the app yet▾
Oculus Rift games run on the Frame itself, without a PC: Windows x86 emulation (FEX and Wine) runs the game, Revive and Meta’s own PC runtime, and you sign in with your Meta account. The first Oculus game has run in the headset; it isn’t smooth enough to ship yet.
On an experimental branch, not in a release yet. Follow its progress
Try the app
Click through FramePort before you download it
Try FramePort here
A working copy of the app, in your browser
Simplified, with a pretend Frame. Take the one-minute tour or click around on your own.
Screenshots and videos of the real app ▾
The real app, screenshot by screenshot
Library Your games with their artwork. Search, filter, install several at once.
1 / 10Prefer to watch? The real app on video
See what runs
Tested on a Steam Frame
197 games work, 41 work with issues and 8 don't run. Each tested game gets its recipe (the patches it needs) automatically; for other games FramePort suggests patches.
- 4XVR Video PlayerOtherOpenXRWorks2026-10-01
Native OpenXR GLES video player. 360 theatres/videos (equirect2 layers, which the Frame lacks) are drawn by FrameBridge's equirect_emul; stable_local/focus_hold stop the menu recentring; scale 0.75 keeps the menu screen at 72 fps (the runtime asks for 4536 px per eye). Confirmed in the headset by the owner (2026-10-01). Its "Internal Storage" list is /sdcard/4XPlayer: send videos with the game page's "Add videos". Settings: equirect_emul (GLES worker draws 360 layers into a projection layer), stable_local, focus_hold, scale 0.75; frame.swapchain_limit for its 7680x3840 theatre swapchains. Its hardware decoding mode (Java MediaCodec, Vr4pMediaPlayer; its own FFmpeg is the software path) gets the Frame's video hardware with frame.hw_video_decode (added 2026-10-09, not yet checked in the headset). swapchain_pool shares extra GLES panel images to avoid the runtime swapchain count cap (#387); host-tested only, menu interaction needs a headset check.
Recipe
frame.hw_video_decodeadapter.swapchain_pooladapter.equirect_emuladapter.stable_localadapter.focus_holdadapter.scaletested with version 2.0.22 · 2026-10-01
- Accounting+UnityVrApiWorks2026-10-06
Plays normally, including the "press any button" screen after choosing to sit or stand. Unity 2017.4 built-in Oculus support. frame.unity_oculus_check gets VR started (Meta's system-app check and the frame wait its legacy loop never makes, libfp_ovrp.so), ~72 fps. The motion warning after the stance selection waits for a mouse click (Input.GetMouseButtonDown), which a Quest delivers for the controller press and Lepton never does; the same library now counts a newly pressed trigger or A/B/X/Y as that click.
Recipe
frame.unity_oculus_checktested with version 1.24.35 · 2026-10-06
- AgeOfJoyUnityOpenXRWorks2026-10-08
Runs with the default patches; nothing special needed.
Recipe
frame.unity_text_inputframe.oculusosdevice.text_input_windowadapter.haptic_fixtested with version 1.0 · checked with FramePort 0.12.0 · 2026-10-08
- AllInOneSportsUnityOpenXRWorks2026-10-04
Runs with the default patches; nothing special needed.
Recipe
frame.unity_text_inputframe.oculusosdevice.text_input_windowtested with version 1.9.0 · checked with FramePort 0.6.3 · 2026-10-04
- ArkioUnityOpenXRWorks2026-10-13
The quest version allows for passthrough mode
Recipe
frame.meta_permissionsframe.unity_text_inputdevice.text_input_windowoverport.patch_force_passthroughadapter.scene_emultested with version 2.3.1 · checked with FramePort 1.1.0 · 2026-10-13
- Asgard's Wrath 2UnrealOpenXRWorks2026-09-28
Very large data set (~31 GiB). Built with disable_space_warp. Reported working on Pico 4 with overport runtime 3.0.x. 83 OBB/pakchunk files (~32 GB): besides main and patch.0, 81 patch.pakchunk<N>-Android_ASTC.com.Sanzaru.Wrath2.obb files (~27 GB). Without them the game hangs at engine start-up (GitHub #471); up to FramePort 1.3.0 they are only sent from a com.Sanzaru.Wrath2 folder next to the APK, not loose next to it.
Recipe
overport.patch_remove_unreal_force_quitoverport.patch_disable_space_warptested with version 12.1.1689309 · 2026-09-28
- Assassin's Creed NexusUnityOpenXRWorks2026-09-28
FrameBridge turns its upside-down UI panels upright (flip emulation, in place since FramePort 1.2.0). Ubisoft login may not work. frame.unity_text_input added from detection (not headset-verified); no device.text_input_window: its Android window took the controllers' input (owner, 2026-10-23). Runs as a Quest 3 with the Vulkan panel pool (swapchain_pool): as a Quest 3 it switches to larger eye images after the intro, which the Frame's swapchain limit refused before the pool (GitHub #424; checked headless 2026-10-23, FramePort 1.4.0). Ubisoft online login may not work. Data folder holds raw assets (start0..2, .climb, bundles), not .obb files; install to obb as-is.
Recipe
frame.unity_text_inputoverport.patch_ac_nexus_no_appsw_90adapter.swapchain_pooltested with version MAIN.450412.207706.final · 2026-09-28
- Astro VR HostOtherOpenXRWorks2026-10-22
Runs your own Astro Bot Rescue Mission files (the unpacked CUSA12392 folder, not the .pkg). With the Files tab, copy the folder to Android/data/com.astrobotquest.vrhost/files/games/ in the game's storage and add Android/data/com.astrobotquest.vrhost/files/vrhost.txt with the lines language=<your language, e.g. en-US> and refresh_rate=80. Set FoV to 100% in the game. Tested with AstroQuest v0.23 (https://github.com/bigmak94/AstroQuest). The port caps the resolution at 1440 px per eye; vrhost.txt can't change that. Other vrhost.txt options: https://github.com/bigmak94/AstroQuest/blob/main/README-QUEST-VR.md#installing-and-running
Recipe
adapter.refresh_ratetested with version 0.23 · checked with FramePort 1.3.0 · 2026-10-22
- Attack on Titan VR: UnbreakableUnityOpenXRWorks2026-10-16
Keep the extra files that come with the APK and OBB next to the OBB (they hold the audio). Cutscenes are detached from the head but still viewable.
Recipe
frame.unity_text_inputframe.asset_filesdevice.text_input_windowadapter.haptic_fixtested with version 1.0.2950 · checked with FramePort 1.2.0 · 2026-10-16
- AudicaUnityVrApiWorks2026-10-09
Runs with the default patches; nothing special needed.
Recipe
frame.unity_no_msaaframe.unity_oculus_checkframe.unity_text_inputframe.unity_runtime_msaa_offframe.unity_gl_shimdevice.text_input_windowadapter.haptic_fixtested with version 1.0.3.4 · checked with FramePort 0.12.0 · 2026-10-09
- AugmentedEmpireUnityOpenXRWorks2026-10-15
Runs with the default patches; nothing special needed.
Recipe
frame.unity_text_inputframe.hw_video_decodedevice.text_input_windowadapter.haptic_fixadapter.scene_emultested with version 1.1 · checked with FramePort 1.1.1 · 2026-10-15
- BAMUnityOpenXRWorks2026-09-28
Passthrough emulated with the Frame cameras (greyscale). frame.unity_text_input and device.text_input_window added from detection (not headset-verified). Mixed-reality-only title; relies on passthrough (emulated).
Recipe
frame.unity_text_inputdevice.text_input_windowoverport.patch_force_passthroughtested with version 1.2 · 2026-09-28
- BarbariaUnityOpenXRWorks2026-10-18
Runs with the default patches; nothing special needed.
Recipe
frame.unity_text_inputdevice.text_input_windowadapter.haptic_fixadapter.scaletested with version 1.10.1.22383.158.OBERON.Quest.release · checked with FramePort 1.2.1 · 2026-10-18
- BARTENDER VR SIMULATORUnrealOpenXRWorks2026-09-28
Native Pico build exists (not relevant for Frame).
Recipe
overport.patch_remove_unreal_force_quittested with version 1.9.2.7 · 2026-09-28
- Batman: Arkham ShadowUnityOpenXRWorks2026-09-28
Large data set (~27 GiB) incl. all language packs. frame.unity_text_input and device.text_input_window added from detection (not headset-verified). Uses Meta XR Audio (Wwise), handled by patch_meta_xr_audio. Cutscenes are 8K HEVC panoramas: frame.hw_video_decode decodes them on the Frame's hardware, adapter.surface_native shows them in stereo (PRs #96, #128). Includes all language packs (~28 GB). sync_guard (to test, GitHub #102) - a reporter's game quit to Steam's waiting screen after the Frame runtime crashed in xrSyncActions (CVRInputLatest::UpdateActionState), the input race Myst had.
Recipe
frame.hw_video_decodeframe.unity_text_inputdevice.text_input_windowoverport.patch_disable_space_warpadapter.fixed_resolutionadapter.sync_guardadapter.surface_nativeadapter.fade_quadtested with version 1.4.1-350961 · 2026-09-28
- BattleGlideUnrealOpenXRWorks2026-10-04
Freezes from the headset's brief focus losses are hidden (focus_hold). The Frame drops the session out of focus for ~0.5 s every few seconds (11 times in 80 s of play) and Unreal pauses each time; focus_hold hides dips up to 1 s once the game has been focused for 1 s. Longer dips (real interruptions) still pause it.
Recipe
adapter.focus_holdtested with version 0.4.1 (BETA) · 2026-10-04
- BattlemarkedUnityOpenXRWorks2026-10-15
Runs with the default patches; nothing special needed.
Recipe
frame.unity_text_inputframe.hw_video_decodedevice.text_input_windowadapter.haptic_fixadapter.pose_time_fixadapter.scene_emultested with version 7.2.39817-release · checked with FramePort 1.1.1 · 2026-10-15
- BattleSistersUnityVrApiWorks2026-10-08
Plays; controller buttons and vibration work, hands follow the controllers (pose_time_fix). Unity 2019.4 with Unity's built-in Oculus support. frame.unity_oculus_check starts VR (Meta's system-app check), adds the frame wait its legacy loop never makes (without it the GPU hung, black screen) and lets Unity's Oculus input accept Lepton's device model (it only reported controllers on a device named "Oculus ...", so buttons were dead). haptic_fix stops the first controller vibration from freezing the Frame (OVRPort's loader read its duration in nanoseconds as seconds and the game ran out of memory). With pose_time_fix the hands follow the controllers - OVRPlugin asked for hand poses at Android's monotonic "now", which on SteamOS 0.4.5 is 2.56 s behind the runtime's XrTime, so the hands lagged far behind.
Recipe
frame.unity_no_msaaframe.unity_oculus_checkframe.unity_text_inputframe.unity_runtime_msaa_offframe.unity_gl_shimadapter.haptic_fixadapter.pose_time_fixtested with version 1.2.4 · 2026-10-08
- Beat Saber
com.beatgames.beatsaber.lj369vrUnityOpenXRWorks2026-10-06Purchased DLC isn't detected (ownership comes from Meta's servers).
Recipe
frame.unity_text_inputframe.unity_runtime_msaa_offframe.unity_gl_shimdevice.text_input_windowtested with version 1.40.8_7379 · checked with FramePort 0.11.0 · 2026-10-06
- Beat Saber
com.beatgames.beatsaberUnityOpenXRWorks2026-10-11Purchased DLC isn't detected (ownership comes from Meta's servers).
Recipe
frame.unity_text_inputdevice.text_input_windowadapter.haptic_fixadapter.pose_time_fixtested with version 1.45.2_28848 · checked with FramePort 1.0.4 · 2026-10-11
- Beat SaberPC VRUnityOpenXRWorks2026-10-09
Supports SteamVR/OpenXR itself: runs directly, without Revive.
Recipe
pcvr.xr_timefixpcvr.steamvr_tuningchecked with FramePort 0.12.1.dev232 · 2026-10-09
- Beat Saber (co-existence build)UnityOpenXRWorks2026-10-05
A Beat Saber build with its own package name, so a modded and an unmodded Beat Saber can be installed side by side. The submitted build's app label was very long and the game didn't appear in the Frame's Steam library (GitHub issue 27, a shortcut Steam dropped again; fixed in 0.7.0); the recipe's title names it.
Recipe
frame.unity_text_inputdevice.text_input_windowtested with version 1.45.1_27839 · checked with FramePort 0.6.3 · 2026-10-05
- Black Hole PoolUnityOpenXRWorks2026-10-17
Runs with the default patches; nothing special needed.
Recipe
frame.vivox_audio_routeframe.unity_text_inputdevice.text_input_windowadapter.haptic_fixtested with version 5.3.2 · checked with FramePort 1.2.1 · 2026-10-17
- Blade & Sorcery: NomadUnityOpenXRWorks2026-10-04
The headset's brief focus losses are hidden (focus_hold, up to 2.5 s). The Frame's runtime drops focus now and then (mostly 1.5-7 s, some only milliseconds); the game pauses ("System menu opened", the world freezes) and re-aligns the player when focus returns (Player.OnVRPresence -> Teleport, the sideways jump). They match the headset's wear sensor flickering off while worn (SteamVR "HMD off" 0.5-2 s), which only this game reacts to; focus_hold hides dips up to 2.5 s here. Rendering keeps 72 fps throughout.
Recipe
frame.unity_text_inputdevice.text_input_windowadapter.focus_holdadapter.focus_hold_mstested with version 1.3.1 · 2026-10-04
- BlazeRushOtherVrApiWorks2026-10-11
From Klownicle's guide (GitHub issue 57); FramePort's version verified in a Steam Frame headset (2026-10-11). Menus and racing controls, car bodies and controllers, particle effects, the full field of view and a sharp, correctly placed picture. Seven fixes from the guide. frame.blazerush (this exact build only) skips the menus' wait for a Meta avatar, which never comes on the Frame, so the game creates its own controllers, and gives its shader cache a new folder (cache/br_shader_v1) so programs compiled before the shader fixes aren't reused. The GL shim feeds integer vertex inputs (bone indices) as integers (gl_int_attribs: car bodies and controllers were invisible) and computes the particle vertex shaders in highp (gl_highp_markers: streaks and flashes). The game reads the field of view once at start, before tracking: the VrApi bridge answers with the FOV of the previous session (FramePort's launch test after the install is one), not 90x90 degrees. scale 1.7 keeps the wider view sharp (about 2.9x the pixels). device.config_sync keeps the resolution saved in user_config.xml at the eye-buffer size, else the picture is displaced with black borders after a scale change.
Recipe
frame.vrapi_bridgeframe.avatar_stubframe.gl_shimframe.blazerushadapter.scaleadapter.gl_int_attribsadapter.gl_highp_markersadapter.gl_hide_multiviewadapter.gl_hide_msrtttested with version 1.0.349 · 2026-10-11
- BodyCombatUnityOpenXRWorks2026-10-05
Runs with the default patches; nothing special needed.
Recipe
frame.unity_text_inputdevice.text_input_windowtested with version 3.0.0 · checked with FramePort 0.9.1 · 2026-10-05
- BONELABUnityOpenXRWorks2026-10-08
Builds 1.2068 and 1.2974 play (owner's headset tests). One recipe serves both builds - 1.2068 needs frame.unity_user_presence (head tracking and controls); 1.2974 also needs frame.slz_vulkan_hooks (72 fps after about 35 s of shader prewarming), which changes nothing on 1.2068. Both builds - the game runs (72 fps), but its player body stayed frozen - no head tracking, the controllers stuck to the model, no buttons - although OpenXR input and OVRPlugin's poses were fine. A few seconds after start (when Unity switches XR loaders) OVRPlugin reports the worn headset as not worn (ovrp_GetUserPresent2 -> 0), and BONELAB's Marrow rig only follows the player while Unity's HMD device reports UserPresence (OpenControllerRig checks XRHMD.IsUserPresent every frame). frame.unity_user_presence reports the headset as worn. Build 1.2974 only - it adds Stress Level Zero's graphics plugin (libSLZQuestNative.so), which hooks Unity's Vulkan start-up (vkCreateInstance/ vkCreateDevice) and vkCreateSampler; on the Frame its vkCreateInstance wrapper calls an invalid pointer right after OVRPlugin's pre-init instance is destroyed (a jump to 0, into an unloaded library, or a hang). frame.slz_vulkan_hooks switches its two registrations off, so Unity starts Vulkan itself; the plugin's pipeline cache isn't used.
Recipe
frame.unity_user_presenceframe.slz_vulkan_hookstested with version 1.2974.57485 · 2026-10-08
- Breathedge VRUnrealVrApiWorks2026-10-16
Loading fade is broken and only shows a small square but the game works!
Recipe
frame.hw_video_decodeoverport.patch_remove_unreal_force_quitadapter.haptic_fixtested with version 1.0.7 · checked with FramePort 1.2.0 · 2026-10-16
- Carve SnowboardingUnrealVrApiWorks2026-09-28
Legacy VrApi via OVRPlugin.
Recipe
overport.patch_remove_unreal_force_quittested with version 1.09 · 2026-09-28
- CavesUnityOpenXRWorks2026-10-10
First cave loads up perfectly, didn't play to unlock other game modes
Recipe
frame.oculusosadapter.haptic_fixtested with version 1.1.4 · checked with FramePort 0.12.0 · 2026-10-10
- Cities: VRUnityOpenXRWorks2026-10-16
Loading screen Cities VR Logo doesn't load right.
Recipe
frame.unity_text_inputdevice.text_input_windowadapter.haptic_fixtested with version 1.00.502 · checked with FramePort 1.2.0 · 2026-10-16
- COMPOUNDUnityOpenXRWorks2026-10-13
Runs with the default patches; nothing special needed.
Recipe
frame.unity_text_inputframe.unity_runtime_msaa_offframe.unity_gl_shimdevice.text_input_windowadapter.haptic_fixtested with version 1.0.12 · checked with FramePort 1.1.0 · 2026-10-13
- Cook-OutUnityOpenXRWorks2026-10-03
Runs with the default patches; nothing special needed.
Recipe
frame.unity_text_inputdevice.text_input_windowtested with version 1.20.0.10625-release · checked with FramePort 0.6.1 · 2026-10-03
- CosmodreadUnityVrApiWorks2026-10-11
First run wouldn't allow you to interact with the "New Game" button. Restarting it fixed it.
Recipe
frame.unity_oculus_checkframe.unity_text_inputframe.unity_runtime_msaa_offframe.unity_gl_shimdevice.text_input_windowadapter.haptic_fixtested with version 1.0.0.28 · checked with FramePort 0.12.0 · 2026-10-11
- CrazyTaxiVROtherOpenXRWorks2026-10-17
Runs with the default patches; nothing special needed.
Recipe
adapter.scaletested with version CrazyTaxiVR-42 · checked with FramePort 1.2.0 · 2026-10-17
- CreedUnrealOpenXRWorks2026-10-05
Runs with the default patches; nothing special needed.
Recipe
overport.patch_remove_unreal_force_quittested with version CRU-386950 · checked with FramePort 0.10.0 · 2026-10-05
- Crisis Brigade 2 reloadedUnityOpenXRWorks2026-10-25
Its office.*.obb expansion files are installed under the game's own package spelling from FramePort 1.4.0 on (GitHub #415); older versions left the levels unloaded.
Recipe
frame.bhaptics_permissionframe.photon_voice_audio_routeframe.unity_text_inputdevice.text_input_windowadapter.haptic_fixtested with version 2.22 · checked with FramePort 1.3.1.dev703 · 2026-10-25
- Crisis Zone VROtherOpenXRWorks2026-10-15
Played the beginning of the first mission without issues.
Recipe
frame.sdl_clipboardtested with version 0.1.4 · checked with FramePort 1.2.1.dev433 · 2026-10-15
- cubism
com.mrf.tvb.cubismUnityOpenXRWorks2026-10-17works and passthrough play works also
Recipe
frame.unity_text_inputdevice.text_input_windowadapter.haptic_fixadapter.scene_emultested with version 1.8.0 · checked with FramePort 1.2.0 · 2026-10-17
- cubism
com.tvb.cubismUnityOpenXRWorks2026-10-09Runs with the default patches; nothing special needed.
Recipe
frame.unity_text_inputdevice.text_input_windowadapter.haptic_fixadapter.scaletested with version 1.8.0 · checked with FramePort 0.12.0 · 2026-10-09
- Dance CentralUnrealVrApiWorks2026-10-12
Runs with the default patches; nothing special needed.
Recipe
frame.unreal_skip_obb_checkframe.hw_video_decodeoverport.patch_remove_unreal_force_quitadapter.haptic_fixadapter.pose_time_fixtested with version 1.2.2 · checked with FramePort 1.0.4 · 2026-10-12
- DarkswordUnrealOpenXRWorks2026-10-18
Runs with the default patches; nothing special needed.
Recipe
frame.unreal_skip_obb_checkframe.bhaptics_permissionframe.unreal_ovrp_entrypointsframe.hw_video_decodeoverport.patch_remove_unreal_force_quitadapter.haptic_fixadapter.scaletested with version 1.6.2.11 · checked with FramePort 1.2.1 · 2026-10-18
- Deep CutsUnityOpenXRWorks2026-10-10
Runs with the default patches; nothing special needed.
Recipe
frame.unity_text_inputframe.oculusosdevice.text_input_windowadapter.haptic_fixtested with version 1.1.3271 · checked with FramePort 0.12.0 · 2026-10-10
- DeisimUnityOpenXRWorks2026-10-21
Runs with the default patches; nothing special needed.
Recipe
frame.bhaptics_permissionframe.photon_voice_audio_routeframe.unity_text_inputdevice.text_input_windowadapter.haptic_fixtested with version 1.58.543 · checked with FramePort 1.3.0 · 2026-10-21
- DemeoUnityOpenXRWorks2026-10-15
Runs with the default patches; nothing special needed.
Recipe
frame.unity_text_inputdevice.text_input_windowadapter.haptic_fixadapter.scene_emultested with version 1.42.40696-release · checked with FramePort 1.1.1 · 2026-10-15
- DemeterUnityOpenXRWorks2026-09-28
Passthrough + Meta scene/room emulated from the Steam guardian (scene_emul=1). frame.unity_text_input and device.text_input_window added from detection (not headset-verified). Mixed-reality-only; builds its level from the room model, which the adapter emulates from the Steam guardian.
Recipe
frame.meta_permissionsframe.unity_text_inputdevice.text_input_windowoverport.patch_force_passthroughadapter.scene_emuladapter.scene_hide_boundstested with version 1.1.0 · 2026-09-28
- Dinosaur IslandUnityVrApiWorks2026-10-03
Runs with the default patches; nothing special needed.
Recipe
frame.unity_text_inputdevice.text_input_windowtested with version 1.7.5 · checked with FramePort 0.6.2 · 2026-10-03
- Doom3QuestOtherOpenXRWorks2026-10-06
HUD and PDA show with frame.gl_multiview_fbo (Xandrix1987's headset test, GitHub 77, no frame-rate drop with the PDA open). Walking and running can switch when the frame rate drops, which seems to be the game's own behaviour. Doom3Quest compiles every vertex shader for two views (OVR_multiview) and draws its HUD/PDA into single-view framebuffers. Mesa (the Frame's GL) rejects that combination as the spec requires and drops the draw, so they stayed black; frame.gl_multiview_fbo draws those passes with a single-view copy of the shader. Xandrix1987's framebuffer.cpp fix went upstream as a PR to Team-Beef-Studios/Doom3Quest.
Recipe
frame.gl_multiview_fbotested with version 1.4.8 · checked with FramePort 0.12.0 · 2026-10-06
- Down the Rabbit HoleUnityOpenXRWorks2026-10-10
Runs with the default patches; nothing special needed.
Recipe
frame.unity_text_inputframe.unity_runtime_msaa_offframe.unity_gl_shimdevice.text_input_windowadapter.haptic_fixtested with version 01.04.434 · checked with FramePort 0.12.0 · 2026-10-10
- Drums RockUnityOpenXRWorks2026-10-18
Let's Rock!
Recipe
frame.unity_text_inputframe.oculusosdevice.text_input_windowadapter.haptic_fixadapter.scaletested with version 1.401 · checked with FramePort 1.2.1 · 2026-10-18
- Drunkn Bar FightUnityOpenXRWorks2026-10-11
Works
Recipe
frame.unity_text_inputframe.unity_runtime_msaa_offframe.unity_gl_shimdevice.text_input_windowadapter.haptic_fixtested with version 11.00 · checked with FramePort 1.0.4 · 2026-10-11
- Drunkn Bar Fight 2 - Early AccessUnityOpenXRWorks2026-10-11
Game launches and plays fine
Recipe
frame.unity_text_inputdevice.text_input_windowtested with version 0.515 · checked with FramePort 1.0.4 · 2026-10-11
- Eleven Table TennisUnityOpenXRWorks2026-10-13
Works great for me, tried the tutorial and an online match. Quest 2 apk.
Recipe
adapter.haptic_fixtested with version 0.436.37_2026.9.4.18.35.33.415 · checked with FramePort 1.1.0 · 2026-10-13
- Eleven: Table Tennis VRPC VRUnityLibOVR+OpenVRWorks2026-10-09
Supports SteamVR/OpenXR itself: runs directly, without Revive (arguments -vrmode OpenVR).
Recipe
pcvr.launch_argspcvr.xr_timefixpcvr.steamvr_tuningchecked with FramePort 0.12.1.dev232 · 2026-10-09
- EndoparasiticVROtherOpenXRWorks2026-10-17
Runs with the default patches; nothing special needed.
Recipe
frame.godot_clipboardadapter.equirect_emultested with version 1.3 · checked with FramePort 1.2.0 · 2026-10-17
- Epic Roller CoastersUnityOpenXRWorks2026-10-21
You may need to restart the game for the camera to be placed in front of the menu.
Recipe
frame.bhaptics_permissionframe.vivox_audio_routeframe.unity_text_inputdevice.text_input_windowoverport.patch_disable_space_warpadapter.haptic_fixtested with version 8.36.04 · checked with FramePort 1.3.0 · 2026-10-21
- Espire 2UnrealOpenXRWorks2026-09-28
Launcher repairs unwritable save folders (fixes the setup loop).
Recipe
overport.patch_remove_unreal_force_quittested with version 1.7.13 · 2026-09-28
- Eye of the TempleUnityVrApiWorks2026-10-15
Runs with the default patches; nothing special needed.
Recipe
frame.unity_no_msaaframe.unity_oculus_checkframe.unity_text_inputframe.unity_runtime_msaa_offframe.hw_video_decodeframe.unity_gl_shimdevice.text_input_windowadapter.haptic_fixtested with version 1.528 · checked with FramePort 1.1.1 · 2026-10-15
- First ContactUnrealVrApiWorks2026-10-25
32-bit only, runs through FramePort's 32-bit bridge (experimental). Played in the headset (GitHub #489); the headless launch test ends early, which is expected for the bridge.
Recipe
frame.a32_bridgetested with version 1.12 · checked with FramePort 1.3.0 · 2026-10-25
- FrenzyVRUnityOpenXRWorks2026-10-11
Works, runs good
Recipe
frame.unity_text_inputdevice.text_input_windowtested with version 107 · checked with FramePort 1.0.4 · 2026-10-11
- Fruit NinjaUnityOpenXRWorks2026-10-11
Works, launches and plays
Recipe
frame.unity_text_inputframe.unity_runtime_msaa_offframe.hw_video_decodeframe.unity_gl_shimdevice.text_input_windowadapter.haptic_fixtested with version 1.7.3.696775 · checked with FramePort 1.0.4 · 2026-10-11
- Fruit SalonUnityOpenXRWorks2026-10-10
Runs with the default patches; nothing special needed.
Recipe
frame.unity_text_inputdevice.text_input_windowadapter.haptic_fixtested with version 1.0.2 · checked with FramePort 0.12.0 · 2026-10-10
- GenotypeUnityOpenXRWorks2026-09-28
Needed the GLES/sRGB swapchain fallback. frame.unity_text_input and device.text_input_window added from detection (not headset-verified). Also available as a native PC SteamVR title.
Recipe
frame.unity_text_inputdevice.text_input_windowtested with version 1.8 · 2026-09-28
- Ghost TownUnityOpenXRWorks2026-10-14
Runs with the default patches; nothing special needed.
Recipe
frame.unity_text_inputframe.hw_video_decodedevice.text_input_windowadapter.haptic_fixtested with version 1.01 · checked with FramePort 1.1.1 · 2026-10-14
- Ghostbusters: Rise of the Ghost LordUnrealOpenXRWorks2026-10-14
Needs the game's offline mode: it is built for online play, and without a profile the player name is a random number. The flat loading screen floats in front of you instead of following your head, so assets can be seen loading in behind it.
Recipe
frame.unreal_ovrp_entrypointsframe.hw_video_decodeoverport.patch_remove_unreal_force_quitadapter.haptic_fixadapter.scene_emultested with version 1.325635.prod.shipping · checked with FramePort 1.1.0 · 2026-10-14
- GORN2UnityOpenXRWorks2026-10-07
Runs with the default patches; nothing special needed.
Recipe
frame.unity_text_inputdevice.text_input_windowadapter.haptic_fixtested with version 1.10.1 · checked with FramePort 0.12.0 · 2026-10-07
- Gravity LabUnityOpenXRWorks2026-10-09
Works great, along with passthrough mode
Recipe
frame.unity_text_inputframe.unity_runtime_msaa_offframe.unity_gl_shimdevice.text_input_windowadapter.haptic_fixtested with version 1.221 · checked with FramePort 0.12.0 · 2026-10-09
- GunjackUnrealVrApiWorks2026-10-12
Gear VR game (32-bit only), runs through FramePort's 32-bit bridge (experimental). Controls (right controller): trigger = fire (hold the touchpad), A = tap, stick down = reload (swipe back), stick up = special weapon (swipe forward), B = back. Unreal Engine 4.10 NativeActivity, VrApi, GLES, OBB inside the APK (assets/main.obb.png). The bridge answers the game's APK signature check with the original APK's certificate and keeps the GLES session when Unreal leaves and re-enters VR after loading. Controller input goes into the game's AInputQueue as Gear VR touchpad events. Runs in the headset (owner, 2026-10-12).
Recipe
frame.a32_bridgetested with version 1.4.1 · 2026-10-12
- H.U.N.TUnityOpenXRWorks2026-09-28
frame.unity_text_input and device.text_input_window added from detection (not headset-verified).
Recipe
frame.unity_text_inputdevice.text_input_windowtested with version 0.1.2 · 2026-09-28
- HitstreamUnityOpenXRWorks2026-10-12
Fitness rhythm game; uses controller models and haptics fix.
Recipe
frame.unity_text_inputadapter.controller_modelsadapter.haptic_fixtested with version 2.06bQuest · 2026-10-12
- Hungry Shark EvolutionUnity?Works2026-10-25
Phone game (2D). Tested with 14.6.0 installed from an .xapk bundle; cloud sync and Google services don't work.
Recipe
frame.unity_text_inputframe.hw_video_decodetested with version 14.6.0 · checked with FramePort 1.3.1.dev675 · 2026-10-25
- I Am CatUnityOpenXRWorks2026-10-05
Steady view with pose_consistency (the judder is gone). Unity 2022.3 with the Oculus XR Plugin falls back to GLES (Zink) on the Frame, where its single-pass (multiview) rendering drew the right eye wrong (GitHub issue 8); frame.unity_multipass renders each eye in its own pass (OculusSettings.GetStereoRenderingMode + its inlined read in OculusLoader.Initialize). Poses and frame times are consistent, but every frame reaches the runtime one display period late (two passes on Zink) and the game clamps its physics step to 10 ms. The judder came from the game locating its views about three times per frame and getting slightly different poses each time; FrameBridge pose_consistency returns the same views for repeated queries of one display time (proposed in GitHub issue 8). The grey right eye on the loading screen is still open.
Recipe
frame.unity_text_inputframe.unity_multipassdevice.text_input_windowadapter.pose_consistencytested with version 1.4.0.0 · 2026-10-05
- I Am MonkeyUnityOpenXRWorks2026-10-04
Its intro video plays through FrameBridge's video panels. The game plays its intro on a panel that an Android media player (ExoPlayer) draws into (XR_KHR_android_surface_swapchain). The Frame's runtime lists that extension but refuses the call, so the panel had no image and the game stayed black waiting for the video (GitHub issue 25). The adapter's surface_emul (on by default) hands the player a real Android Surface and copies each video frame into an ordinary swapchain the panel shows.
Recipe
frame.unity_text_inputdevice.text_input_windowtested with version 1.0.5 · 2026-10-04
- I Expect You To Die 2UnityVrApiWorks2026-10-16
loaded up and played 5 minutes looks fine.
Recipe
frame.unity_no_msaaframe.unity_oculus_checkframe.unity_text_inputframe.unity_runtime_msaa_offframe.unity_gl_shimdevice.text_input_windowadapter.haptic_fixadapter.scaletested with version 1.0.1.171177 (ReleaseCandidate_1.0.1_QuestStore) · checked with FramePort 1.2.0 · 2026-10-16
- IEYTD3UnityVrApiWorks2026-10-11
Runs with the default patches; nothing special needed.
Recipe
frame.unity_no_msaaframe.unity_text_inputframe.unity_runtime_msaa_offframe.unity_gl_shimdevice.text_input_windowadapter.haptic_fixtested with version 1.0.1.211419 (ReleaseCandidate_1.0.0_QuestStore) · checked with FramePort 0.12.1.dev263 · 2026-10-11
- In Death: UnchainedUnrealOpenXRWorks2026-09-28
Online leaderboards unavailable. Online leaderboards likely unavailable.
Recipe
overport.patch_remove_unreal_force_quittested with version 1.8.0 · 2026-09-28
- Into The Radius 2UnrealOpenXRWorks2026-10-05
Plays well (owner-verified 2026-10-05). Space warp is off, the headset's brief focus losses are hidden (focus_hold, up to 2.5 s), only Valve's foveation layer is loaded (its render-pass optimizer removed the fog) and an invalid depth resolve in Unreal's render passes is dropped (vk_spec_fixes; it made models flicker and windows show behind them). Needs FramePort 0.10.0 or newer. Loading a save can take over a minute. Unreal Engine 5 game that uses Meta's Application SpaceWarp (extra motion-vector and depth swapchains). OVRPort's patch_disable_space_warp doesn't reach Unreal Engine 5, so FrameBridge's hide_space_warp hides XR_FB_space_warp and removes the space warp info from the eye images. Working config shared in GitHub issue 35. In the headset (2026-10-05) the Frame dropped focus for 0.4 s and 1.0 s within ten seconds and Unreal paused each time; loading a save shows no frames for 40-80 s while the game's Sentry SDK (debug mode) logs its breadcrumbs. Valve's VALVE_rpo (render-pass optimizer) Vulkan layer removes the game's fog (owner-verified 2026-10-05; with only VALVE_fdm_injection loaded the fog renders), which also hid the distance culling; ruled out for the remaining pop-in - Vulkan occlusion query slots, Valve's FDM layer. The cause, found with Khronos' validation layer (vk_validation) - Unreal's render passes use Qualcomm's shader resolve (VK_SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM) together with a depth resolve of a single-sampled depth attachment (VUID-VkSubpassDescription2-flags-04908, -03179), harmless on Quest's driver, wrong depth on the Frame's Mesa; the Vulkan shim's vk_spec_fixes drops that resolve.
Recipe
overport.patch_remove_unreal_force_quitenv.VK_INSTANCE_LAYERSadapter.equirect_emuladapter.hide_space_warpadapter.focus_holdadapter.focus_hold_msadapter.vk_spec_fixestested with version 1.2.4 · 2026-10-05
- InvasionUnityVrApiWorks2026-10-25
Runs with the default patches; nothing special needed.
Recipe
frame.unity_oculus_checkframe.unity_text_inputframe.unity_runtime_msaa_offframe.unity_gl_shimdevice.text_input_windowadapter.haptic_fixtested with version 1.0.250 · checked with FramePort 1.3.0 · 2026-10-25
- Job SimulatorUnityOpenXRWorks2026-10-03
Without Lepton's Android window: with it, the hands froze after a few seconds (GitHub #193).
tested with version 1.4.0.6515 · checked with FramePort 0.6.2 · 2026-10-03
- Journey of the GodsUnrealVrApiWorks2026-10-14
32-bit only (armeabi-v7a), runs through FramePort's 32-bit bridge (experimental). Plays in the headset. Unreal Engine 4 NativeActivity with OVRPlugin + VrApi, GLES. Needed DT_ANDROID_RELR relocations in the 32-bit loader (it crashed at start) and the VrApi bridge's frame pacing: the Frame's runtime can return from xrWaitFrame early, and this light game then ran at ~120 fps on a 90 Hz display, so the scene slid and snapped back. Plays in the headset (owner, 2026-10-14).
Recipe
frame.a32_bridgeoverport.patch_remove_unreal_force_quittested with version 1.0.479431 · 2026-10-14
- Jurassic World Aftermath CollectionUnityVrApiWorks2026-10-06
Plays (owner's headset test, 2026-10-06).
Recipe
frame.unity_no_msaaframe.unity_oculus_checkframe.unity_text_inputframe.unity_runtime_msaa_offframe.unity_gl_shimframe.vrapi_stubdevice.text_input_windowadapter.haptic_fixtested with version v3.16 · checked with FramePort 0.12.0 · 2026-10-06
- Keep Talking and Nobody ExplodesUnityOpenXRWorks2026-10-04
Runs with the default patches; nothing special needed.
Recipe
frame.unity_text_inputdevice.text_input_windowtested with version 1.10.15 · checked with FramePort 0.6.3 · 2026-10-04
- Kill It With Fire VRUnrealOpenXRWorks2026-10-11
Works
Recipe
frame.unreal_skip_obb_checkframe.hw_video_decodeoverport.patch_remove_unreal_force_quitadapter.haptic_fixtested with version 1.0.5.4208 · checked with FramePort 1.0.4 · 2026-10-11
- KillerFrequencyUnityVrApiWorks2026-10-18
Runs with the default patches; nothing special needed.
Recipe
frame.unity_no_msaaframe.unity_text_inputframe.unity_runtime_msaa_offframe.hw_video_decodeframe.unity_gl_shimdevice.text_input_windowadapter.haptic_fixadapter.scaletested with version 1.0.767.38513 · checked with FramePort 1.2.1 · 2026-10-18
- LadderUnityOpenXRWorks2026-10-12
Runs with the default patches; nothing special needed.
Recipe
frame.unity_text_inputframe.unity_runtime_msaa_offframe.unity_gl_shimdevice.text_input_windowadapter.haptic_fixtested with version Release · checked with FramePort 1.0.4 · 2026-10-12
- Lambda1VROtherOpenXRWorks2026-10-06
Needs the game data: upload the release's xash folder to the game's storage (Files tab) and set --msaa 1 in xash/commandline.txt. Owner's headset test, 2026-10-06.
Recipe
frame.tbxr_vendortested with version 1.7.3 · checked with FramePort 0.12.0 · 2026-10-06
- Laser DanceUnityOpenXRWorks2026-10-18
Mixed reality laser obstacle course; requires spatial data and room layout emulation (scene_emul=1). frame.meta_depth_occlusion keeps close lasers visible (its asset fixes only for the build they were made for); tested version not recorded (PR Mixed reality game that projects lasers across your room; needs Meta scene emulation and spatial data permission.
Recipe
frame.meta_permissionsframe.meta_depth_occlusionframe.unity_scene_active_roomsframe.unity_text_inputadapter.controller_fixadapter.haptic_fixadapter.scene_emuladapter.passthrough_emul2026-10-18
- LEGO® BricktalesUnityOpenXRWorks2026-09-28
Use VR mode. frame.unity_text_input and device.text_input_window added from detection (not headset-verified). Has VR and MR modes; use VR mode (passthrough not forced).
Recipe
frame.unity_text_inputdevice.text_input_windowtested with version 2.1 · 2026-09-28
- Little Nightmares VRUnityOpenXRWorks2026-10-18
Runs with the default patches; nothing special needed.
Recipe
frame.unity_text_inputframe.hw_video_decodedevice.text_input_windowtested with version 1.0.31 · checked with FramePort 1.2.1 · 2026-10-18
- Lost RecipesUnrealVrApiWorks2026-10-16
Runs with the default patches; nothing special needed.
Recipe
frame.unreal_skip_obb_checkframe.hw_video_decodeoverport.patch_remove_unreal_force_quitadapter.haptic_fixtested with version 1.0.1+273175 · checked with FramePort 1.2.0 · 2026-10-16
- Lucky's TaleUnityVrApiWorks2026-10-05
Plays normally; touching a save slot no longer freezes the Frame (haptic_fix). Touching a save slot vibrates the controller through XR_FB_haptic_amplitude_envelope; OVRPort's OpenXR loader converts that envelope with the duration in nanoseconds read as seconds and allocates an enormous buffer, so the Frame ran out of memory and froze (found by the GitHub issue 9 reporter). FrameBridge's extension shim turns the envelope into a plain vibration before OVRPort's loader sees it (haptic_fix). Brief pauses came from the headset's wear sensor flickering, now hidden by focus_hold (on by default).
Recipe
frame.unity_text_inputframe.unity_runtime_msaa_offdevice.text_input_windowadapter.haptic_fixtested with version 1.0.55 · 2026-10-05
- MaestroUnrealOpenXRWorks2026-10-15
Runs with the default patches; nothing special needed.
Recipe
frame.unreal_skip_obb_checkframe.hw_video_decodeoverport.patch_remove_unreal_force_quitadapter.haptic_fixtested with version 0.0.397 · checked with FramePort 1.1.1 · 2026-10-15
- Marvel's Deadpool VRUnrealOpenXRWorks2026-10-01
Unreal (Vulkan): Lepton's Fossilize layer crashed on uninitialized render-pass pNexts; frame.vk_sanitize fixes it. Confirmed working in the headset by the owner (2026-10-01). Needs frame.vk_sanitize (native/vkshim) and frame.swapchain_limit; space warp disabled (32 GiB OVRPlugin game).
Recipe
overport.patch_remove_unreal_force_quitoverport.patch_disable_space_warptested with version 1.0.40.356975.Quest · 2026-10-01
- Marvel's Iron Man VRUnityOpenXRWorks2026-10-05
Runs with the default patches; nothing special needed.
Recipe
frame.unity_text_inputdevice.text_input_windowadapter.fade_quadtested with version 0.1.0-250068 · checked with FramePort 0.9.1 · 2026-10-05
- Max MustardUnityOpenXRWorks2026-10-08
Runs with the default patches; nothing special needed.
Recipe
frame.unity_text_inputdevice.text_input_windowadapter.haptic_fixtested with version 1.1.0 · checked with FramePort 0.12.0 · 2026-10-08
- Medieval Dynasty New SettlementUnityOpenXRWorks2026-09-28
Co-op unavailable. frame.unity_text_input and device.text_input_window added from detection (not headset-verified). Release notes: for DLC use an older version. Co-op likely unavailable.
Recipe
frame.unity_text_inputdevice.text_input_windowtested with version 2.4 · 2026-09-28
- Metro AwakeningUnrealOpenXRWorks2026-10-06
Plays (owner's headset test) with the Vulkan shim's fixes, fragment density maps hidden, space warp off and without Valve's VALVE_rpo layer (random jumping polygons in 3D without the last two, as in Into The Radius 2). Unreal 5.2 (Vulkan) quit itself (ForceQuit, use_alt), then crashed three times in the Frame's Vulkan driver (Turnip) on things Quest's driver ignores - a depth resolve in a subpass without a depth attachment, image barriers and image views for a missing image. Unreal turns on fragment-density-map foveation because the driver offers the extension and then expects the density map from the headset, which the Frame never provides; vk_hide_fdm hides the extension from the game (Valve's own foveation layer is unaffected).
Recipe
overport.patch_remove_unreal_force_quitenv.VK_INSTANCE_LAYERSadapter.vk_spec_fixesadapter.vk_hide_fdmadapter.hide_space_warptested with version 1.0-916944 · 2026-10-06
- Mini Motor Racing XUnityVrApiWorks2026-10-15
Runs with the default patches; nothing special needed.
Recipe
frame.unity_no_msaaframe.unity_oculus_checkframe.unity_text_inputframe.unity_runtime_msaa_offframe.unity_gl_shimdevice.text_input_windowadapter.haptic_fixadapter.pose_time_fixtested with version 1.3.6 · checked with FramePort 1.1.1 · 2026-10-15
- Mobile Suit Gundam: Silver PhantomUnityOpenXRWorks2026-09-28
Uses Meta XR Audio via FMOD (not covered by patch_meta_xr_audio); if audio is missing, that is the likely cause. frame.unity_text_input and device.text_input_window added from detection (not headset-verified).
Recipe
frame.unity_text_inputdevice.text_input_windowtested with version 1.1.58.402 · 2026-09-28
- MossUnrealVrApiWorks2026-10-15
The initial loading image looks glitchy, but otherwise it works well.
Recipe
frame.hw_video_decodeoverport.patch_remove_unreal_force_quitadapter.haptic_fixtested with version 1.0.3.151047 · checked with FramePort 1.2.0 · 2026-10-15
- Moss: Book IIUnrealVrApiWorks2026-10-12
Just played the very begining but controlls worked. Did nothing other than install it.
Recipe
frame.hw_video_decodeoverport.patch_remove_unreal_force_quitadapter.haptic_fixtested with version 1.0.3.149619 · checked with FramePort 1.0.4 · 2026-10-12
- Movie Deck for PlexUnityOpenXRWorks2026-10-20
Works out of the box and absolutely fantastically so.
Recipe
frame.meta_permissionsframe.unity_text_inputframe.hw_video_decodedevice.text_input_windowadapter.controller_modelsadapter.haptic_fixadapter.scene_emultested with version 6.4 · checked with FramePort 1.3.0 · 2026-10-20
- Munkr Funkr (The Legacy Days)UnityOpenXRWorks2026-10-12
Runs with the default patches; nothing special needed.
Recipe
frame.unity_text_inputdevice.text_input_windowadapter.haptic_fixtested with version 2 · checked with FramePort 1.0.4 · 2026-10-12
- NanoUnityOpenXRWorks2026-10-02
Needs Oculus OS telemetry class stubs and the no-ForceQuit build (the normal build quits right after starting). frame.unity_text_input and device.text_input_window added from detection (not headset-verified).
Recipe
frame.oculusosframe.unity_text_inputdevice.text_input_windowoverport.patch_remove_unreal_force_quittested with version 1.711 · 2026-10-02
- Neko Atsume PurrfectUnityOpenXRWorks2026-10-16
Runs with the default patches; nothing special needed.
Recipe
frame.unity_text_inputframe.oculusosdevice.text_input_windowadapter.controller_modelsadapter.haptic_fixadapter.scene_emultested with version 2.3.0 · checked with FramePort 1.2.0 · 2026-10-16
- NEX PlayerUnityOpenXRWorks2026-10-01
Confirmed in the headset by the owner (2026-10-01): 72 fps, local 2D/360/3D videos play (it browses /sdcard/Movies itself). USB-drive browsing can't work in Lepton. Typing (frame.unity_text_input + device.text_input_window, owner in the headset 2026-10-15): SteamVR's keyboard button works and typed text reaches the fields; the keyboard doesn't open by itself when a field is selected.
Recipe
frame.unity_text_inputdevice.text_input_windowtested with version 1.3.1.0 · 2026-10-01
- NFL PRO ERA IIUnityOpenXRWorks2026-10-11
Runs with the default patches; nothing special needed.
Recipe
frame.unity_text_inputframe.unity_runtime_msaa_offframe.unity_gl_shimdevice.text_input_windowadapter.haptic_fixtested with version 2.4.0 · checked with FramePort 1.0.4 · 2026-10-11
- NOPE CHALLENGEUnrealOpenXRWorks2026-09-28
Meta XR Audio telemetry patch + nodebug. MR mode: needs a scanned room. The MR 'Reality Breach' mode needs passthrough and a room; standard VR mode was verified.
Recipe
frame.nodebugframe.oculusosoverport.patch_remove_unreal_force_quitadapter.scene_emultested with version 1.0.964.7166 · 2026-09-28
- Ocean RiftUnityOpenXRWorks2026-10-14
eye tracked foveated rendering works great!
Recipe
frame.unity_text_inputframe.unity_runtime_msaa_offframe.unity_gl_shimdevice.text_input_windowadapter.controller_modelsadapter.haptic_fixadapter.scene_emultested with version 2.09 · checked with FramePort 1.1.1 · 2026-10-14
- Operation Wolf Returns: First Mission VRUnityOpenXRWorks2026-10-15
Runs with the default patches; nothing special needed.
Recipe
frame.unity_text_inputframe.hw_video_decodedevice.text_input_windowadapter.haptic_fixtested with version 0.28 · checked with FramePort 1.1.1 · 2026-10-15
- OrbusVRUnityVrApiWorks2026-10-16
Runs with the default patches; nothing special needed.
Recipe
frame.unity_oculus_checkframe.unity_text_inputframe.unity_runtime_msaa_offframe.hw_video_decodeframe.unity_gl_shimdevice.text_input_windowadapter.haptic_fixadapter.pose_time_fixtested with version 31.01 · checked with FramePort 1.2.0 · 2026-10-16
- Orcs Must Die: By The BladeUnrealOpenXRWorks2026-10-21
Perfect at v151
Recipe
frame.unreal_ovrp_entrypointsframe.hw_video_decodeoverport.patch_remove_unreal_force_quitadapter.equirect_emuladapter.haptic_fixtested with version 1.0.164237 · checked with FramePort 1.3.0 · 2026-10-21
- palazzo_santacruzUnityOpenXRWorks2026-10-05
Played a few levels. Passthrough also works.
Recipe
frame.unity_text_inputdevice.text_input_windowtested with version 3.7.6.10866-release · checked with FramePort 0.9.1 · 2026-10-05
- Path of the WarriorOtherVrApiWorks2026-09-28
Direct VrApi GLES engine: VrApi bridge (GLES) + GL shim. Calls libvrapi directly (no OVRPlugin) with a GLAD-based GLES engine; its shaders need the GL shim on Mesa.
Recipe
frame.gl_shimframe.vrapi_bridgetested with version 21.11.10.358057 · 2026-09-28
- Pistol WhipUnityOpenXRWorks2026-10-08
120 HZ
Recipe
frame.unity_text_inputdevice.text_input_windowadapter.haptic_fixtested with version 1.6.0.2 · checked with FramePort 0.12.0 · 2026-10-08
- Pistol WhipPC VRUnityOpenVRWorks2026-10-09
Supports SteamVR/OpenXR itself: runs directly, without Revive.
Recipe
pcvr.xr_timefixpcvr.steamvr_tuningchecked with FramePort 0.12.1.dev232 · 2026-10-09
- Please Don't Touch AnythingUnityOpenXRWorks2026-10-08
Seems functional
Recipe
frame.unity_text_inputdevice.text_input_windowtested with version 2.2 · checked with FramePort 0.12.0 · 2026-10-08
- Port0r: Cop VROtherOpenXRWorks2026-10-25
Runs with the default patches; nothing special needed.
tested with version 0.2.2 · checked with FramePort 1.3.0 · 2026-10-25
- Port0r: House of the Dead VROtherOpenXRWorks2026-10-25
Runs with the default patches; nothing special needed.
tested with version 0.1.1 · checked with FramePort 1.3.0 · 2026-10-25
- Port0r: Rally VROtherOpenXRWorks2026-10-25
Runs with the default patches; nothing special needed.
tested with version 0.2.6 · checked with FramePort 1.3.0 · 2026-10-25
- PowerWash Simulator VRUnityOpenXRWorks2026-09-28
Recommended pilot title. frame.unity_text_input and device.text_input_window added from detection (not headset-verified).
Recipe
frame.unity_text_inputdevice.text_input_windowtested with version 2.5.0 · 2026-09-28
- Punch FitUnityOpenXRWorks2026-10-12
Mixed reality workout arena; composition layer trimming prevents 21+ layer overflow.
Recipe
frame.meta_permissionsframe.unity_text_inputadapter.haptic_fixadapter.pose_time_fixadapter.scene_emuladapter.passthrough_emultested with version 1.7.2 · 2026-10-12
- QuestCraftUnityOpenXRWorks2026-10-05
Minecraft runs in VR (Vivecraft, about 72 fps; drops while worlds load). Needs FramePort 0.10.0 or newer for the picture (older versions show black). On first start QuestCraft downloads its Java runtime, which didn't unpack on the Frame once (see details). QuestCraft downloads its Java runtime (JRE.zip from QuestCraft's GitHub releases) into files/runtimes/JRE on first start; on the Frame that step once left nothing behind ("libjvm.so not found"; unpacked by hand). Two Frame fixes, both owner-verified 2026-10-05. (1) Minecraft 1.21.5 checks GL errors strictly and aborted with "OpenGL error 1282", an error the Frame's Mesa (Zink) reports where Quest's driver doesn't; QuestCraft's GL-to-GLES layer (LTW) ignores GL errors when LIBGL_NOERROR is set, which Lepton passes from LEPTON_ENV_LIBGL_NOERROR. (2) LTW passes desktop GL_DEPTH_COMPONENT32 through, which Mesa rejects, so every framebuffer was incomplete and the picture black; frame.ltw_depth (automatic for APKs with libltw.so) loads GLES through a shim that asks for GL_DEPTH_COMPONENT32F. Left over, harmless so far - Mesa still reports about 4 GL_INVALID_OPERATION per frame ("in glthread", so the call is unknown; mesa_glthread=false would name it).
Recipe
frame.unity_text_inputframe.pojlib_connectiondevice.text_input_windowenv.LEPTON_ENV_LIBGL_NOERRORtested with version 6.0.0-RC4 · 2026-10-05
- QuestZDoomOtherOpenXRWorks2026-10-25
Needs a WAD: put it into QuestZDoom/wads in the game's storage (Files tab) and create QuestZDoom/qzdoom.ini with the lines "[IWADSearch.Directories]" and "Path=/sdcard/QuestZDoom/wads" (commandline.txt alone is not enough). Smooth past 15 minutes in the headset with gl_error_clear (issue 237). GZDoom on OpenGL ES with Team Beef's OpenXR code. The game leaves GL_INVALID_ENUM pending every frame; the runtime's GL check failed on it at the first swapchain and its GL interop then created about 100 GPU objects a second that were never freed (8,000 after 75 s headless). Frames slowed down over the minutes, and in a player's session the GPU driver crashed after 6 minutes and the Frame restarted. gl_error_clear clears the errors before FrameBridge calls the runtime; GPU objects then stay flat (headless, 2026-10-24).
Recipe
frame.tbxr_vendoradapter.gl_error_cleartested with version 1.6.2 · 2026-10-25
- Racket: NxUnityVrApiWorks2026-10-10
Runs with the default patches; nothing special needed.
Recipe
frame.unity_text_inputframe.unity_runtime_msaa_offframe.unity_gl_shimdevice.text_input_windowadapter.haptic_fixtested with version 2.8.31 · checked with FramePort 0.12.0 · 2026-10-10
- RacketPinballUnityOpenXRWorks2026-10-13
Runs with the default patches; nothing special needed.
Recipe
frame.unity_text_inputdevice.text_input_windowadapter.haptic_fixtested with version 2.06 · checked with FramePort 1.0.4 · 2026-10-13
- RC Pilot TrainerUnityOpenXRWorks2026-10-10
Runs with the default patches; nothing special needed.
Recipe
frame.unity_text_inputframe.oculusosdevice.text_input_windowadapter.haptic_fixtested with version 0.7.0.2 · checked with FramePort 0.12.0 · 2026-10-10
- RetronikaUnityOpenXRWorks2026-10-07
Runs with the default patches; nothing special needed.
Recipe
frame.unity_text_inputdevice.text_input_windowadapter.haptic_fixtested with version 3.2.601 · checked with FramePort 0.12.0 · 2026-10-07
- RetropolisUnityOpenXRWorks2026-10-10
Runs with the default patches; nothing special needed.
Recipe
frame.unity_text_inputframe.oculusosdevice.text_input_windowadapter.haptic_fixtested with version 0.87 · checked with FramePort 0.12.0 · 2026-10-10
- Richie's Plank ExperienceUnityOpenXRWorks2026-10-07
Runs with the default patches; nothing special needed.
Recipe
frame.unity_text_inputframe.oculusosdevice.text_input_windowadapter.haptic_fixtested with version 2.3.585 · checked with FramePort 0.12.0 · 2026-10-07
- Rick and Morty: Virtual Rick-alityPC VRUnityOpenVRWorks2026-09-29
Runs on the Frame under Proton without Revive (this build talks to SteamVR directly). Slight stutter. The dump's executable already uses SteamVR (OpenVR), so it is installed as it is; Proton's VR bridge only starts with FramePort's OpenXR layer (the Frame runtime accepts OpenXR 1.0 apps only). Confirmed in the headset.
Recipe
pcvr.xr_timefixtested with version v2288226 · 2026-09-29
- RivenUnrealOpenXRWorks2026-10-04
Plays as expected.
Recipe
overport.patch_remove_unreal_force_quitadapter.equirect_emultested with version 1.9.0 · checked with FramePort 0.6.3 · 2026-10-04
- Robo RecallUnrealVrApiWorks2026-09-28
Needed the LAUNCHER category fix. Source APK is a community 'patch+savefix+90Hz' build. Shares Vader Immortal's Unreal 4 Oculus input (GitHub 49) - thumbs follow the touches (frame.unreal_thumb_touch) and controller poses are located at the right time (pose_time_fix); added 2026-10-09 from Vader's headset results, not yet checked in this game. sync_guard added 2026-10-11 for a vrclient xrSyncActions crash on the loading splash after the intro (GitHub
Recipe
frame.unreal_thumb_touchoverport.patch_remove_unreal_force_quitadapter.pose_time_fixadapter.sync_guardtested with version 1.0 · 2026-09-28
- RUINSMAGUSUnityVrApiWorks2026-10-07
Runs with the default patches; nothing special needed.
Recipe
frame.unity_text_inputdevice.text_input_windowadapter.haptic_fixtested with version 1.2.3 · checked with FramePort 0.12.0 · 2026-10-07
- Scared By SquaresUnrealOpenXRWorks2026-10-17
Showed black and dropped back to the home environment while the game kept running (sound only, GitHub 323). Fixed in FramePort 1.2.1 (confirmed in the headset by the reporter). Rebuild and reinstall the game after updating FramePort. The game (Unreal 4.27, OpenXR) creates two controller actions named "turn" (an action mapping and an axis mapping called Turn). The Frame's runtime accepts the duplicate, then fails to load the input manifest it builds from the actions ("SetXrInputConfig failed. Failed to load manifest") and treats the game as closed. FrameBridge's action_dedup (on by default) creates the second one as "turn_2".
Recipe
frame.hw_video_decodeframe.unreal_skip_obb_checktested with version 2 · 2026-10-17
- SclerosisUnityOpenXRWorks2026-10-16
Copy the "Amnesia The Dark Descent" folder from a Windows/Proton install to "FramePort/com.CreaTeam.Sclerosis/lepton-data/external". Default hand positions are rather askew and should be amended via VR Controller Mappings in Steam itself. FOV warping effects are EXTREMELY disorienting in VR, beware. Otherwise seems to work without issue.
Recipe
frame.unity_text_inputdevice.text_input_windowtested with version 1.10.7 · checked with FramePort 1.2.0 · 2026-10-16
- Shadow PointUnityVrApiWorks2026-10-14
32-bit only (armeabi-v7a), runs through FramePort's 32-bit bridge (experimental). Plays in the headset. Unity with OVRPlugin + VrApi, GLES. Needed the bridge's vrapi_GetTrackingTransform/SetTrackingTransform (the game sets its floor level through them; without them the player stood below the floor). Plays in the headset (owner, 2026-10-14).
Recipe
frame.a32_bridgedevice.text_input_windowtested with version 1.4 · 2026-10-14
- Shoot The Zombirds VRUnityVrApiWorks2026-10-13
Runs with the default patches; nothing special needed.
Recipe
frame.unity_oculus_checkframe.unity_text_inputframe.unity_runtime_msaa_offframe.unity_gl_shimdevice.text_input_windowadapter.haptic_fixtested with version 1.0.2 · checked with FramePort 1.1.0 · 2026-10-13
- Shores of LociUnityOpenXRWorks2026-10-10
Runs with the default patches; nothing special needed.
Recipe
frame.unity_text_inputdevice.text_input_windowadapter.haptic_fixtested with version 1.2 · checked with FramePort 0.12.0 · 2026-10-10
- SilentSlayerUnrealOpenXRWorks2026-10-11
Runs with the default patches; nothing special needed.
Recipe
overport.patch_remove_unreal_force_quitadapter.haptic_fixtested with version 1.1.2+323863s · checked with FramePort 0.12.0 · 2026-10-11
- Simpsons Hit and Run VROtherOpenXRWorks2026-10-22
Needs the port's game data: after installing, copy the "SimpsonsHitRun" folder (see the port's GitHub instructions) into the game's storage with FramePort's Files tab. In-game settings: Vehicle lights off, Enhanced materials off, CSM shadows off (otherwise it crashes when starting a new game), Render scale 150% at 120 Hz. Tested with v1.2 of https://github.com/kote2345/The-Simpsons-Hit-and-Run-VR. Vehicle lights break entities and Enhanced materials break textures. Render scale above 150% can't keep up at 120 Hz (200% runs at about 100 fps). Optional: set the in-game VR tab's mode to VR to make the menus more comfortable. While paused, a long black texture can appear from the head when looking up; it goes away when the pause menu closes. Contributed in issues 443 and 461.
Recipe
frame.sdl_clipboardadapter.refresh_ratetested with version 0.93 · checked with FramePort 1.3.0 · 2026-10-22
- Smash DrumsUnityOpenXRWorks2026-10-15
Runs with the default patches; nothing special needed.
Recipe
frame.bhaptics_permissionframe.unity_text_inputdevice.text_input_windowadapter.haptic_fixadapter.scene_emultested with version 5.2.1.4 · checked with FramePort 1.1.1 · 2026-10-15
- Sniper Elite VRUnityVrApiWorks2026-10-07
Plays with controllers that follow the hands (owner's headset test, Quest 1 build 35713). Unity 2019.4 on its built-in Oculus VR (no Oculus XR Plugin). Its legacy frame loop never waited for frames (GPU hang, zink: DEVICE LOST) and Unity reported only Go controllers: frame.unity_oculus_check. Its frame wait then deadlocked at the Init scene (Unity skipped beginning a frame) and the physics-step pose update located the controllers in the past (hands lagged): both fixed in that patch (revision 5), switched on for this game by ovrp_begin_gate and ovrp_hold_physics. Grabbing an object in the tutorial vibrates the controller; OVRPort's envelope conversion then allocated ~1 GB/s until the memory cap ended the game: haptic_fix. The Quest 1 build has no arraysources_assets.hd, which the game loads on the Frame (it detects a Quest 2) and then skips the .sd bundle: textures are missing unless the .sd file is also present under the .hd name in the game's obb folder.
Recipe
frame.unity_no_msaaframe.unity_oculus_checkadapter.haptic_fixadapter.ovrp_begin_gateadapter.ovrp_hold_physicstested with version 1.03 · 2026-10-07
- Sniper Elite VR: Winter WarriorUnityOpenXRWorks2026-09-28
frame.unity_text_input and device.text_input_window added from detection (not headset-verified).
Recipe
frame.unity_text_inputdevice.text_input_windowtested with version 1.0.1 · 2026-09-28
- SoleroUnrealOpenXRWorks2026-10-20
Runs with the default patches; nothing special needed.
Recipe
frame.gms_platform_versionframe.unreal_ovrp_entrypointsframe.hw_video_decodeoverport.patch_remove_unreal_force_quitadapter.equirect_emuladapter.haptic_fixtested with version 1.00.109160 · checked with FramePort 1.3.0 · 2026-10-20
- Space Pirate Trainer QuestUnityVrApiWorks2026-10-04
Runs with the default patches; nothing special needed.
Recipe
frame.unity_text_inputframe.unity_runtime_msaa_offdevice.text_input_windowtested with version 1.97 · checked with FramePort 0.6.3 · 2026-10-04
- SpaceControlUnityOpenXRWorks2026-10-20
Runs with the default patches; nothing special needed.
Recipe
frame.unity_text_inputdevice.text_input_windowtested with version 1.1.2 · checked with FramePort 1.3.0 · 2026-10-20
- SpectreUnityOpenXRWorks2026-10-17
Works since 1.2.1 (the loading screen waited for a Meta analytics request).
Recipe
frame.unity_text_inputframe.hw_video_decodeframe.cortopia_org_iddevice.text_input_windowadapter.haptic_fixadapter.scaletested with version 1.0.1.1354 · checked with FramePort 1.2.1 · 2026-10-17
- Sports Scramble (Santa Cruz)UnrealVrApiWorks2026-10-13
32-bit only (armeabi-v7a), runs through FramePort's 32-bit bridge (experimental). Both controllers work as Touch controllers. The first start shows a one-time "optimizing" screen (a bit jittery) and then starts the game again by itself. Unreal Engine 4 NativeActivity with OVRPlugin + VrApi, GLES, OBB. The bridge needed AAsset_getBuffer (copied into guest memory), AKeyEvent_getFlags and the remaining AConfiguration getters. A Santa Cruz (early Quest) build: it requires 6DoF head tracking, so the bridge passes both Frame controllers through as Touch controllers (assets/fp_a32_headset.txt) instead of the Gear VR remote. Unreal restarts the app after its first-run shader precompile; the launcher starts Lepton again for it (agent 86). Plays in the headset (owner, 2026-10-13).
Recipe
frame.a32_bridgetested with version 1.0 · 2026-10-13
- Star Wars Pinball VRUnrealVrApiWorks2026-10-08
Plays (owner's headset test); one short audio hiccup seen. Unreal 4.25 (GLES) built against OVRPlugin 1.44. Four Frame problems in a row: Zink crashed on Unreal's multisampled render-to-texture (fault addr 0x10000 on the RHIThread): frame.unreal_gl_shim, which keeps Unreal's multiview and draws those passes single-sampled; OVRPort's OVRPlugin lacks ovrp_GetPTWNear, so Unreal's Oculus module never started VR (then a null pointer in GetMultiViewSceneColor): frame.unreal_ovrp_entrypoints; the engine's OpenSSL assembly has unpaired return-address checks the Frame's CPU enforces (SIGILL on the HttpManager thread): frame.pac_hints. Needs its OBB (main.10765).
Recipe
frame.unreal_gl_shimframe.unreal_ovrp_entrypointsframe.pac_hintsadapter.haptic_fixtested with version 1.4 · 2026-10-08
- Star Wars: Tales from the Galaxy's EdgeUnrealVrApiWorks2026-10-17
Headset tested for GitHub issue 61: full view, loading into gameplay, both eyes, controller input and sound work with the splash bypass and multiview depth-size fix. Keep the main OBB and all three content/sound-bank PAKs. GitHub issue 369 (headset, Lepton 3.0.5): the GPU hang at a later loading screen is fixed by zink_shader_fix; played ~28 min at 72 fps. Unreal Engine 4 (GLES) by ILMxLAB, like Vader Immortal, but a different engine build - it has none of Vader's Quest-only branches (no GetQuestShaderPrecompilePercent or RPOC key map; it precompiles shaders through Unreal's own pipeline cache), so frame.unreal_quest_precompile/_keymap don't apply. Its seasons and Wwise banks are Meta platform asset files (frame.asset_files). Vader's OVRPlugin findings apply to it as well - poses asked for at OVRPlugin's own clock (pose_time_fix) and thumbs from near-touch, which the Frame never reports (frame.unreal_thumb_touch). Map travel stalls with the game thread waiting in FlushRenderingCommands and the render thread waiting in FSplash::RenderFrame_RenderThread / ovrp_WaitToBeginFrame. frame.unreal_splash_bypass lets loading finish. SideQuest backups with sibling apk/ and obb/ folders must include all three PAKs; old scans omitted them and lost sound. The scanner and library refresh recover that layout. Eye clipping came from cached Android window dimensions for the depth attachment (1920x1016 versus the 1728x1728 eye color texture). frame.unreal_multiview_depth refreshes both cached dimensions from the current eye render size; multiview and multisampling remain enabled. The two engine fixes check exported symbols, function sizes and instruction bytes before changing one instruction each; unrecognized engine builds are left unchanged. A fragment shader (module 16800_8dbab031..., as Zink compiles it) reads 12 int loop counters/accumulators before setting them and hangs the GPU (kernel hangcheck) at a loading screen, the same bug as Vader Immortal's lightspeed shaders; the Vulkan layer under Zink inserts stores of 0 (frame.zink_shader_fix, zink_shader_fix). Captured with Lepton 3.0.5, so a Frame update that changes Zink's output stops it matching (the layer logs that).
Recipe
frame.asset_filesframe.unreal_thumb_touchframe.unreal_splash_bypassframe.unreal_multiview_depthframe.zink_shader_fixoverport.patch_remove_unreal_force_quitadapter.pose_time_fixadapter.zink_shader_fixtested with version 1.1.9+734762.cl.439699 · 2026-10-17
- StremioUnityOpenXRWorks2026-10-03
Unity 6 VR media centre (its interface is web pages in Vuplex 3D WebView). Text fields closed at once on the Frame (no system keyboard): frame.unity_text_input keeps them selected and device.text_input_window shows the Android window so Steam's on-screen keyboard (or Type on Frame from the PC) types into them; confirmed in the headset by the owner (2026-10-03), who confirmed it working. Note: the add-ons page can stay blank in VR (the add-on sync itself succeeds). "Play in an external player" can't reach another app: Lepton sends every link to Steam's browser. Patches: frame.unity_text_input (TMP_InputField.TouchScreenKeyboardShouldBeUsed -> false, isKeyboardUsingEvents -> true; uGUI InputField too), device.text_input_window (lepton-show-flatscreen).
Recipe
frame.unity_text_inputdevice.text_input_windowtested with version 0.7.5 · 2026-10-03
- Summer SportsUnityOpenXRWorks2026-10-17
Runs with the default patches; nothing special needed.
Recipe
frame.unity_text_inputframe.unity_runtime_msaa_offframe.unity_gl_shimdevice.text_input_windowadapter.haptic_fixtested with version 0.5.1 · checked with FramePort 1.2.1 · 2026-10-17
- SuperflyUnityOpenXRWorks2026-10-11
Works, take a bit to launch but works
Recipe
frame.unity_text_inputdevice.text_input_windowadapter.haptic_fixtested with version 1.3.3 · checked with FramePort 1.0.4 · 2026-10-11
- SUPERHOT VRPC VRUnityOpenXRWorks2026-10-05
Supports SteamVR/OpenXR itself: runs directly, without Revive. Older builds with both Oculus and SteamVR support (SUPERHOTVR.exe) start with -vrmode OpenVR.
Recipe
pcvr.launch_argspcvr.xr_timefixpcvr.steamvr_tuningchecked with FramePort 0.6.3 · 2026-10-05
- SUPERHOT VRUnityVrApiWorks2026-10-04
Quest version. Needs FramePort's launcher from agent 41 (reinstall once) so the game can write its saves. Unity 2018.4 with built-in Oculus support (GLES). Its eye swapchains (GL_RGBA8, then a 16-bit format) are created as sRGB by the adapter's swapchain_fix. The game creates its cloud save folder with mode 1700 and quits at start when it can't write there ("Something failed to initialize. Quitting!"); the launcher now gives every folder in the game's storage owner and group write permission. On the very first start it creates that folder and checks it in the same moment (GitHub 120), so the recipe creates the folder at install (device_files) and the launcher fixes it before the game starts.
Recipe
frame.unity_no_msaaframe.unity_oculus_checkframe.unity_text_inputframe.unity_runtime_msaa_offdevice.text_input_windowtested with version 1.161 · 2026-10-04
- Survival NationUnityOpenXRWorks2026-10-18
Runs with the default patches; nothing special needed.
Recipe
frame.unity_text_inputdevice.text_input_windowadapter.scaletested with version 1.14.1 · checked with FramePort 1.2.1 · 2026-10-18
- Surviving Mars: PioneerUnityOpenXRWorks2026-10-18
Runs with the default patches; nothing special needed.
Recipe
frame.unity_text_inputframe.hw_video_decodedevice.text_input_windowadapter.haptic_fixadapter.scaletested with version 1.0.14 · checked with FramePort 1.2.1 · 2026-10-18
- SynthRiders
com.kluge.SynthRidersUnityOpenXRWorks2026-10-10Runs with the default patches; nothing special needed.
Recipe
frame.unity_text_inputframe.oculusosdevice.text_input_windowadapter.controller_modelsadapter.haptic_fixtested with version 3.6.7a1 · checked with FramePort 0.12.0 · 2026-10-10
- SynthRiders
com.mrf.kluge.SynthRidersUnityOpenXRWorks2026-10-25Runs with the default patches; nothing special needed.
Recipe
frame.meta_permissionsframe.bhaptics_permissionframe.unity_text_inputframe.oculusosdevice.text_input_windowadapter.controller_modelsadapter.haptic_fixadapter.scene_emultested with version 3.6.7a2 · checked with FramePort 1.3.1.dev703 · 2026-10-25
- Table TroopersUnityOpenXRWorks2026-10-17
Runs with the default patches; nothing special needed.
Recipe
frame.gms_platform_versionframe.photon_voice_audio_routeframe.unity_text_inputdevice.text_input_windowadapter.haptic_fixadapter.scaletested with version 2026.40.4 · checked with FramePort 1.2.1 · 2026-10-17
- TaskmasterUnityOpenXRWorks2026-10-11
Launched and played a few tasks. Seems to work pretty much flawlessly other than some occasionally finicky grip detection - very possible that this is just the game itself though
Recipe
frame.unity_text_inputframe.oculusosdevice.text_input_windowadapter.haptic_fixtested with version 1.0.17557.29562 · checked with FramePort 1.0.0 · 2026-10-11
- Tea For GodOtherOpenXR+VrApiWorks2026-10-14
Runs with the default patches; nothing special needed.
Recipe
frame.bhaptics_permissionframe.hw_video_decodeadapter.equirect_emultested with version 1.1.1 · checked with FramePort 1.1.1 · 2026-10-14
- Test Quest ControllersOtherOpenXRWorks2026-10-18
A controller tester for the Controller buttons settings. Picking a controller type on the Frame closes the app; start it again to use that type (SteamVR's runtime can't switch within one app start).
tested with version 0.2.2 · checked with FramePort 1.2.1 · 2026-10-18
- Test Quest MROtherOpenXRWorks2026-10-18
An MR debug viewer that shows what the Meta MR APIs return (room, planes, mesh, anchors, play area). With FramePort's emulated room it shows a room made from the play area.
Recipe
frame.meta_permissionsadapter.scene_emultested with version 0.2.1 · checked with FramePort 1.2.1 · 2026-10-18
- TetrisEffectUnrealVrApiWorks2026-10-05
Opened the game, messed around with the menu, and played the first level. Works great.
Recipe
overport.patch_remove_unreal_force_quittested with version 2.0.2 · checked with FramePort 0.9.1 · 2026-10-05
- The Boys VRUnityOpenXRWorks2026-10-06
Plays with space warp off (owner's headset test, 2026-10-06; black screen reported before).
Recipe
frame.unity_text_inputdevice.text_input_windowadapter.haptic_fixadapter.hide_space_warptested with version 1.1.0.345 · checked with FramePort 0.12.0 · 2026-10-06
- The ClimbCryEngineVrApiWorks2026-10-16
Runs with the default patches; nothing special needed.
Recipe
frame.vrapi_bridgetested with version 666.0 · checked with FramePort 1.2.0 · 2026-10-16
- The Climb 2CryEngineVrApiWorks2026-09-28
CryEngine direct VrApi (Vulkan): VrApi bridge + platform compat; user.cfg disables VRS. CryEngine calls libvrapi directly; overport cannot translate it, so the VrApi bridge replaces libvrapi.so.
Recipe
frame.vrapi_bridgetested with version 2.2 · 2026-09-28
- The Last ClockwinderUnityOpenXRWorks2026-10-09
Runs with the default patches; nothing special needed.
Recipe
frame.unity_text_inputframe.unity_runtime_msaa_offframe.unity_gl_shimdevice.text_input_windowadapter.haptic_fixtested with version 1.29 · checked with FramePort 0.12.1.dev203 · 2026-10-09
- The Room VRUnityVrApiWorks2026-10-05
Plays normally (it used to stay on a grey screen). Unity 2018.4 with built-in Oculus support. It started VR only with frame.unity_oculus_check, then Unity's render thread crashed in the GL driver (Zink) when OVROverlay copied a 4x4 fade texture into its overlay layer; frame.unity_no_overlay_copy skips that copy (the fade still works). frame.unity_runtime_msaa_off keeps the eye buffer at one sample (also GitHub issue 38).
Recipe
frame.unity_no_msaaframe.unity_oculus_checkframe.unity_text_inputframe.unity_runtime_msaa_offframe.unity_no_overlay_copydevice.text_input_windowtested with version 1.02 · 2026-10-05
- The Tale of OnogoroUnityOpenXRWorks2026-10-08
Runs with the default patches; nothing special needed.
Recipe
frame.unity_text_inputdevice.text_input_windowadapter.haptic_fixtested with version 1.1.0248 · checked with FramePort 0.12.0 · 2026-10-08
- The Walking Dead: Saints & SinnersUnrealVrApiWorks2026-10-17
Runs with the default patches; nothing special needed.
Recipe
frame.ovr_microphoneframe.hw_video_decodeoverport.patch_remove_unreal_force_quitadapter.haptic_fixtested with version Shipping / 2024.01.19 / build 400355 - STAGECH1 · checked with FramePort 1.2.0 · 2026-10-17
- The WizardsUnrealVrApiWorks2026-10-18
Runs with the default patches; nothing special needed.
Recipe
frame.unreal_thumb_touchoverport.patch_remove_unreal_force_quitadapter.haptic_fixadapter.pose_time_fixadapter.scaletested with version 1.11 · checked with FramePort 1.2.1 · 2026-10-18
- Time Crisis II VR (Test)OtherOpenXRWorks2026-10-10
Runs with the default patches; nothing special needed.
Recipe
frame.sdl_clipboardtested with version 0.2.0 · checked with FramePort 0.12.0 · 2026-10-10
- Time Crisis VR (Experimental)OtherOpenXRWorks2026-10-06
Fully playable at 120hz
Recipe
frame.sdl_clipboardtested with version 0.8.3 · checked with FramePort 0.12.0 · 2026-10-06
- Totally BaseballUnityOpenXRWorks2026-10-11
Game Launches and works
Recipe
frame.unity_text_inputframe.oculusosdevice.text_input_windowadapter.haptic_fixtested with version 2.5886 · checked with FramePort 1.0.4 · 2026-10-11
- Toy MasterUnityOpenXRWorks2026-09-28
frame.unity_text_input and device.text_input_window added from detection (not headset-verified).
Recipe
frame.unity_text_inputdevice.text_input_windowtested with version 1.1.2 · 2026-09-28
- ToyTrainsUnityOpenXRWorks2026-10-17
Runs with the default patches; nothing special needed.
Recipe
frame.unity_text_inputframe.hw_video_decodedevice.text_input_windowadapter.haptic_fixtested with version 01.008.009 · checked with FramePort 1.2.1 · 2026-10-17
- TRIANGLE STRATEGYUnrealOpenXRWorks2026-10-10
Works in XR, with and without Arcturus Vision color (switched while playing).
Recipe
overport.patch_remove_unreal_force_quitadapter.haptic_fixtested with version 1.0 · checked with FramePort 0.12.0 · 2026-10-10
- Under CoverUnityOpenXRWorks2026-09-28
Layers with failed swapchains are dropped by the adapter. frame.unity_text_input and device.text_input_window added from detection (not headset-verified).
Recipe
frame.unity_text_inputdevice.text_input_windowtested with version 1.1.3r2 · 2026-09-28
- UNDERDOGSUnityOpenXRWorks2026-10-23
Runs with the default patches; nothing special needed.
Recipe
frame.bhaptics_permissionframe.photon_voice_audio_routeframe.unity_text_inputframe.hw_video_decodedevice.text_input_windowadapter.controller_modelsadapter.haptic_fixtested with version 1.5.4.12573 · checked with FramePort 1.3.0 · 2026-10-23
- Vacation SimulatorUnityOpenXRWorks2026-10-10
Without Lepton's Android window: with it (or after clicking it), the hands stayed on the floor (GitHub #163).
Recipe
adapter.haptic_fixadapter.refresh_ratetested with version 1.3.0.40142 · checked with FramePort 0.12.0 · 2026-10-10
- Vader Immortal: Episode IUnrealVrApiWorks2026-10-09
Plays (owner's headset test): loading card, grip/trigger, hands and the lightspeed sequence fixed. Thumbs follow the touches with frame.unreal_thumb_touch (Klownicle's engine fix). Unreal Engine 4 (GLES). Found and verified in gameplay on a Frame by Klownicle (GitHub issue 49); FramePort reimplements them as patches that match the game's code exactly and change nothing when it differs. The engine's Quest checks (IsRunningOnSantaCruz) answer "not a Quest" on the Frame - the menu waited for a Quest-only shader precompile that never starts (frame.unreal_quest_precompile makes the non-Quest branch report 100 %), and the game's key map picked the empty Gear VR controls (frame.unreal_quest_keymap keeps the Quest set). Two lightspeed shaders, as the Frame's GL driver (Zink) compiles them, read loop counters and accumulators before setting them and hang the GPU; a Vulkan layer under Zink inserts the stores that zero them (frame.zink_shader_fix, zink_shader_fix; the captured modules are from Lepton 2.8.14 and stop matching if a Frame update changes the driver's output - the layer logs that). OVRPlugin asks for poses at its own clock (pose_time_fix). Unreal's Oculus input animates the thumbs from near-touch, which the Frame never reports (frame.unreal_thumb_touch reads the touches instead; binding the proximity to the touch inputs in FrameBridge didn't reach the game). The game leaves GL errors pending; the runtime's GL check took one as its own failure and then allocated a command buffer every frame (~20 MB a second until the frame rate collapsed). gl_error_clear clears them first (GitHub
Recipe
frame.unreal_quest_precompileframe.unreal_quest_keymapframe.unreal_thumb_touchframe.zink_shader_fixoverport.patch_remove_unreal_force_quitadapter.pose_time_fixadapter.gl_error_clearadapter.zink_shader_fixtested with version 1.1.1+667256.cl.387770 · 2026-10-09
- Vader Immortal: Episode IIUnrealVrApiWorks2026-10-09
Plays (owner's headset test, 2026-10-09) with Episode I's fixes, which FramePort finds in this episode's code too. Unreal Engine 4 (GLES), the same engine build as Episode I: the Quest-only shader precompile and key map (frame.unreal_quest_precompile, frame.unreal_quest_keymap), thumbs from the capacitive touches (frame.unreal_thumb_touch) and poses at OVRPlugin's clock (pose_time_fix). Episode I's lightspeed shader fix doesn't apply. The campaign intro once stayed black with its dialogue playing; it rendered on the next run.
Recipe
frame.unreal_quest_precompileframe.unreal_quest_keymapframe.unreal_thumb_touchoverport.patch_remove_unreal_force_quitadapter.pose_time_fixadapter.gl_error_cleartested with version 2.0.3+667261.cl.387778 · 2026-10-09
- Vader Immortal: Episode IIIUnrealVrApiWorks2026-10-09
Plays (owner's headset test, 2026-10-09) with Episode I's fixes, which FramePort finds in this episode's code too. Unreal Engine 4 (GLES), the same engine build as Episode I: the Quest-only shader precompile and key map (frame.unreal_quest_precompile, frame.unreal_quest_keymap), thumbs from the capacitive touches (frame.unreal_thumb_touch) and poses at OVRPlugin's clock (pose_time_fix). Episode I's lightspeed shader fix doesn't apply. The campaign intro starts on a black screen with only dialogue: that is the game, not a bug.
Recipe
frame.unreal_quest_precompileframe.unreal_quest_keymapframe.unreal_thumb_touchoverport.patch_remove_unreal_force_quitadapter.pose_time_fixadapter.gl_error_cleartested with version 3.0.3+667263.cl.387932 · 2026-10-09
- Vampire SurvivorsUnityOpenXRWorks2026-10-12
Runs with the default patches; nothing special needed.
Recipe
frame.unity_text_inputdevice.text_input_windowadapter.haptic_fixtested with version 1.0.717 · checked with FramePort 1.0.4 · 2026-10-12
- Vendetta ForeverUnityOpenXRWorks2026-10-15
Runs with the default patches; nothing special needed.
Recipe
frame.bhaptics_permissionframe.unity_text_inputframe.unity_runtime_msaa_offframe.unity_gl_shimdevice.text_input_windowadapter.haptic_fixtested with version 1.0.4.0 · checked with FramePort 1.1.1 · 2026-10-15
- VermillionUnityOpenXRWorks2026-10-15
The canvas used to hide the hand and brush while painting (the Frame draws the game's canvas layer in front of everything); the recipe makes the game draw canvases in the scene instead (fix found by Klownicle, GitHub #200). Confirmed in the headset by Klownicle.
Recipe
frame.unity_text_inputframe.vermillion_scene_canvasdevice.text_input_windowadapter.haptic_fixadapter.scene_emultested with version 1.7.2 · checked with FramePort 1.0.1 · 2026-10-15
- VR HOT QuestUnityOpenXRWorks2026-10-08
Runs with the default patches; nothing special needed.
Recipe
frame.unity_text_inputframe.oculusosdevice.text_input_windowadapter.controller_modelsadapter.haptic_fixtested with version 0.8.8.1 · checked with FramePort 0.12.0 · 2026-10-08
- VR4UnrealVrApiWorks2026-10-02
Installs the no-ForceQuit build and fixes two campaign shaders that hung the GPU at cutscenes. Entering the campaign gave a black screen, slowing audio and a crash (Mercenaries loaded). Two permutations of one fragment shader read a loop counter before setting it, which hangs the GPU; the Vulkan shim zeroes it (vk_shader_fix). The no-ForceQuit build is kept. Diagnosed and confirmed on a Frame by the reporter of GitHub issue 10.
Recipe
overport.patch_remove_unreal_force_quitadapter.vk_shader_fixtested with version 2.3 · checked with FramePort 0.3.4 · 2026-10-02
- Walkabout Mini GolfUnityOpenXRWorks2026-10-08
Runs with the default patches; nothing special needed.
Recipe
frame.unity_text_inputframe.oculusosdevice.text_input_windowadapter.controller_modelsadapter.haptic_fixadapter.scaletested with version 6.7 · checked with FramePort 0.12.0 · 2026-10-08
- Wallace & Gromit in The Grand GetawayUnrealOpenXRWorks2026-09-28
Missing Meta platform functions stubbed.
Recipe
overport.patch_remove_unreal_force_quittested with version 1.0.34 · 2026-09-28
- Waltz of the Wizard: Extended EditionUnityOpenXRWorks2026-10-11
From what I tested, it just works. My only complaint is that the haptics go pretty crazy. But I don't remember what it was like when I played it in my Quest. So it could be fine. 100% playable.
Recipe
frame.unity_text_inputdevice.text_input_windowadapter.haptic_fixtested with version 5.0.8.1578 · checked with FramePort 1.0.4 · 2026-10-11
- WanderUnityOpenXRWorks2026-10-04
0.3570 (Unity 6.5) runs out of thread keys at start without the thread-key pool (fix found by Klownicle, GitHub
Recipe
frame.unity_text_inputframe.unity_runtime_msaa_offframe.unity_tls_key_pooldevice.text_input_windowtested with version 0.3570 · checked with FramePort 0.6.3 · 2026-10-04
- Zero Caliber 2UnrealOpenXRWorks2026-10-25
Runs with the default patches; nothing special needed.
Recipe
frame.hw_video_decodeframe.unreal_noreserveoverport.patch_remove_unreal_force_quitadapter.haptic_fixadapter.fixed_resolutiontested with version 2.0.1173-S-80237 · checked with FramePort 1.3.0 · 2026-10-25
- ZombielandVRUnityVrApiWorks2026-10-10
Runs with the default patches; nothing special needed.
Recipe
frame.unity_text_inputframe.vrapi_stubdevice.text_input_windowadapter.haptic_fixtested with version 1.7.0 · checked with FramePort 0.12.1.dev252 · 2026-10-10
- AFFECTED: The ManorGear VR game (32-bit only), runs through FramePort's 32-bit bridge (experimental).UnityVrApiWith issues2026-10-10
Gear VR game (32-bit only), runs through FramePort's 32-bit bridge (experimental). Controls: left stick = walk and strafe (the touchpad), right stick sideways = turn, stick press or A = touchpad click, right trigger = trigger, B = back. Unity 5.6 + Mono, VrApi 1.0.4, GLES. The bridge translates its 32-bit libraries and VrApi to the 64-bit VrApi bridge on OpenXR. Picture and sound confirmed in the headset by the owner (2026-10-10); the controller mapping was reworked afterwards and is not yet confirmed.
Recipe
frame.a32_bridgedevice.text_input_windowtested with version 1.52 · 2026-10-10
- Ancient_DungeonMultiplayer isn't available (offline).UnityOpenXRWith issues2026-10-10
Multiplayer isn't available (offline).
Recipe
frame.unity_text_inputdevice.text_input_windowadapter.haptic_fixtested with version ea0.1.10.2 · checked with FramePort 0.12.0 · 2026-10-10
- ArcsmithRight eye distorts during movement (unresolved; swap, tracking, Valve layers, depth and pacing ruled out).UnityVrApiWith issues2026-09-28
Right eye distorts during movement (unresolved; swap, tracking, Valve layers, depth and pacing ruled out). frame.unity_text_input and device.text_input_window added from detection (not headset-verified). Legacy VrApi via OVRPlugin; overport swaps in an OpenXR OVRPlugin. Do not remove VrApi.
Recipe
frame.unity_text_inputdevice.text_input_windowtested with version 1.128 · 2026-09-28
- BattleTalentPlays normally.UnityOpenXRWith issues2026-10-17
Plays normally. The mixed-reality mode doesn't appear in the start menu (also with an APK from a Quest 3); MR progress in #355. LAN multiplayer works; online rooms need Meta's account check (user proof), so online multiplayer can't work (#408).
Recipe
frame.unity_text_inputframe.hw_video_decodeframe.luajit_pointersframe.unity_runtime_msaa_offframe.meta_permissionsframe.unity_multipassdevice.text_input_windowadapter.haptic_fixadapter.scene_emultested with version 4.7 · checked with FramePort 1.2.1 · 2026-10-17
- Does it Stack?Mixed reality mode does not work (works on Demeo), everything else seems to be OKUnityOpenXRWith issues2026-10-09
Mixed reality mode does not work (works on Demeo), everything else seems to be OK
Recipe
frame.unity_text_inputframe.oculusosdevice.text_input_windowadapter.haptic_fixadapter.refresh_ratetested with version 1.02 (3683) · checked with FramePort 0.12.0 · 2026-10-09
- Dungeons of EternityIt can not connect to serversUnityOpenXRWith issues2026-10-11
It can not connect to servers
Recipe
frame.vivox_audio_routeframe.unity_text_inputdevice.text_input_windowadapter.haptic_fixadapter.pose_time_fixtested with version 1.3 · checked with FramePort 1.0.4 · 2026-10-11
- End SpaceControls stop responding after the first mission loads.UnityVrApiWith issues2026-10-10
Controls stop responding after the first mission loads.
Recipe
frame.unity_oculus_checkframe.unity_text_inputframe.unity_runtime_msaa_offframe.unity_gl_shimdevice.text_input_windowadapter.haptic_fixtested with version 1.0.6.1 · checked with FramePort 0.12.0 · 2026-10-10
- Eternal StarlightVoice commands do not appear to work.UnityOpenXRWith issues2026-10-24
Voice commands do not appear to work.
Recipe
frame.bhaptics_permissionframe.unity_text_inputdevice.text_input_windowadapter.haptic_fixtested with version 1.7.404 · checked with FramePort 1.3.0 · 2026-10-24
- Exploding Kittens VRRequires online for most modes.UnrealOpenXRWith issues2026-10-16
Requires online for most modes. Practice lobby does work though.
Recipe
frame.hw_video_decodeoverport.patch_remove_unreal_force_quitadapter.haptic_fixtested with version 1.4.25779 · checked with FramePort 1.2.0 · 2026-10-16
- ExploreVRThe 3D world warps and shifts with head movement (wrong perspective).UnrealVrApiWith issues2026-10-10
The 3D world warps and shifts with head movement (wrong perspective).
Recipe
frame.nodebugoverport.patch_remove_unreal_force_quitadapter.haptic_fixtested with version 1.2.1 · checked with FramePort 0.12.0 · 2026-10-10
- FGO VRAudio stuttering and popping soundsOtherOpenXRWith issues2026-10-17
Audio stuttering and popping sounds
Recipe
adapter.scaletested with version 0.2.0-fgo-resolution · checked with FramePort 1.2.1.dev433 · 2026-10-17
- FishermanLoading screens have corruption, but everything works otherwise.UnrealVrApiWith issues2026-10-11
Loading screens have corruption, but everything works otherwise.
Recipe
overport.patch_remove_unreal_force_quitadapter.haptic_fixtested with version 1.087 · checked with FramePort 0.12.0 · 2026-10-11
- GoldenEye VRNo sound; otherwise works great.OtherOpenXRWith issues2026-10-18
No sound; otherwise works great.
Recipe
frame.sdl_clipboardtested with version 0.5.8 · checked with FramePort 1.2.1 · 2026-10-18
- HardBulletLoading screens (a cube overlay) are missing or corrupted up to FramePort 1.2.1; cube_quads (next release) shows them as six panels, not confirmed in the hea…UnityOpenXRWith issues2026-10-17
Loading screens (a cube overlay) are missing or corrupted up to FramePort 1.2.1; cube_quads (next release) shows them as six panels, not confirmed in the headset yet. Level loads stall frame submission for up to ~1 s, so the view freezes during loads.
Recipe
frame.unity_text_inputframe.hw_video_decodedevice.text_input_windowadapter.haptic_fixtested with version 1.0.9.704Q · checked with FramePort 1.2.1 · 2026-10-17
- Homeworld: Vast ReachesThe game starts but after selecting to start a new game it seems to crash.UnityOpenXRWith issues2026-10-15
The game starts but after selecting to start a new game it seems to crash.
Recipe
frame.unity_text_inputdevice.text_input_windowadapter.haptic_fixtested with version 1.2.0-25215 · checked with FramePort 1.1.1 · 2026-10-15
- JKXRTested in the early part of Jedi Outcast.OtherOpenXRWith issues2026-10-20
Tested in the early part of Jedi Outcast. Two players report stutters and freezes after 3-15 minutes of play (under investigation in issue 441).
Recipe
frame.tbxr_vendortested with version 1.1.28 · checked with FramePort 1.3.0 · 2026-10-20
- Lawn Mowing Simulator VRLeft eye textures flicker only when mowing in specific areas.UnityOpenXRWith issues2026-10-16
Left eye textures flicker only when mowing in specific areas.
Recipe
frame.unity_text_inputdevice.text_input_windowadapter.haptic_fixadapter.pose_consistencyadapter.hide_space_warptested with version 1.0.50 · checked with FramePort 1.2.0 · 2026-10-16
- MacacoVR2d loading screens are glitchy, otherwise main gameplay is fineUnrealOpenXRWith issues2026-10-12
2d loading screens are glitchy, otherwise main gameplay is fine
Recipe
frame.unreal_skip_obb_checkframe.hw_video_decodeoverport.patch_remove_unreal_force_quitadapter.haptic_fixtested with version 1.1325 · checked with FramePort 1.0.4 · 2026-10-12
- Majora's Mask VRAudio on the file select screen sounds crunchy.OtherOpenXRWith issues2026-10-13
Audio on the file select screen sounds crunchy. Controls may need rebinding in the game. Quest build from https://github.com/fulldivegames/Majoras-Mask-VR.
Recipe
frame.sdl_clipboardadapter.refresh_ratetested with version 0.36 · checked with FramePort 1.1.0 · 2026-10-13
- MystMinor graphical glitches on some objects.UnrealOpenXRWith issues2026-10-04
Minor graphical glitches on some objects. The crash is in the Frame's SteamVR runtime (vrclient.so CVRInputLatest::UpdateActionStateInternal via xrSyncActions) on the first input sync after focus, in 2 of 4 headset sessions. sync_guard serialises input syncs with event polling and pauses them for 250 ms after focus returns (confirmed in the headset, no crash). The object glitches are not application space warp (turning it off didn't change them and ran slightly worse).
Recipe
overport.patch_remove_unreal_force_quitadapter.sync_guardtested with version 3.3.0 · 2026-10-04
- Phantom: Covert OpsDLC/store button crashes (no Meta store).UnrealVrApiWith issues2026-09-28
DLC/store button crashes (no Meta store). Installs the no-ForceQuit build. The regular build quits itself on the Frame (System.exit after a failed platform check), so the no-ForceQuit build is installed. Shares Vader Immortal's Unreal 4 Oculus input (GitHub 49) - thumbs follow the touches (frame.unreal_thumb_touch) and controller poses are located at the right time (pose_time_fix); added 2026-10-09 from Vader's headset results, not yet checked in this game.
Recipe
frame.unreal_thumb_touchoverport.patch_remove_unreal_force_quitadapter.pose_time_fixtested with version 1.2 · 2026-09-28
- Pinball FX VRPlays; space warp off (fewer stutters).UnrealOpenXRWith issues2026-10-05
Plays; space warp off (fewer stutters). MR mode: needs a scanned room.
Recipe
overport.patch_remove_unreal_force_quitadapter.scene_emuladapter.equirect_emuladapter.hide_space_warptested with version 1.9 · checked with FramePort 0.9.1 · 2026-10-05
- PlezySome videos play with strong artifacts and wrong colours; the cause is unknown, possibly hardware video decoding.Other?With issues2026-10-13
Some videos play with strong artifacts and wrong colours; the cause is unknown, possibly hardware video decoding. Otherwise works.
Recipe
frame.hw_video_decodetested with version 2.22.0 · checked with FramePort 1.1.0 · 2026-10-13
- Port0r: Time Crisis II VRGameplay runs well; cut scenes and the title and game-selection screens after inserting coins don't display properly.OtherOpenXRWith issues2026-10-25
Gameplay runs well; cut scenes and the title and game-selection screens after inserting coins don't display properly.
tested with version 0.1.0 · checked with FramePort 1.3.0 · 2026-10-25
- Port0r: Time Crisis VRImmersive mode shows a black screen (only the arm and gun); the flat and 3D screen modes work (game menu, setup button).OtherOpenXRWith issues2026-10-25
Immersive mode shows a black screen (only the arm and gun); the flat and 3D screen modes work (game menu, setup button).
Recipe
adapter.refresh_ratetested with version 0.2.2 · checked with FramePort 1.3.0 · 2026-10-25
- PrimedGun v2Vulkan via a statically linked Khronos OpenXR loader, which bypasses FrameBridge (the picture jumps).OtherOpenXRWith issues2026-10-23
Vulkan via a statically linked Khronos OpenXR loader, which bypasses FrameBridge (the picture jumps). The embedded-loader patch is off for now: with it, the game's loader and the one FramePort adds call each other until the game crashes at Play (GitHub #254). Keep the Vulkan library rename disabled: this game assembles its library name from two pieces, so renaming it prevented Vulkan from loading and VR could not start.
Recipe
frame.sdl_clipboardtested with version 2.0.0-alpha.4 · 2026-10-23
- Puzzling PlacesWorks fine, but pointers dont show well on main menu, easy to work around.UnrealOpenXRWith issues2026-10-16
Works fine, but pointers dont show well on main menu, easy to work around.
Recipe
frame.unreal_skip_obb_checkframe.unreal_ovrp_entrypointsframe.hw_video_decodeoverport.patch_remove_unreal_force_quitoverport.patch_disable_space_warpadapter.equirect_emuladapter.haptic_fixtested with version 2.14 · checked with FramePort 1.2.0 · 2026-10-16
- Quantum Voidno handsUnityOpenXRWith issues2026-10-14
no hands
Recipe
frame.bhaptics_permissionframe.unity_text_inputdevice.text_input_windowadapter.haptic_fixadapter.pose_time_fixtested with version 1.11 · checked with FramePort 1.1.1 · 2026-10-14
- RagnarockUnrealVrApiWith issues2026-10-15
Runs with the default patches; nothing special needed.
Recipe
frame.unreal_skip_obb_checkframe.bhaptics_permissionframe.hw_video_decodeoverport.patch_remove_unreal_force_quitadapter.haptic_fixtested with version 2.8.0 · checked with FramePort 1.1.1 · 2026-10-15
- Real VR FishingSeems to be almost 100% functional with meta permissions enabled.UnityOpenXRWith issues2026-10-16
Seems to be almost 100% functional with meta permissions enabled. In the new Mixed Reality mode, the room scan doesn't seem to do anything and I can't seem to manually place anything either.
Recipe
frame.vivox_audio_routeframe.unity_text_inputframe.oculusosframe.meta_permissionsdevice.text_input_windowadapter.haptic_fixadapter.scene_emuladapter.controller_modelstested with version 3.06096 · checked with FramePort 1.2.0 · 2026-10-16
- SilhouetteHand-tracking game; the Frame synthesizes hands from controllers, so it is janky.UnityOpenXRWith issues2026-09-28
Hand-tracking game; the Frame synthesizes hands from controllers, so it is janky. frame.unity_text_input and device.text_input_window added from detection (not headset-verified). Hand-tracking-only game; Steam Frame has no optical hand tracking. Built with controller_fix=0 so hand data passes through if the runtime ever provides it.
Recipe
frame.unity_text_inputdevice.text_input_windowadapter.controller_fixtested with version 1.3.0 · 2026-09-28
- SmartTubeAndroid's home screen shows for a few seconds while the app starts (normal for flat Android apps; longest on the first start after an install).Other?With issues2026-10-16
Android's home screen shows for a few seconds while the app starts (normal for flat Android apps; longest on the first start after an install). Froze once in the reporter's session.
Recipe
frame.hw_video_decodetested with version 32.56 · checked with FramePort 1.2.0 · 2026-10-16
- Spunky DungeonGear VR / Oculus Go game (32-bit only), runs through FramePort's 32-bit bridge (experimental).UnityVrApiWith issues2026-10-10
Gear VR / Oculus Go game (32-bit only), runs through FramePort's 32-bit bridge (experimental). Controls: left stick = walk and strafe (the touchpad), right stick sideways = turn, stick press or A = touchpad click, right trigger = trigger, B = back. Unity 2019.2 + Mono, OVRPlugin 1.46 on VrApi 1.31, GLES, Meta Platform SDK (OVRPort's 32-bit dispatcher). Played in the headset by the owner (2026-10-10): picture at 72 fps, floor-level tracking and walking work; turning without a stick press was added afterwards and is not yet confirmed.
Recipe
frame.a32_bridgedevice.text_input_windowtested with version 1.4 · 2026-10-10
- Swarm 2MSAA creates visible seams around edge geometry and also the skybox edgeUnityVrApiWith issues2026-10-12
MSAA creates visible seams around edge geometry and also the skybox edge
Recipe
frame.unity_text_inputframe.unity_runtime_msaa_offframe.unity_gl_shimdevice.text_input_windowadapter.haptic_fixtested with version 8472 · checked with FramePort 1.0.4 · 2026-10-12
- The 7th Guest VRRuns and is playable.UnrealOpenXRWith issues2026-10-16
Runs and is playable. Foveated rendering (fixed and eye-tracked) sits offset toward the bottom right, and changing the foveated region size has no visible effect.
Recipe
frame.unreal_skip_obb_checkframe.hw_video_decodeoverport.patch_remove_unreal_force_quitadapter.haptic_fixadapter.scaletested with version 1.1.3.12072 · checked with FramePort 1.2.0 · 2026-10-16
- The Light BrigadeJudder in weaponsUnityOpenXRWith issues2026-10-09
Judder in weapons
Recipe
frame.unity_text_inputdevice.text_input_windowadapter.haptic_fixtested with version 746 · checked with FramePort 0.12.0 · 2026-10-09
- The Thrill Of The FightRight eye doesn't draw the opponent or the referee.UnityOpenXRWith issues2026-10-10
Right eye doesn't draw the opponent or the referee.
Recipe
frame.unity_text_inputframe.unity_runtime_msaa_offframe.unity_gl_shimframe.unity_no_overlay_copydevice.text_input_windowadapter.haptic_fixtested with version 251113.0 · checked with FramePort 0.12.0 · 2026-10-10
- Time StallBoth eyes distort during movement (unresolved).UnrealVrApiWith issues2026-09-28
Both eyes distort during movement (unresolved). Legacy VrApi via OVRPlugin. Shares Vader Immortal's Unreal 4 Oculus input (GitHub 49) - thumbs follow the touches (frame.unreal_thumb_touch) and controller poses are located at the right time (pose_time_fix); added 2026-10-09 from Vader's headset results, not yet checked in this game.
Recipe
frame.unreal_thumb_touchframe.nodebugoverport.patch_remove_unreal_force_quitadapter.pose_time_fixtested with version 1.0 · 2026-09-28
- Umurangi Generation VRThe game freezes after taking a photo, while it saves it, which makes it hard to play.UnityOpenXRWith issues2026-10-22
The game freezes after taking a photo, while it saves it, which makes it hard to play.
Recipe
frame.unity_text_inputdevice.text_input_windowadapter.haptic_fixtested with version 1.163 · checked with FramePort 1.3.0 · 2026-10-22
- Vampire: The Masquerade - JusticeGame runs fine and playable, on loading there's a random sphere in the middle of the sceen.UnrealOpenXRWith issues2026-10-17
Game runs fine and playable, on loading there's a random sphere in the middle of the sceen. Also control input images are missing so you get text like press <img>wmr.Rstick...
Recipe
frame.bhaptics_permissionframe.hw_video_decodeoverport.patch_remove_unreal_force_quitadapter.haptic_fixadapter.scaletested with version 1.00.1653 · checked with FramePort 1.2.0 · 2026-10-17
- WiiCompiled VRTo add a game: in FramePort's Files tab, upload your .wcgame file to this game's storage, folder Android/data/org.wiicompiled.quest/files/WiiCompiledOpenXRVR…OtherOpenXRWith issues2026-10-04
To add a game: in FramePort's Files tab, upload your .wcgame file to this game's storage, folder Android/data/org.wiicompiled.quest/files/WiiCompiledOpenXRVR/Import, then open WiiCompiled (it imports the newest file there; one at a time). Once your game is imported, turn on "Start straight in VR" (and off "Show the app's Android window") and update it on the Frame: it then opens in VR without the flat launcher window, which otherwise stays in view (turn it off again to import another game). The right eye jitters during races. A native Mario Kart Wii recompilation (needs your own disc as .wcgame files built by the WiiCompiled launcher on a computer). Lepton's Android has no document picker, so the launcher's "Import from computer" and "select disc image" buttons fail (ActivityNotFoundException for OPEN_DOCUMENT); its Import folder is read when the launcher opens instead. The game's libmain.so has its own OpenXR loader and talks to the Frame's runtime directly (FrameBridge isn't in its path); the right-eye jitter in races comes from its stereo replay of the race view, so it needs a fix in WiiCompiled itself. The launcher is a flat Android window (shown with lepton-show-flatscreen) that stays in view after it starts the VR part (QuestActivity, process :game); frame.start_activity makes QuestActivity the start activity (owner-verified 2026-10-05, opens straight in VR), but it skips the launcher's import step, so it stays off by default.
Recipe
frame.sdl_clipboardframe.vk_sanitizedevice.text_input_windowtested with version 0.4.0-quest · 2026-10-04
- BreachersOnline-only multiplayer that needs Meta's online services, which aren't available on the Frame.UnityOpenXRDoesn't run2026-10-17
Online-only multiplayer that needs Meta's online services, which aren't available on the Frame. The game's own copy of Meta's platform library (libovr_custom.so) quits at start ("Failed to launch SystemActivities").
tested with version 40.0.23 · 2026-10-17
- Deadly DeliveryQuits after Meta's entitlement check fails: it needs Meta's online services.UnityOpenXRDoesn't run2026-10-15
Quits after Meta's entitlement check fails: it needs Meta's online services.
tested with version 1.0.30 · 2026-10-15
- Espire 1: VR Operative (Quest Edition)Mesa GL driver crash during texture upload.UnrealVrApiDoesn't run2026-09-28
Mesa GL driver crash during texture upload. Legacy VrApi via OVRPlugin.
Recipe
overport.patch_remove_unreal_force_quittested with version 1.13.36 · 2026-09-28
- GOLF+Black screen.UnityOpenXRDoesn't run2026-10-10
Black screen. The game's servers reject the login on this platform (Authentication not supported).
2026-10-10
- HITMAN 3 VR: ReloadedVulkan driver crash (freedreno), even without Valve layers.OtherOpenXRDoesn't run2026-09-28
Vulkan driver crash (freedreno), even without Valve layers. Glacier engine, Vulkan renderer; Quest 3-only title. Release notes: may require a CLEAN install (remove any previous install first).
tested with version 0.0.3469 main-14813cc56 · 2026-09-28
- PianoVisionStarts, but needs camera hand tracking (Android games on the Frame only get hands built from the controllers) and USB MIDI from a piano, which the Frame's An…UnityOpenXRDoesn't run2026-10-20
Starts, but needs camera hand tracking (Android games on the Frame only get hands built from the controllers) and USB MIDI from a piano, which the Frame's Android container doesn't pass through.
tested with version 3.0.8 · 2026-10-20
- RobloxCrashes on its first VR frame on the Frame.OtherOpenXRDoesn't run2026-10-04
Crashes on its first VR frame on the Frame. SIGSEGV on Roblox's render thread right after it re-creates its eye swapchains (format 37, which the Frame doesn't offer, retried as sRGB 43) — in its own code or inside the runtime's xrBeginFrame. No integrity or login check involved; also needs an online login once it runs.
tested with version 2.741.1051 · 2026-10-04
- Thief SimulatorQuits at start with the game's own "installed from unknown source" message.UnityOpenXRDoesn't run2026-10-17
Quits at start with the game's own "installed from unknown source" message. Lepton installs the game itself at every start (there is no Meta store app on the Frame), so the game never sees the Meta store as its source.
tested with version 1.1.7.3 · 2026-10-17
No tested game matches. The game may still work: FramePort suggests patches.
Compare the tools
FramePort patches the games that don't run as they are
Other tools install an app unchanged. FramePort also converts and patches the app, and FramePort is free and open source (GPL-3.0).
-
Free and open source
FramePortGPL-3.0. Read it, build it, change it, share it.
FrameDropFree (donationware). Source not published.
Valve's toolsFree, from Valve.
-
Quest games that don't run as they are
FramePortPatches them for the Frame, with tested recipes for hundreds of games.
FrameDropInstalls the APK as it is.
Valve's toolsInstalls the APK as it is.
-
Your PC
FramePortWindows, macOS and Linux.
FrameDropWindows.
Valve's toolsDepends on the tool.
-
Wi-Fi or a USB cable
FramePortHome Wi-Fi, the Frame's own hotspot or a USB cable.
FrameDropSame Wi-Fi network.
Valve's toolsWi-Fi, or adb.
Show all 12 differencesHide the full table▾
| Question | FramePortThis project | FrameDropSideloader by CadeXR | By hand with Valve's toolsSteamOS Devkit Client, or adb with Lepton Development |
|---|---|---|---|
| What does it cost, and can I see the code? | Yes: Free, open source (GPL-3.0) | Partly: Free (donationware), source not published | Yes: Free, from Valve |
| Which PC can I use? | Yes: Windows, macOS, Linux | Partly: Windows | Partly: Depends on the tool |
| How do I connect the Frame the first time? | Yes: Run one line in the Frame's Konsole, click Allow on your PC. No password | Partly: Turn on Developer Mode, then Settings → Developer → Pair new host | Partly: Turn on Developer Mode and pair, or use Android's debug tool (adb) |
| Wireless or cable? | Yes: Wi-Fi, the Frame's hotspot or a USB cable | Partly: Same Wi-Fi network | Partly: Wi-Fi, or adb |
| Will a Quest game that doesn't run on the Frame work? | Yes: Converted and patched for the Frame | No: Installs the APK as it is | No: Installs the APK as it is |
| Does it know which patches a game needs? | Yes: Tested recipes for hundreds of games, updated without an app update | Not stated: Not stated | No: No |
| Will the game be in my Steam library? | Yes: Yes, with artwork and tags | Partly: As a "Devkit Game" shortcut | Partly: As "Devkit Game: <title>"; not with adb |
| Android apps, Linux apps, Windows programs? | Yes: All three; FramePort installs Proton for Windows programs | Yes: All three; you install Proton first | Partly: Yes; 2D Android apps need an extra file |
| PC VR games? | Yes: On your PC; some also on the Frame | No: Not supported | No: Not supported |
| Do "Install with …" buttons on websites work? | Yes: Yes (frameport.app links) | Yes: Its own | No: No |
| What if a game doesn't start? | Yes: A launch test reads the logs and suggests a patch | Partly: A log viewer shows the log | No: No help |
| Can I see and use the Frame from my PC? | Yes: Live view, Monitor, Files, Screenshots, Type on Frame | Not stated: Not stated | No: No |
Other tools as their own pages describe them, checked 2026-10-09: FrameDrop: about · FrameDrop: how-to · Valve: loading games on Steam Frame. Out of date? Report a problem
Get started
From the download to your first game
Step 1 · On your PC
Download FramePort
Windows, macOS or Linux. Unpack the download anywhere and start FramePort. No installer; FramePort updates itself.
First start: open FramePort.exe. If Windows says "Windows protected your PC", choose More info → Run anyway.
Release notes and checksumsStep 2 · On your PC
Steam Frame → Start setup
FramePort shows the setup line and waits for the Frame. Both need the same Wi-Fi, the Frame's hotspot or a USB cable.
Try it: click Start setup in the window.
curl -fsSL https://frameport.app/s | bash
Waiting for your Frame to ask…
Step 3 · On the Frame, once
Run the setup line
Open Konsole: SteamVR dashboard → Launch a program → Desktop, then app menu → System → Konsole. Run this line:
$curl -fsSL https://frameport.app/s | bashThe setup line finds FramePort on your PC and waits: nothing changes on the Frame until you click Allow. Then it turns on Developer Mode. No password, no root. Read the script
No keyboard? Open the setup page in Chromium on the Frame (Steam's + on the taskbar installs it) and copy the line.
Open Settings → Developer → Pair new host on the Frame and approve FramePort in the headset. Nothing to click on the PC; skip step 4.
Step 4 · On your PC
Allow the Frame when the codes match
Konsole and FramePort show the same 4 digits. Click Allow. Nothing changes on the Frame before that.
Try it: the Frame here shows 4831.
Step 5 · On the Frame, by itself
The setup finishes on its own
Developer Mode turns on and Steam restarts once. If Steam asks to install Lepton (Valve's Android app support), confirm it. FramePort connects within a minute.
Step 6 · Every game
Add games, install, play
Add games → Scan a folder…, pick a game, click Install on Frame. It shows up in the Frame's Steam library. Play the game from FramePort or in the headset.
▶ Watch the videoOther ways to connect, such as a USB cable, are on the setup page.
For game makers
An "Install with FramePort" button
Put it on your download page. A click opens FramePort, which installs your game on the visitor's Frame.
How to add the buttonShow the HTML ▾
<a href="https://frameport.app/install/?manifest=https%3A%2F%2Fexample.com%2Fmy-game.json">
<img src="https://frameport.app/media/install-with-frameport.svg"
alt="Install with FramePort" width="216" height="60">
</a>
What's new
FramePort 1.4.0
- Games are paused before they close, as on a Quest, also with Steam's Exit game, so saves written on pause are kept.
- App bundles: .xapk, .apks, .apkm and split-APK folders install as one app; expansion files with a download's copy suffix get the name the game looks for.
- Menus: FramePort's own right-click and "…" menus with submenus; long items wrap at any scale.
- Typing window: SteamVR's theater mode no longer takes the controllers from games that show their Android window.
- 1.3.0 Mixed reality (experimental): a new Room tab scans your room in the headset, shows it in 3D, cleans up the scan and lets you fix furniture, screen and door labels; mixed-reality games get the room through full Meta scene emulation (thanks @alicecatpaw).
- 1.2.1 Save backups for Quest games: back up a game's saves from the Frame and put them back later.
- 1.2.0 Run many 32-bit Gear VR, Oculus Go and older Quest games (experimental, thanks UnicronNL): a built-in 32-bit translator now runs AFFECTED The Manor, Gunjack, Spunky Dungeon, Sports Scramble, Journey of the Gods and Shadow Point.