Native VR ports of Half-Life 2, Lost Coast, Entropy : Zero, Portal, Portal 2, Episode One, and Episode Two for standalone Meta Quest and PICO headsets. Builds are published on the Releases page.
Join our community on Discord for support and discussion.
The release does not include the retail depots needed to play. You need your own Steam copy of every game you want to play.
Portal 2 is highly experimental and is not ready for standard gameplay. Treat it as an early test build, not as a campaign-ready release.
PICO support is experimental, untested, and may not work.
- A Meta Quest or PICO headset with Developer Mode enabled (developed and tested on Quest 3).
- Half-Life 2 on Steam. The normal/default 20th Anniversary (non-legacy)
files work for Half-Life 2, but
steam_legacyis recommended (PatchVersion8491853). To use it, open Half-Life 2 → Properties → Betas in Steam, selectsteam_legacy, and let the game update. Half-Life 2's files are also required by Lost Coast, Portal, Episode One, and Episode Two. - Portal on Steam if you want to play Portal. Both Half-Life 2 content branches work with Portal.
- Portal 2 on Steam if you want to test the experimental Portal 2 support.
- Entropy : Zero on Steam if you want to play it. Its Half-Life 2, Episode One, and Episode Two dependencies must also be installed.
- Episode One and/or Episode Two from your Half-Life 2 installation if you want
to play them. Both the Anniversary and
steam_legacyfiles work. - Lost Coast from your Half-Life 2 installation if you want to play it. Both content branches work.
- Enough headset space for the APK, its staged VR files, and your retail game folders. The installer shows the exact staging requirement; keep at least 1 GiB of extra free space during installation and updates.
Download the latest release from the Releases page; its release notes describe what changed.
The SourceVR APK contains one launcher for all seven games. SourceVRCore contains
the original six games, without Entropy : Zero. Both editions use the package
com.sourcevrport.hl2vr, so installing one replaces the other and preserves
existing app data. You can install either with SideQuest, adb, or another APK
sideloading tool. To install or update it with adb:
adb install -r SourceVR-<version>.apkPICO headsets use SourceVR-pico-<version>.apk instead. PICO support is
experimental and untested.
For the six-game edition, use SourceVRCore-<version>.apk on Quest or
SourceVRCore-pico-<version>.apk on PICO. The in-app updater stays on the
installed edition.
Use -r for updates so Android preserves your existing app data. Do not uninstall
an existing SourceVRPort app to work around an update or signing error.
The launcher’s Game directory setting can use game files already stored in a
writable headset folder. Choose either a folder containing common/ or one with
game folders such as hl2/ directly inside it. For a flat folder, saves stay in
the default SourceVRPort/user/ directory. You can reset the setting to the
default location in the same dialog.
Older releases installed Portal and each episode as separate Android apps. If you have one of those apps, transfer its saves and settings before installing the unified APK.
Do not uninstall the old app first. Uninstalling deletes the only app-owned copy of its saves that Android lets the transfer tool read.
For each old Portal or episode app you have installed:
-
Update it in place with the matching transfer APK.
adb install -r SourceVRPort-save-transfer-portal-<version>.apk adb install -r SourceVRPort-save-transfer-ep1-<version>.apk adb install -r SourceVRPort-save-transfer-ep2-<version>.apk
-
Open the transfer tool from Library → Unknown Sources, grant its requested file access, and choose Copy and verify user data.
-
Wait for the transfer to report success. If you have more than one old app, complete each transfer.
-
Install the unified
SourceVRAPK withadb install -r. -
Launch each transferred game and confirm its saves before removing a transfer app.
The transfer APKs contain no game or engine. Fresh installs do not need them.
On first launch, grant Allow access to manage all files. SourceVRPort keeps one
shared copy of your retail folders at /sdcard/SourceVRPort/common/:
| Folder | Needed by |
|---|---|
hl2 |
Half-Life 2, Lost Coast, Portal, Episode One, and Episode Two |
platform |
Half-Life 2, Lost Coast, Portal, Episode One, and Episode Two |
portal |
Portal |
episodic |
Episode One and Episode Two |
ep2 |
Episode Two |
lostcoast |
Lost Coast |
EntropyZero |
Entropy : Zero |
update |
Portal 2 |
portal2_dlc2 |
Portal 2 (optional) |
portal2_dlc1 |
Portal 2 (optional) |
portal2 |
Portal 2 |
portal2_platform |
Portal 2 (imported from its platform folder) |
You can copy folders to the headset with adb, MTP, SideQuest, or another file-transfer tool. Then choose Import a folder… in SourceVRPort and select an individual game folder or a parent folder containing several of them. Repeat until every folder required by the games you want is installed.
Copy the required folders from your Half-Life 2 installation. Both the normal
Anniversary and steam_legacy files work; steam_legacy is recommended:
- Windows:
C:\Program Files (x86)\Steam\steamapps\common\Half-Life 2\ - macOS:
~/Library/Application Support/Steam/steamapps/common/Half-Life 2/
Import hl2 and platform for Half-Life 2. Also import lostcoast for Lost Coast,
episodic for Episode One, and both episodic and ep2 for Episode Two.
Import the EntropyZero folder from your Steam installation of Entropy : Zero,
along with hl2, platform, episodic, and ep2 from Half-Life 2. The folder
name is case-sensitive. Entropy : Zero appears under Half-Life in the SourceVR
launcher; SourceVRCore preserves installed content but does not offer the game.
Portal needs its portal folder and Half-Life 2 content. Both Half-Life 2
branches work:
-
If you already imported complete
hl2andplatformfolders from Half-Life 2, keep them. Otherwise, import thehl2andplatformfolders shipped with Portal. Before playing Half-Life 2, Lost Coast, or the Episodes, import a complete Half-Life 2hl2folder in place of Portal's partial copy. -
Import
portalfrom your Portal installation:- Windows:
C:\Program Files (x86)\Steam\steamapps\common\Portal\ - macOS:
~/Library/Application Support/Steam/steamapps/common/Portal/
- Windows:
Once all three folders are installed, select Portal in the launcher and wait for its content check to report ready.
Portal 2 is not ready for standard gameplay. Install it only if you want to test the current experimental support.
-
Find your Portal 2 installation:
- Windows:
C:\Program Files (x86)\Steam\steamapps\common\Portal 2\ - macOS:
~/Library/Application Support/Steam/steamapps/common/Portal 2/
- Windows:
-
Copy
update,portal2, andplatformfrom that installation to the headset. You can also copyportal2_dlc1andportal2_dlc2if present. -
Choose Import a folder… and select the Portal 2 parent folder to import all folders together, or import them one at a time. SourceVRPort stores Portal 2's
platformfolder asportal2_platformso it cannot overwrite the Half-Life 2platformfolder.
The importer verifies files before activating them and preserves saves, settings, installed mods, and generated data when retail content is re-imported. A complete installation from another Steam build can be allowed per game; modified or damaged content can also be force-launched if you explicitly accept the warning.
SourceVRPort can mount content-only mods containing maps, materials, models, scripts,
sounds, or VPK archives. Transfer each mod from your computer into the appropriate
public custom folder:
| Game | Mod folder on the headset |
|---|---|
| Half-Life 2 | /sdcard/SourceVRPort/common/hl2/custom/ |
| Portal | /sdcard/SourceVRPort/common/portal/custom/ |
| Portal 2 (experimental) | /sdcard/SourceVRPort/common/portal2/custom/ |
| Episode One | /sdcard/SourceVRPort/common/episodic/custom/ |
| Episode Two | /sdcard/SourceVRPort/common/ep2/custom/ |
| Lost Coast | /sdcard/SourceVRPort/common/lostcoast/custom/ |
| Entropy : Zero | /sdcard/SourceVRPort/common/EntropyZero/custom/ |
A mod in the Half-Life 2 folder is also mounted by Lost Coast, Portal, and both Episodes. Use a game's own folder when the mod should apply only to that game. Portal 2 uses only its own folder from this table.
Copy the enclosing mod folder, not its contents directly into custom. Each
immediate child of custom must be one complete mod folder or one VPK:
# Correct
common/hl2/custom/MyMod/materials/...
common/hl2/custom/MyMod/models/...
common/hl2/custom/MyMod/scripts/...
common/hl2/custom/MyMod/sound/...
# Wrong: these folders are one level too shallow and will be skipped
common/hl2/custom/materials/...
common/hl2/custom/models/...
common/hl2/custom/scripts/...
common/hl2/custom/sound/...
For example:
adb shell mkdir -p /sdcard/SourceVRPort/common/hl2/custom
adb push "/path/to/MyMod" /sdcard/SourceVRPort/common/hl2/custom/MyModFor a Steam Workshop download, copy the entire numbered item folder so
content_dir.vpk and all content_000.vpk, content_001.vpk, … parts stay together
inside one folder.
Mods that include their own client.dll or server.dll game code are not supported.
Open SourceVRPort from Library → Unknown Sources, choose a game, and press Play once its content check reports ready.