6.2 KiB
Mod feasibility test, 2026-09-28
Verified observations, with limits below. Device: aarch64, SteamOS
VERSION_ID=0.4.1, BUILD_ID=20260925.6191901; Proton version file:
1788505046 proton-11.0-2c-arm64; vrcmd --stats: SteamVR 2.18.1.
Times below are the Frame's AEST clock.
Inventory and allowed content
ssh frame 'python3 - owned' < ui/frame_steam.py returned 868 games before
the test. Beat Saber (620980) and Skyrim VR (611670) were absent. Half-Life 2:
VR Mod – Episode One (2177750) was installed. Hogwarts Legacy (990080),
Horizon Zero Dawn (1151640) and Horizon Forbidden West (2420110) were listed
but not installed. The full personal library is not committed.
Documented, owner report after these tests: Alex has Beat Saber on a Quest 2, which is charging. That copy was not accessed or inspected during this test. Its version, transfer path and Frame compatibility remain unknown; Steam ownership is still not established.
Gravitas's public Steam metadata reported is_free: true, developer Galaxy
Shark Studios, Windows only. Frame Control's existing Steam helper requested
its install. Steam first returned free-license state 3, then config state 7,
then queued the download. The helper did not accept state 3; a later read
found state 7. The source of that transition was not observed. A later
install 1067310 returned state: installed. No purchase occurred.
UEVR was downloaded from the author's 1.05 release,
not a mirror. UEVR.zip was 7,399,455 bytes. Its SHA-256 matched the author's
UEVR.zip.sha256 (a UTF-16 text file):
af4f2f91306802d7ee4e8497d483a547ac8e9a3067dbafb81324100524215d3c
Microsoft's Windows x64 .NET runtime and Windows Desktop runtime 6.0.36 ZIPs were downloaded using URLs in the official release metadata. Both SHA-512 hashes matched that metadata. They were extracted into a test-only user directory, not installed globally. No other mod manager was used.
Half-Life 2 VR: visible setup, not gameplay
Launched the already-installed Episode One using
steam steam://rungameid/2177750. The existing manifest recorded build
25413453 and a shared base depot from app 658920, build 25413418.
Selected fresh Steam / SteamVR log lines:
22:07:50 proton waitforexitandrun .../Half-Life 2 VR/ep1vr.exe
22:08:03 SetApplicationPid: Setting app steam.app.2177750 PID to 27990
22:08:03 Successfully loaded binding file '.../hlvr/cfg/steamvr/bindings_frame.json' for app 'steam.app.2177750'.
The game's episodicvr/console.log reached Creating VR hand HUD...,
Creating VR weapon HUD... and Calibrating VR base position. It also
contained missing material/weapon warnings. SteamVR logged a missing
frame_hmd binding as well as the successful controller binding load;
controller input was not exercised.
ui/frame_vrshot.py produced a stereo capture showing the mod's
“First time setup” and “Dominant hand” dialog. This establishes visible
startup, not a played level or comfortable performance. The capture includes
room passthrough and is deliberately not published. The test's hl2.exe
process was terminated; the pre-existing game installation was preserved.
Gravitas and UEVR: injection unverified
The game was launched through Steam. The injector was then started in the
same steamapps/compatdata/1067310 prefix using the shipped
SteamLinuxRuntime_4-arm64/_v2-entry-point and Proton 11 ARM64. The first
attempt reported:
Application: UEVRInjector.exe
Message: You must install .NET to run this application.
Architecture: x64
App host version: 6.0.35
.NET location: Not found
With DOTNET_ROOT and DOTNET_ROOT_X64 pointing at the test-only Windows
runtime directory, Proton loaded Microsoft.NETCore.App/6.0.36 and
Microsoft.WindowsDesktop.App/6.0.36. A 25-second launcher timeout was too
short to establish whether the UI worked. A longer attempt produced a
625×372 UEVR X11 window on display :1. This is window creation evidence,
not a successful injection. That launcher returned exit 0; this was not
treated as proof that a mod worked.
A combined launch set PROTON_REMOTE_DEBUG_CMD to UEVRInjector.exe and
ran Gravitas's Drop.exe in the same runtime/prefix. The process
SkyArk/Binaries/Win64/Drop-Win64-Shipping.exe and a 1600×900 window titled
SkyArk (64-bit, PCD3D_SM5) appeared. The launcher exited 1 before an
injection or stereo game scene could be verified. Output included:
Proton: Error while copying to ".../windows/system32/amdxcffx64.dll": No such file or directory
Error [GENERAL | xrCreateInstance | OpenXR-Loader] : xrCreateInstance failed
X Error of failed request: BadWindow (invalid Window parameter)
Major opcode of failed request: 10 (X_UnmapWindow)
X Error of failed request: XI_BadDevice (invalid Device parameter)
Minor opcode of failed request: 28 (X_GetDeviceButtonMapping)
These errors do not establish an ARM64/FEX incompatibility. Other work
was launching apps on the shared Frame. SteamVR's PIDs changed during the
experiment; ps recorded the replacement vrserver and vrcompositor
starting at 22:13:03, corroborated by steamvr.service journal startup
lines. This test did not request a Steam/SteamVR restart. The combined
attempt ran at 22:14:17–22:14:27, after that restart. A stable, coordinated
session is needed to distinguish launcher/environment problems from game or
mod incompatibility.
Cleanup and remaining checks
- No game executable or OpenVR DLL was replaced. No global runtime or power setting was changed by this test. No R.E.A.L., OpenComposite or Beat Saber payload was installed.
- Removed the test-only UEVR/.NET directory and downloaded ZIPs from the
Frame. Final process checks found no
UEVRInjector.exe,Drop-Win64-Shipping.exe,ep1vr.exeorhl2.exe. SteamVR was running. - Gravitas and its Steam-created prefix remain installed for a repeat test; the pre-existing HL2 VR install remains. Steam may retain normal shader caches, logs and prefix temporary files.
- Still unverified: UEVR injection and removal, R.E.A.L. releases and permissions, OpenComposite, Beat Saber playback on either build, and our own manager's end-to-end install/uninstall. No installer UI is justified by these results. See the support table and next checks.