Skip to main content
Version: Current (v5.0)

Quest Pro

The Meta Quest Pro provides eye gaze tracking, detailed eye expression tracking, and face tracking. All eye and face tracking hardware is internal to the device (no additional hardware setup required). All eye and face tracking data is accessed via Meta’s Face and Eye OpenXR extensions. There is currently no way for VRCFT to simultaneously extract data from the headset and send eye and face tracking to the Quest version of VRChat, so the following solutions are only for PCVR. Previously, a beta version of the native VRChat Quest client included built in eye tracking support without the need for VRCFaceTracking. This version is discontinued and is no longer available.

danger

The Quest Pro has been shown to be extremely susceptable to sweat damage. There have been a practically significant number of users who have experienced the exact same failure mode of Eye-tracking not working after sweat ingress. If you plan on exercising, dancing, or doing other sweat-inducing activities, please take extra precautions against having sweat or other liquids reach the front part of the headset.

Why is this setup required?

The Quest Pro provides developers with both eye and face tracking data from a single, contained device, making it easy for native Quest developers to incorporate. However, having it only accessible through Meta’s Oculus OpenXR extensions means there must be an OpenXR application using the Oculus runtime running somewhere. Difficulty of the setup process depends on the desired PCVR connection method.


Setup

The basic Quest Pro setup flow:

  1. Enable Eye and Face Tracking on the Headset
  2. Set up desired PCVR connection method
  3. Install corresponding VRCFT module

The Quest Pro currently has 5 readily available face-tracking compatible PCVR connection methods, listed in no particular order:

Oculus Link/Airlink is Meta’s own PCVR streaming solution, and is generally straight-forward to set up (the PCVR part, not the face tracking part) and network stable, but also is limited in customization. ALXR/ALVR are open-source projects and thus has many for features and customizability in the PCVR connection as compared to Airlink, but also may have more bugs, quirks, and generally may be harder to use. Virtual Desktop is commonly seen as the "best" PCVR streaming solution, but it is not free, unlike all the other options. SteamLink is Valve's (free) PCVR steaming solution meant specifically for using Quest headsets with SteamVR.

If you need a recommendation for what to use for PCVR streaming:

  • If you don't want to spend money and want to connect wirelessly: you should start with SteamLink as it has the easiest and most straightfoward setup.
  • If you don't mind spending money: you should use Virtual Desktop for ease of use and additional features.
  • If you must use a wired (USB) connection: you should start with Oculus Link/Airlink.

With any option, the user is expected to have the VR PC and the Quest Pro on the same network, with the PC ideally connected to the network via ethernet cable (for wireless PCVR), or Quest Pro connected to the PC with a high-quality USB 3.0+ cable (for "wired" PCVR, Virtual Desktop and SteamLink excluded). You can learn more about improving your Quest PCVR streaming experience with the many guides available online.

Enable Eye and Face Tracking on the Headset

  1. Open up the Settings in your Quest Pro headset, and navigate to "Movement Settings"
  2. Select the "Natural Facial Expressions" tab on the left, then Enable Natural Facial Expressions
  3. Select the "Eye Tracking" tab on the left, then Enable Eye Tracking. If you haven’t already, calibrate your eye tracking
    Quest Pro Eye Tracking settings
info

Oculus Software version v62 will finally remove the Meta Developer requirement to get eye and face tracking data over Oculus Meta Quest Link. Once rolled out (Week of Feb. 7, 2024), there will no longer be a need to sign up for a developer account and check all the developer settings to use eye and face tracking over Meta Quest Link.

danger

Oculus version v60 changed "Developer Mode" for the headset to "Debug Mode", and may have reset the setting to off. If you were using Link/Airlink before and after an update it is "suddenly" not working, make sure that "Debug Mode" in the Meta Quest app is enabled!

Oculus Link/Airlink Setup

Prefer a video? Community member Ninka has graciously created another tutorial video for the Quest Pro and VRCFT 5.0+ that goes over the entire setup procedure, including the VRCFT module installation for the Oculus Link/Airlink module "Quest Pro OpenXR".

info

