Skip to main content
Version: v4.0.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.

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. There is currently no way for VRCFT to provide eye and face tracking to the Quest version of VRChat, the following solutions are only for PCVR.

Setup

The Quest Pro currently has 2 different face-tracking compatible ways to connect to the PC:

  • Oculus Link (or Airlink)
  • ALVR

The user is free to choose whatever method they prefer more. ALVR is an open-source project and thus has many for features and customizability in the PCVR connection as compared to Airlink, but also has more bugs or quirks. Oculus Link/Airlink is Meta’s own PCVR streaming solution, and is generally more straight-forward to set up and network stable, but also is limited in customization.

In both cases 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.

Enabling Developer Mode on the Headset

Instructions originally from https://learn.adafruit.com/sideloading-on-oculus-quest/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". 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 Developer Mode switch to enabled.
    • Reboot the headset after enabling Developer Mode.

Developer Mode

Enabling 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 Settings

Thanks to Fox McCloud#7787 and Adjerry91#2031 for the original set of instructions.

If you prefer following video tutorials, these following videos by Ninka_#7958 cover the steps for either Oculus Link method. It is still recommended to read through this text reference after as their videos may miss or glance over some important steps/details!

  1. Set your headset to developer mode using the Oculus mobile app
    danger

    Do not skip this step. Please follow the instructions for setting the headset to developer mode using the mobile app before proceeding. Even if you think it is in developer mode already, follow the instructions anyways.

  2. Enable Headset Eye and Face Tracking
  3. Install and start the Oculus PC application (if it isn't already).
  4. Follow setup instructions for logging in 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. Set the OpenXR Runtime to Oculus
    danger

    SET THE OPENXR RUNTIME TO OCULUS. This is the second most forgotten step of Quest Pro setup.

    Oculus PC App General Tab
  6. Navigate to the Beta tab. Enable Developer Runtime Features, Eye tracking over Oculus Link, and Natural Facial Expressions over Oculus Link.
    • You can try enabling Passthrough over Oculus Link but that may cause issues.
      note

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

      Oculus PC app Beta Tab

Connection Methods

Oculus Link PCVR connection has 2 different solutions for streaming out face tracking data into VRCFT. This guide will cover both. Though there is currently no functional difference between the two, the ALXR Windows client method does require starting another program.

ALXR Windows Client Method

This method uses コレヂャン (Korejan)#6829's ALXR windows client to pull the data from the desktop Oculus OpenXR runtime.

  1. Download the latest ALXR-experimental alxr-client-win-x64.zip release

  2. Unzip the alxr-client-win-x64.zip. Inside, you should find a alxr-client.exe.

  3. Create a shortcut for alxr-client.exe: Select the file, right-click -> Create Shortcut. Move the shortcut somewhere convenient if you would like.

  4. Right-click on the newly created shortcut to alxr-client.exe and open Properties. Add --no-alvr-server --no-bindings flags to the end of the "Target:" box. Make sure to maintain a space between the flags and what was in the box already, and keep the flags outside the quotation marks of the file path if they exist.
    alxr-client Shortcut Example

  5. Download the latest VRCFT build and the questProSensitivity.ini file from Jerry's Quest Pro build of VRCFaceTracking

    • Ensure questProSensitivity.ini is in the same location as VRCFT. This file allows you to set some multipliers on the face tracking values received from the headset. Despite seeming optional, Jerry's build will grumpily throw out an error if this file is missing from the same directory as the .exe
    note

    This build of VRCFaceTracking will be replaced by a module in the coming update to VRCFaceTracking.

  6. Create a .txt file named questProIP in the same directory as the VRCFaceTracking.exe and questProSensitivity.ini. In the newly created file, enter 127.0.0.1 as the only text in the file and save the file.

Setup Complete! See the Startup Procedure for use instructions.

OpenXR Module Method

This method uses TofuLemon#2692's Quest Pro OpenXR build of VRCFT and tracking module to pull the data from the desktop Oculus OpenXR runtime.

  1. Download the latest QuestFaceTrackingOpenXR.zip release
  2. Unzip the QuestFaceTrackingOpenXR.zip somewhere. Keep all the unzipped files together in their own folder.
  3. Run VRCFaceTracking.exe application once, then close it.
  4. Copy the VRCFT Module - QuestOpenXR.dll file to your ..AppData\Roaming\VRCFaceTracking\CustomLibs folder.
    note

    You can easily get to your ..AppData\Roaming folder by typing %AppData% into your Windows search or the address bar of any Explorer window.

Setup Complete! See the Startup Procedure for use instructions.

  1. Launch (Air)Link on the Quest Pro. Make sure you are in the Oculus Home environment before proceding.
  2. (If you are using ALXR client method) Launch the ALXR windows client using the previously created shortcut.
  3. Launch VRCFaceTracking. If you are using TofuLemon's VRCFaceTracking, it will start an internal OpenXR client.
  4. Launch SteamVR from the PC

ALVR/ALXR Setup

  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. Set your headset to developer mode using the Oculus mobile app. :ref:enable developer mode
    danger

    Do not skip this step. Please follow the instructions for setting the headset to developer mode using the mobile app before proceeding. Even if you think it is in developer mode already, follow the instructions anyways.

  3. Enable Headset Eye and Face Tracking
  4. 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) Your headset should now be ready to be used with SideQuest.
  5. Download the latest ALXR Quest Client (alxr-client-quest.apk)
  6. 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
  7. Download ALVR Server v18.2.3 (alvr_server_windows.zip)
  8. Unzip alvr_server_windows.zip somewhere convenient, then launch ALVR Launcher.exe. Follow the initial setup procedure in the launched ALVR Server app.
  9. Once the ALVR Server is up and running, launch the alxr_client app that you installed earlier on your Quest Pro. In your Apps Library, you will need to set the category of shown apps to "Unknown Sources" to see the installed alxr_client. Unknown Sources
  10. With ALXR client running on the headset, go back to the ALVR Server PC application and make sure you're on the "Connections" tab. There should now be a Meta Quest Pro in the "New Clients" list, with a "Trust" button on the right side of its entry. Click "Trust" to allow the ALVR server app to make the connection to the ALXR client app on the Quest Pro. Back in the headset, SteamVR should now be streamed from the PC to the headset. After Trusting the Quest Pro in ALVR
  11. Download the latest VRCFT build and the questProSensitivity.ini file from Jerry's Quest Pro build of VRCFaceTracking
    • Ensure questProSensitivity.ini is in the same location as VRCFT. This file allows you to set some multipliers on the face tracking values received from the headset. Despite seeming optional, Jerry's build will grumpily throw out an error if this file is missing from the same directory as the .exe
      note

      This build of VRCFaceTracking will be replaced by a module in the coming update to VRCFaceTracking.

  12. Create a .txt file named questProIP in the same directory as the VRCFaceTracking.exe and questProSensitivity.ini. In the newly created file, enter the local IP address as shown next to "Meta Quest Pro" in the ALVR server application as the only text in the file, and save the file.

