Found in the end-to-end test (0.3.1 -> 0.3.2): PowerShell started with DETACHED_PROCESS from the packaged app exits without running the script, so the app quit and nothing was updated. apply() now waits until the script logs that it runs and raises otherwise. The smoke test uses the same non-waiting launch as the app. The Linux bundle built on 24.04 needed GLib 2.80.
FramePort
FramePort installs Meta Quest standalone games and Oculus Rift PC VR games on the Valve Steam Frame. It patches a game so it runs on the Frame's runtimes, copies it to the headset over Wi-Fi and adds it to the Frame's Steam library with artwork.
Purpose
FramePort is a proof of concept: it shows that VR software built for other platforms (Meta Quest, Oculus Rift) can run on the Steam Frame with a translation layer and a few targeted fixes. Most of the work is done by the projects FramePort wraps (see Built on); FramePort selects and applies their fixes per game, adds Steam Frame-specific patches, and handles installing, testing and launching.
FramePort is not a piracy tool. It does not download, share or unlock games, and it does not remove DRM, licence or entitlement checks. Use it only with games you own. Games that check their licence through the Oculus Platform SDK are marked as not runnable on the Frame.
Getting started
-
Download the archive for your computer from the latest release and extract it anywhere:
Computer File Start Windows 10/11 (x64) FramePort-windows-x64.zipFramePort.exemacOS (Apple Silicon) FramePort-macos-arm64.zipFramePort.appLinux (x64) FramePort-linux-x64.tar.gzFramePort/FramePortThe builds are self-signed, so the first start shows a warning: Windows → More info → Run anyway; macOS → right-click the app → Open. Details: docs/INSTALL.md.
-
Get the tools: on first start FramePort downloads what it needs (Java runtime, OVRPort, apksigner) into its own folder. Nothing is installed system-wide.
-
Connect the Frame: turn on Developer Mode on the Frame (Settings → System → Developer). In FramePort open Steam Frame; if the Frame isn't listed, switch it to Desktop mode, open Konsole and paste the one command FramePort shows. This is needed once.
-
Add games: Add games → Scan a folder with your Quest game backups (APK + OBB) or Rift game folders. FramePort identifies each game and fetches its artwork and store details.
-
Install: open a game and click Install on Frame. FramePort patches, checks, uploads and adds the game to the Frame's Steam library, then runs a short launch test.
-
Play: put the headset on and start the game from the Steam library (or click Play on Frame).
FramePort updates itself: when a new version is released, the Library shows Update now.
What works
The built-in catalog has tested settings for 38 games (27 work, 5 work with known issues, 6 can't run on the Frame). Other games get suggested patches from detection rules; each suggestion states its reason, and every patch can be switched on or off under Customize.
- Quest games run in Valve's Android runtime (Lepton). 32-bit-only Quest games can't run (the Frame has no 32-bit ARM support).
- Rift games run through Proton on the Frame (experimental) or on a Windows PC with SteamVR, streamed to the Frame. Games that use the Oculus Platform SDK need the Oculus app and a licence, so they run on the PC only.
- Automated launch tests confirm a game starts; visuals can only be checked in the headset.
Built on
FramePort is a front end for other projects; most of the functionality comes from them:
| Project | Used for |
|---|---|
| OVRPort (overport, originally ovrport/app) | Converts Quest games to OpenXR: its CLI applies the game patches and supplies the OpenXR loader; FramePort also includes its VrApi→OpenXR adapter |
| Valve Lepton, Proton and SteamVR | Run Android games, Windows games and OpenXR on the Frame |
| Revive (LibreVR) | Runs Oculus Rift games on OpenXR / SteamVR |
| Mesa (Zink) | OpenGL ES on Vulkan on the Frame |
| Khronos OpenXR SDK | OpenXR headers for the native layers |
| Eclipse Temurin, Android apksigner, Android NDK | Java runtime, APK signing, building the native layers |
| Flet | The desktop app |
| OculusDB, Steam store | Game descriptions, genres and artwork |
FramePort's own parts: game detection and recipes, the Steam Frame OpenXR adapter (FrameBridge) and the other native
fixes in native/, the installer agent that runs on the Frame, and the desktop/command-line app.
Command line
The same functions are available as frameport (included in the source tree; also released as a Python wheel):
frameport scan, frameport build, frameport install, frameport test, frameport update. Run
frameport --help for the full list.
Documentation
- docs/INSTALL.md: installing, first launch, updating, Rift games, sending files, reporting problems.
- docs/PLAYBOOK.md: symptoms and fixes per game.
- docs/FRAME_RUNTIME.md: Steam Frame runtime facts.
- docs/ARCHITECTURE.md: how the code is organised.
Development
uv sync --extra dev
uv run frameport-gui # the app
uv run pytest # tests
See CLAUDE.md for project notes and native/README.md for the native components.
License
GPL-3.0-only (it includes GPL-3.0 code from OVRPort). Not affiliated with Valve or Meta.