Developer mode is only required if using Oculus Link/Airlink!

  1. MAKE SURE YOUR HEADSET HAS EYE AND FACE TRACKING ENABLED

  2. CREATE DEVELOPER ACCOUNT AND ENABLE DEVELOPER MODE:

    1. Set up a Meta Oculus developer account
      • A developer account is necessary (for now) as the eye and face OpenXR extensions are currently considered "developer features" if to be accessed from the PC Oculus runtime. It is rather trivial to apply for and there is no check for being a "real organization".
    2. Install the Oculus ("Meta Quest") app on mobile device (if it isn’t already) and login with your (developer) Oculus account. Register your headset in the app.
    3. In the Oculus mobile App, tap Menu at the bottom right, then Devices. Select your Quest Pro, then go to Settings -> Developer Mode and set the Debug Mode switch to enabled.
      • Reboot the headset after enabling Debug Mode.
      • This setting was formerly called "Developer Mode" in software versions before v60.
    Quest Developer Mode in phone app
  3. Install and start the Oculus PC application (if it isn't already).

  4. Follow setup instructions for logging in (with the same developer account created/used earlier to enable dev mode on the headset!) and adding your Quest Pro to Devices.

  5. In the Oculus PC application, click on Settings in the left sidebar, then General tab. Turn on Unknown Sources, and set the OpenXR Runtime to Oculus.

danger

SET THE OPENXR RUNTIME TO OCULUS. Do not forget to do this step!

Oculus PC App General Tab
  1. Navigate to the Beta tab. Enable Developer Runtime Features, Eye tracking over Oculus Link, and Natural Facial Expressions over Oculus Link.
  • Note that Passthrough over Oculus Link option may cause issues and unless you are making or using PCVR apps that use Oculus passthrough, you should just leave this disabled.
  • Enable Public Test Channel only if you know you want to use some feature/fix the latest Public Test Channel (beta) software. Otherwise, it is better to stay off the PTC.
danger

If you do not see these options, you did not follow the previous steps correctly.

Oculus PC app Beta Tab
  1. Proceed to Modules for compatible modules to use with Link/Airlink.

ALXR Setup

note

Using ALXR will require you to sideload applications to you Quest

ALXR Setup
  1. MAKE SURE YOUR HEADSET HAS EYE AND FACE TRACKING ENABLED
  2. Download and install the latest ALXR client and server from the ALXR-nightly repository. If this is your first time using ALXR, follow the Usage guide and Android-specific client install instructions
  3. Install the ALXR Remote module from the VRCFaceTracking module repository.
  4. Open the ALXRModuleConfig.json found in the installed module directory.
  5. In ALXRModuleConfig.json, in the "RemoteConfig" section set "ClientIpAddress" to the headset IP, this can be found in the ALVR server dashboard.
    • If the client is being run on the same host as the server (e.g. alxr windows client), use localhost IP (default, 127.0.0.1) and set the server to TCP protocol.
  6. Restart VRCFT to reinitialize the ALXR Remote Module with the updated configuration.

ALVR Setup

note

Using ALVR will require you to sideload applications to you Quest

ALVR Setup
  1. MAKE SURE YOUR HEADSET HAS EYE AND FACE TRACKING ENABLED
  2. Install the ALVR Nightly streamer on the PC and Nightly client on the Quest Pro if you have not already. Follow the ALVR Install instructions if this is your first time using ALVR.
  3. Launch ALVR streamer and set Eye and face tracking to VRCFaceTracking.
  4. Start the client on the Quest Pro and connect.
  5. Install the ALVR Module from the VRCFaceTracking module repository.

Virtual Desktop Setup

info

Make sure that your Virtual Desktop Quest app and PC streamer application are on version v1.29 or greater. If they are completely up to date, this requirement should be satisfied.

Virtual Desktop Setup

This following setup assumes that Virtual Desktop has already been purchased from the Quest Store in the headset and the Virtual Desktop Streamer PC-side app has been installed on the PC. Please refer to Virtual Desktop's built-in setup instructions to get started with using Virtual Desktop.

  1. MAKE SURE YOUR HEADSET HAS EYE AND FACE TRACKING ENABLED
  2. In the Virtual Desktop app on the headset, go to the "Streaming" tab, and enable the option Forward tracking data to PC. Make sure to click Yes to the popup. Virtual Desktop Settings
  3. Start Virtual Desktop Streamer if you have not already and establish headset connection to the PC.
  4. Proceed to Modules for compatible modules to use with Virtual Desktop.
note

To let the Virtual Desktop VRCFT module properly initialize, make sure to start VRCFT with the Virtual Desktop module installed after you start the Virtual Desktop Streamer program on the PC.

Switching to Virtual Desktop Beta (when a beta is active) may let you use yet-to-be-released features. In case there is a beta you would like to try, you can switch to the beta following the instructions in the dropdown

How To Switch to Virtual Desktop Beta

There are a few ways to change to Virtual Desktop Beta when a Beta is active. Meta constantly changes how to accomplish this so the fool-proof way is to just sideload the beta APK.

  1. Change to the Beta channel on the Virtual Desktop Meta store page (while logged into your Meta Quest account). You will need to then update the Virtual Desktop app in your headset after this change.

    Changing to Beta on the Meta website
  2. Change to the Beta channel in the Meta Quest phone app (while logged into your Meta Quest account). You will need to then update the Virtual Desktop app in your headset after this change.

  3. Install the beta APK manually. Grab the beta VirtualDesktop.Android.Quest.apk (without the 1) from the Virtual Desktop release page and install it with SideQuest. You will need to uninstall the live version of Virtual Desktop from your Quest first.

SteamLink Setup
danger

Do NOT change the OSC port settings in VRCFaceTracking for SteamLink! Changing either of them to 9015 WILL CAUSE PROBLEMS AND NOTHING WILL WORK. Those VRCFT port settings are for communication with VRChat, not SteamLink.

  1. Follow Valve's official Setup instructions for SteamLink
  2. MAKE SURE YOUR HEADSET HAS EYE AND FACE TRACKING ENABLED
  3. Once connected to SteamVR, open the SteamVR menu, open VR Settings, and enable "Advanced Settings" by moving the toggle to "Show" in the bottom left. You can also access this exact same settings menu from the desktop SteamVR devices window.
    Navigating to the VR Settings tab
  4. Navigate to the Setting tab "Steam Link", and enable the following options:
    • Enable OSC
    • Share eye tracking data to other apps on this PC via OSC
    • Share face tracking data to other apps on this PC via OSC
  5. Set the OSC output port in SteamLink settings to 9015 (ALT). Do NOT adjust port settings in VRCFaceTracking itself.
    Required settings for Face Tracking
  6. Proceed to Modules for the module to use with SteamLink.
danger

Do NOT change the OSC port settings in VRCFaceTracking for SteamLink! Changing either of them to 9015 WILL CAUSE PROBLEMS AND NOTHING WILL WORK. Those VRCFT port settings are for communication with VRChat, not SteamLink.


Modules

There are a total of 6 different VRCFT modules that can be used for the Quest Pro. The links are to Module source repositories, for those interested in contributing and improving the modules. All* modules are readily available for installation via the VRCFaceTracking built-in module registry. Learn how to install modules from the module registry.


Tips and Tricks

Using Sidequest to Side-load Quest Apps

  1. Install SideQuest (Advanced Installer) on your computer. https://sidequestvr.com/setup-howto
    • The SideQuest application will have a built-in tutorial for the following steps.
  2. Connect your Quest Pro headset to your computer with a data-transfer USB cable. Once connected you will be prompted to "Allow USB debugging" and "Allow File Access". Make sure to allow both. (You should also check the Always allow from this computer box to prevent the message from popping up again later)
  3. Use SideQuest to install alxr-client-quest.apk to your Quest Pro. Click the "Install APK file from folder" button, then select the downloaded alxr-client-quest.apk in the file prompt.
    How to install APKs in SideQuest
  4. SideQuest should have a green notification bar show up at the bottom saying the operation was successful.
note

You may need to uninstall the previous version of the app you are trying to sideload if it exists and SideQuest fails the current app install.

  1. In your Apps Library, you will need to set the category of shown apps to "Unknown Sources" to see the sideloaded application. You will need to tap the Search bar first before you see the category filter dropdown.
Quest Library Unknown Sources

Aligning Play Spaces with SteamVR Lighthouse-tracked Devices

To use Vive trackers or other SteamVR Lighthouse tracked devices with the Quest Pro, you'll need to use OpenVR-SpaceCalibrator. While the original from pushrax will work, many "Mixed VR" users have found the continous calibration forks to be better, such as bdunderscore's fork, or ArcticFox8515's fork of bdunderscore's fork, or most recently Hekky's fork, which comes with important performance fixes for continuous calibration.

We would recommend using ArcticFox8515's fork for now as it is the most recent and improves upon the original.

Download these Powershell Scripts (Discord Link)

To run, right-click the file -> "Run with Powershell"

These scripts will prevent Oculus Link from adding the Quest controllers to the SteamVR devices, allowing the use of Index controllers or any other controller of your choosing.

You may have problems with running Powershell scripts downloaded from the internet (for good reason!). You can learn about getting around Microsoft's default script security.

Using Index Controllers with the Quest Pro with Virtual Desktop

Before launching SteamVR from Virtual Desktop: In the Virtual Desktop "Streaming" tab, untick the "Track controllers" option under "Advanced Options" in the Streaming tab. This will prevent Virtual Desktop from adding the Quest controllers to the SteamVR devices, allowing the use of Index controllers or any other controller of your choosing.

Virtual Desktop track controllers setting circled

Using Index Controllers with the Quest Pro with ALVR/ALXR

The customizability of ALVR allows a few options in this regard. All following mentioned settings can be found in the "Headset" tab of the ALVR settings.

  • Option 1: Completely disable the Quest Pro controllers using the checkbox next to "Controllers"
  • Option 2: Set the Controller emulation to "HTC Vive Tracker". This allows real controllers such as the Index Controllers to take precedence in SteamVR, and allow for using the Quest Pro controllers for manual playspace calibration.

Troubleshooting

NO MODULES LOADED / Stuck on "Initializing Modules"

Whenever you see this, the cause is because the currently installed module failed to initialize (or you're not even giving enough time for the module to fail attempting to load...). Switch to the VRCFT Output Log tab and find the relevant error message.

[Oculus Link/Airlink] Error in headset: com.oculus.bodyapiservice keeps stopping
CauseYou do not have developer mode enabled on both the PC Oculus program and for the headset from the Oculus phone app.
SolutionCarefully re-run through the Link/Airlink setup, paying careful attention to all the steps.
Double-check that "Developer Runtime Features" is enabled in the Oculus PC program and that Debug Mode is switched on for the Quest Pro in the Oculus phone app. If you can't find these options, your Oculus/Meta account is not a Meta Quest Developer account, or may need to be re-verified as a Developer account. Log in to or sign up at the Meta Quest Developer Center to verify/resolve developer account status.
[QuestProTrackingModule] Error: [QuestOpenXR] Failed to GetFaceExpressionWeightsFB
CauseThere is some permission in the setup that was not set correctly.
SolutionCarefully re-run through the setup, paying careful attention to all the steps.
Double-check that "Developer Runtime Features" is enabled in the Oculus PC program and that Debug Mode is switched on for the Quest Pro in the Oculus phone app. If you can't find these options, your Oculus/Meta account is not a Meta Quest Developer account, or may need to be re-verified as a Developer account. Log in to or sign up at the Meta Quest Developer Center to verify/resolve developer account status.
[QuestProTrackingModule] Error: [QuestOpenXR] Failed to create Face Tracker
CauseThere is some permission in the setup that was not set correctly or Quest Pro headset is not connected.
SolutionCarefully re-run through the setup, paying careful attention to all the steps.
Double-check that "Developer Runtime Features" is enabled in the Oculus PC program and that Debug Mode is switched on for the Quest Pro in the Oculus phone app. If you can't find these options, your Oculus/Meta account is not a Meta Quest Developer account, or may need to be re-verified as a Developer account. Log in to or sign up at the Meta Quest Developer Center to verify/resolve developer account status.

Also make sure that your Quest Pro is actively connected via Link/Airlink before starting VRCFT!
[QuestProTrackingModule] Error: [QuestOpenXR] Failed to get XrSystemID
CauseThere is some permission in the setup that was not set correctly or Quest Pro headset is not connected.
SolutionCarefully re-run through the setup, paying careful attention to all the steps. Doubly make sure that you have Oculus set as your OpenXR runtime in the Oculus Desktop app settings.

Make sure that your Quest Pro is *actively connected* (streaming content from PC and screens haven't gone to sleep) via Link/Airlink before starting VRCFT! Try starting VRCFT with the headset on, through the Oculus Dash desktop view.
[QuestProTrackingModule] Error: [QuestOpenXR] Failed to create XrInstance
CauseThere is some required setting in the setup that was not set correctly.
SolutionCarefully re-run through the setup, paying careful attention to all the steps. Doubly make sure that you have Oculus set as your OpenXR runtime in the Oculus Desktop app settings.

Make sure that your Quest Pro is *actively connected* (streaming content from PC and screens haven't gone to sleep) via Link/Airlink before starting VRCFT! Try starting VRCFT with the headset on, through the Oculus Dash desktop view.
[QuestProTrackingModule] Error: [QuestOpenXR] Failed to create session and I am NOT using a laptop / eGPU
CauseThere is something preventing an OpenXR session from being created for the Quest Pro
SolutionCarefully re-run through the setup, paying careful attention to all the steps. Doubly make sure that you have Oculus set as your OpenXR runtime in the Oculus Desktop app settings.

Make sure that your Quest Pro is *actively connected* (streaming content from PC and screens haven't gone to sleep) via Link/Airlink before starting VRCFT! Try starting VRCFT with the headset on, through the Oculus Dash desktop view.
[QuestProTrackingModule] Error: [QuestOpenXR] Failed to create session and I AM using a laptop / eGPU
CauseThere is something preventing an OpenXR session from being created for the Quest Pro, possibly related to Oculus trying to default init on laptop's iGPU
SolutionMake sure that you have Oculus set as your OpenXR runtime in the Oculus Desktop app settings. Also make sure that your Quest Pro is actively connected via Link/Airlink before starting VRCFT.

Try to turn off using integrated GPU through your laptop's BIOS or control center program.

Alternatively, use Windows Settings to force VRCFaceTracking to "High Performance" (use discrete GPU). Open Windows Settings and navigate through System -> Display -> Graphics Settings (a small link under "Multiple Displays" section in Win10, or under "Related Settings" in Win11).

Set Windows Custom Graphics SettingsSet Windows Custom Graphics Settings Windows 11
[QuestProTrackingModule] Information: Eye Tracking not supported
CauseDeveloper (Debug) mode is not properly enabled.
SolutionOn software versions v60, this error seems to be associated with the "Debug Mode" toggle not being enabled for the headset. Use the Meta Quest phone app to enable Debug Mode for the Quest Pro headset, then reboot the headset. If the issue persists or the module seems to initialize but doesn't send any data, try logging out then back into your Meta account on both the headset (via phone app) and PC Oculus application.
[Virtual Desktop] Error: [VirtualDesktop] Failed to open MemoryMappedFile. Make sure Virtual Desktop Streamer (v1.29 or later) is running.
CauseVRCFaceTracking was started before Virtual Desktop
SolutionFirst, make sure both the Virtual Desktop app in the Quest and the Virtual Desktop streamer versions are at least v1.29.

Close VRCFaceTracking, start Virtual Desktop Streamer, reopen VRCFaceTracking.

If VRCFaceTracking is started before SteamVR/VRChat is launched from Virtual Desktop, the output log may show a warning that "Tracking is not active". However, after launching SteamVR/VRChat (from Virtual Desktop) the Virtual Desktop module should log that "Tracking is now active!".

General Problems

[Oculus Link/Airlink] I cannot see SteamVR because Oculus is stuck loading some random app
CauseThe nature of the way VRCFaceTracking must pull data from the Oculus OpenXR runtime from the PC is inherently hacky, effectively running 2 VR programs at once.
SolutionIf you started SteamVR first, you can simply switch back to SteamVR in the Oculus Dash. You can also try switching up the program startup sequence, starting VRCFaceTracking then SteamVR through the desktop Steam app (not through the Oculus Dash in the headset). Yet another solution is to use OculusKiller to avoid dealing with the Oculus Dash entirely, though this has its own downsides.
[Oculus Link/Airlink] "I'm not getting any visible errors anywhere and the Module loads, but VRC only receives 0 values for all parameters (and VRC loaded a non-zero number of parameters from config)"
CauseMeta Moment
SolutionTry toggling the eye and face tracking enables in the headset settings, and restarting your headset completely. Logging out then back into the account in the PC Oculus application and headset may also help. You may also need to re-verify developer account settings if using Oculus Link/Airlink, as well as developer account permissions by logging into the Meta Quest Developer Center.
[SteamLink] VRCFaceTracking crashes when I set the SteamVR OSC output port to 9015!
CauseYou changed one of VRCFaceTracking's communication ports to 9015
SolutionRevert VRCFaceTracking's ports back to the defaults (9000 sending/9001 receiving). VRCFaceTracking uses these ports to communicate with VRChat and should not be changed. Communication with the SteamVR OSC data happens in the SteamLink module on port 9015, and this is handled internally by the module, not the VRCFaceTracking base program!
My playspace calibration resets if I take off the headset
CauseWhen the Quest headset enters sleep mode after detecting you have taken off the headset, it loses it's original reference space to which the SteamVR space was calibrated to.
SolutionDownload the Meta Quest Developer Hub and follow the instructions for Connect Headset to MQDH and Disable proximity sensor and guardian. This will prevent the headset from entering sleep, but does mean your headset stays fully active even if you take it off. Alternatively, use another PCVR streaming method that supports Stage Tracking (Virtual Desktop, ALXR, ALVR, SteamLink).

Don't see your problem here? Think your problem might be unrelated to the module but something else? Take a look at the VRCFT software page or search in the #hardware-software-help forum in the Discord.