SkillAgentSearch skills...

PhoneVR

Use Steam VR-enabled applications with your phone as HMD (Head-mounted display). The only Open-Source solution to similar commercial packages like VRidge, iVRy, Trinus etc etc.

Install / Use

/learn @PhoneVR-Developers/PhoneVR

README

<br/><br/> PhonveVR<br/> LogoPVRv0 3

<br/>

<img src="./.github/rep1.png" width="50%"><img src="./.github/rep2.jpg" width="50%"> <sup>Pictures used for representational purposes</sup>

Build status GitHub release (latest by date including pre-releases) Discord

Use Steam VR-enabled applications with your phone as VR HMD (Head-mounted display). The only Open-Source solution to similar commercial packages like VRidge, Riftcat, Trinus etc etc. Common-network can be any type of network between desktop and android app, even USB Tethering and Mobile Hotspots are supported. <br/>

| Tabs | Links | | --- | --- | | Roadmap/Plan/Future Todo | Project Kanban | | Latest Release | Github Release | | Previous Builds | Github Actions | | Issues | Github Issue Tracker | | Discuss/Chat/Help/Real-Time Updates/Any - Discord | Discord Server Invite Link |

Contents

Requirements

A PC with Windows 7 or above, A smartphone with Android 5.0 (Lollipop) or above (ALVR requires Android 8.0 or above) with OpenGL-ES 3.0 or above, Steam and some SteamVR applications installed.

Installation

PhoneVR(PVR) can be used with two servers ALVR and PVRServer. ALVR Server is recommended over PVRServer, both use different APIs.

| Differences | ALVR Server | PhoneVR Server | | ------------------------------------------------------------------------------ | -------------------------------------------- | -------------------------- | | Server/Desktop Side | OpenVR API | OpenVR API | | Mobile Side | Google Cardboard API | Google VR API (deprecated) | | GUI | ✅ | ❌ | | User friendly Installer | ✅ | ❌ | | Serverside hardware(GPU) Encoding | ✅ | ❌ | | Serverside software Encoding | ✅ | ✅ | | Automatic Firewall setting | ✅ | ❌ | | Linux Support (*Partial*) | ✅ | ❌ | | Developers | Alvr-org | PhoneVR | | Supports other HMDs ? Quest etc. | ✅ | ❌ | | Open-Source | ✅ | ✅ | | Network throttling | ✅ | ❌ | | Average Latency | 150ms | 1500ms | | VRApplication Graphics manipulation<br>(Brightness, resolution, contrast etc.) | ✅ | (Partial) | | Code backend | Rust + C++ | C++ |

A. Installation using ALVR Server

  • Currently only ALVR v20.8.0 (latest stable) is supported by PhoneVR.
    • Older version
      • PhoneVR v1.4.0-beta -> ALVR v20.7.1
      • PhoneVR v1.3.0-beta -> ALVR v20.6.1
      • PhoneVR v1.2.0-beta -> ALVR v20.5.0
      • PhoneVR v1.1.0-beta -> ALVR v20.2.1
      • PhoneVR v1.0.0-beta -> ALVR v20.1.0
  • Use the install guide of ALVR Server from here.

B. Installation using Legacy PhoneVR Server

  • Make sure you have Steam and SteamVR installed (To find SteamVR on steam, Library -> Tools -> SteamVR).
  • Download latest release PhoneVR-Server-vX.X.X-xxxxx.zip of this repository.
  • Copy the whole folder PVRServer in driver folder of zip file into your SteamVR/drivers folder. (Default Path: C:\Program Files (x86)\Steam\steamapps\common\SteamVR\drivers.
  • (Only for PhoneVR Server) To play, first open the Phone App(SteamVR should also be closed), then run the game of your choice on PC. (Obviously, both PC and Mobile should be on same Network, preferably Wifi 5.0)

Common Instructions for both Servers

  • Install the Android Apk on your mobile from Releases page.
    • There are two Apks on the release page, one with GoogleVR(GVR) SDK and other without GVR SDK. If you plan to use ALVR-Server only you can install PhoneVR-vX.X.X.noGvr.apk.
  • Make sure that "Run in Background", "Auto Start"(Restart on Crash) permissions, if exists on your device(especially Xiaomi users), are given. Also make sure that any kind of 3rd party battery saver app dosen't kill PhoneVR when in background.
  • After opening the installed app, Choose ALVR(recommended) or PhoneVR Server, according to the server you installed.

Advanced Configuration

for ALVR Server

for Phone VR Server

  • Windows Driver Settings

    Windows SteamVR Driver, auto loads with SteamVR, and gets FrameTextures from VRApplication(like SteamVR Home, VRChat, etc.) via SteamVR. These Textures are then Encoded and Streamed, at specified game_fps, to Mobile device using x264 Encoder. Some configurations of this encoder can be adjusted via, pvrsettings.json in default installation location C:\Program Files (x86)\Steam\steamapps\common\SteamVR\drivers\PVRServer\.<br/> Default Settings :

    {
        "enable" : true,
        "game_fps" : 65,
        "video_stream_port" : 15243,
        "pose_stream_port" : 51423,
        "pairing_port" : 33333,
        "encoder" : {
            "preset" : "ultrafast",
            "tune" : "zerolatency",
            "qp" : 20,
            "profile" : "baseline"
        }
    }
    

    Most settings are self-explanatory. Any change in settings will require SteamVR to be restarted for application.

    • "encoder" : Encoder x264 Settings

      • "preset" : Can be set to "ultrafast", "superfast", "veryfast", "faster", "fast", "medium", "slow", "slower", "veryslow" or "placebo" Warning: the speed of these presets scales dramatically. Ultrafast is a full 100 times faster than placebo! These presets affect the encoding speed. Using a slower preset gives you better compression, or quality per filesize, whereas faster presets give you worse compression. In general, you should just use the preset you can afford to wait for.

      • "tune" : Can be set to "film", "animation", "grain", "stillimage", "psnr", "ssim", "fastdecode", "zerolatency" Tune affects the video quality(and size), film being the best quality and gradually decreasing to the right

      • "profile" : Can be set to "baseline", "main", "high", "high10", "high422", "high444" Applies the restrictions of the given profile. Currently available profiles are specified above, from most to least restrictive. Does NOT guarantee that the given profile will be used: if the restrictions of "High" are applied to settings that are already Baseline-compatible, the stream will remain baseline. In short, it does not increase settings, only decrease them.

      • "qp" : Quantization packet constant, Range 0-51, 0-Lossless

      • "rc_method" : Rate Control Method, 1/2/3 Constant QP (CQP) - 0; Constant Rate factor (CRF) - 1; Average Bitrate (ABR) - 2; Default is 1 i.e., CRF with rf 24 (and rf_max 26)

      Other standard x264 settings,

      • "qcomp" : Default : 0
      • "keyint_max" : Default : -1
      • "intra_refresh" : Default : False
      • "bitrate" : Default : -1 (min 1000)

    Do only adjust when required, and keep a eye on pvrlog.txt file in default installation location `C:\Progr

View on GitHub
GitHub Stars804
CategoryDevelopment
Updated11h ago
Forks56

Languages

C++

Security Score

100/100

Audited on Apr 2, 2026

No findings