Unpack the VCR package, the source directory contains the CMD files discussed below

  1. Start the application and SteamVR on a normal OpenVR system that has an HMD and controllers

  2. Use 1_capture.cmd to start recording the session

    1. Verify devices and input components are recognized correctly - capture will list all devices it finds

    2. Interact with the application through the HMD, perform actions that should be automated

    3. [OPTIONAL] Press <SPACE> to separate recording into segments - each segment is stored in a “tracking_<i>.bin” file and will be replayable separately

    4. Stop recording by pressing <ESC>

  3. [OPTIONAL] Use a filter to modify the tracking data - please refer to the readme in the filter sample for more information

  4. [OPTIONAL] Copy the resulting “tape” directory to a different system if replay happens somewhere else

  5. Use 2_install_replay.cmd to install the replay driver on the target system

    1. Note that this system must not have an HMD attached (replay driver and real hardware would clash)

    2. Note that SteamVR needs to be installed on the target system

  6. Start SteamVR, the replay driver will use the recorded data to emulate the HMD and the controllers

  7. Replay the session or the session segments

    1. Use 3_replay.cmd to replay a single session or the tracking_0.bin file

    2. Use 3_replay.cmd <i> to replay “tracking_<i>.bin” file - this can be used to replay the segments in an arbitrary order

  8. [OPTIONAL] Use 4_uninstall_replay.cmd to uninstall the replay driver - e.g. if a real HMD should be used again


Capture CMD line parameters

-s <f> sampling frequency in Hz, default: 2x HMD display frequency

Replay configuration in VCR/tape/replay_config.json

Default values can be obtained by deleting the file, replay will generate it on launch


Controls the replay speed as a time factor, e.g. 0.5 will replay at half speed


Controls the frequency at which the replayer generates input update events for SteamVR A value of -1.0 allows the replayer to choose the frequency depending on the recording data


Controls whether replay should interpolate between tracking samples


Controls whether replay should generate VSync signals to SteamVR This can be used for tesing applications in free-running mode for performance benchmarking

Hardware configuration in VCR/tape/hardware.json

A JSON file containing the hardware description of the HMD and the controllers

Most properties are of the form key / property name / value

key: int value of the vr::ETrackedDeviceProperty property name: name as stated in vr::ETrackedDeviceProperty (trying to document keys value: value of that property

Special values:

m_renderWidth / m_renderHeight: resolution of the HMD m_device / m_floatProperties / 2002 ; Prop_DisplayFrequency_Float: frequency (in Hz) at which the replayer generates vsync events for SteamVR


m_initialPose is the position and quaternion of the device’s pose when the driver doesn’t replay tracking data


To make replays able to loop, find a way to reset the app state to a perfect state at the end of the recording - jump to a defined viewpoint, close menus, etc.

If you want to test with different hardware setups during replay, it may be best to record with the lowest-end hardware configuration. The problem with slower hardware is that apps tend to react slower, and inputs may get lost because the app is not showing the right state for a recorded input yet.

To get real-time output from SteamVR and the replay driver, use PowerShell:

Get-Content "C:\Program Files (x86)\Steam\logs\vrserver.txt" -Tail 0 -Wait

If SteamVR Enterprise is used, logs can be in C:ProgramDataSteamlogs

Get-Content "C:\ProgramData\Steam\logs\vrserver.txt" -Tail 0 -Wait

Add | Select-String -Pattern 'replay' to filter for replay driver relevant output:

Get-Content "C:\Program Files (x86)\Steam\logs\vrserver.txt" -Tail 0 -Wait | Select-String -Pattern 'replay' Get-Content "C:\ProgramData\Steam\logs\vrserver.txt" -Tail 0 -Wait | Select-String -Pattern 'replay'

With some separation between the runs

Get-Content "C:\Program Files (x86)\Steam\logs\vrserver.txt" -Tail 0 -Wait | Select-String -Pattern 'replay' | ForEach {$_.Line -replace "(?<aa>.*ServerDriver::Init.*)","`n`n**************************************************`n`$1"} Get-Content "C:\ProgramData\Steam\logs\vrserver.txt" -Tail 0 -Wait | Select-String -Pattern 'replay' | ForEach {$_.Line -replace "(?<aa>.*ServerDriver::Init.*)","`n`n**************************************************`n`$1"}


Replace “C:\Program Files (x86)\Steam\…” with your SteamVR install path in case it’s not installed at the default location.


If SteamVR shows the Dashboard and it interferes with the replay, disable SteamVR Settings / Dashboard / “VR Dashboard on System Button”.

If you have a difference between the capture and replay (e.g. menu doesn’t get hit correctly, tracking seems to be off by some delta), it’s possible that the app performs some calibration based on the HMD position it sees first. To fix this, please do not move the HMD while starting the application and the capture. Put the HMD on a chair or a rack while starting both, then start interacting in VR normally.

If the replay driver does not seem to work (SteamVR starts and does not find an HMD after installing replay), check SteamVR Options -> Startup/Shutdown -> Manage Add-Ons. The ‘replay’ driver may be disabled because of a previous crash, please re-enable it. In this case, the vrserver.txt log visible in the SteamVR System Report tool will contain a line like “Not loading driver null because it is disabled in settings” and/or “Not loading driver replay because it was blocked by a previous safe mode event” (use the raw view and search with the text field in the bottom)

If there’s an issue you can’t fix, please contact VCR-Outreach@nvidia.com with the following information:

  • Error description (maybe a screenshot if it shows something useful),

  • Which version you’re using (VCR/version.txt, capture and replay should generate version output as well),

  • A SteamVR System Report (SteamVR menu -> Create System Report -> Save to file)