If you are planning on using a USB cable instead of Wi-Fi streaming for the ALXR/ALVR connection

  1. Follow the Official ALVR Community Instructions for setting up the USB connection.
  2. Change the text in the questProIP file to 127.0.0.1

Startup Procedure for ALVR/ALXR

  1. Launch the ALVR server application on the PC and the alxr_client application in the Quest Pro headset.
  2. Launch VRCFaceTracking.exe

Tips and Tricks

Aligning Play Spaces with SteamVR Lighthouse-tracked Devices

Download these Powershell Scripts (Discord Link)

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

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.

Common Issues (and How to Solve Them)

  • ALXR/ALVR methods: "[ERROR] No connection could be made because the target machine actively refused it"

    • Cause: The ALXR VRCFT server is not running.
    • Solution: Usually the problem is related to missing a step and the ALXR log may make it clear as to what step exactly was forgotten.
  • OpenXR VRCFT module method: "[QuestOpenXR] Failed to GetFaceExpressionWeightsFB"

    • Cause: There is some permission in the setup that was not set correctly.
    • Solution: Carefully re-run through the setup, paying careful attention to all the steps before the method split.
  • "I 100% made sure I followed all setup correctly, and I'm not getting any visible errors anywhere, but VRC only receives 0 values for all parameters (and VRC loaded a non-zero number of parameters from config)"

    • Solution: Try toggling the eye and face tracking enables in the headset settings.
  • Oculus Link/Airlink: My playspace calibration resets if I take off the headset.

    • Cause: When 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.
    • Solution: Download 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.