Playstation VR2#

The Playstation VR2 is a fairly well supported headset on Linux, either with the Ignition and PSVR2 Toolkit driver, or with Monado natively.

Currently, Monado supports neither 6DOF (Full motion controls) with the PSVR2 Sense controllers, nor passthrough with the headset.

💡 Tip

The Playstation Sense controllers included with the PSVR2 can be picky about the Bluetooth adapter you are using.
The main recommendation is the UB500 Plus as it has proven to work reliably with the Sense controllers.
If you already have a Bluetooth adapter, do see if it works well for you first.

Monado’s driver presently supports:

Ignition with the PSVR2 Toolkit driver does presently all of the same features as the Monado driver, as well as:

  • 6DOF Controller tracking
  • Adaptive trigger support
  • Improved controller haptics
  • Tracking improvements
  • and more

Some of PSVR2 Toolkit features require a jailbreak which enables support for direct eye tracking camera feeds and headset haptics.
The jailbreak is not needed for the Toolkit driver to run, it is only needed for those features.

Ignition & PSVR2 Toolkit#

Ignition enables the use of the PSVR2’s Windows driver and the modified PSVR2 Toolkit driver on linux.
The PSVR2 Toolkit driver offers improvements over the Official PSVR2 driver, enabling extra features. This driver can be used on Linux through Ignition.
This also includes full 6DOF controller support, Controller tracking improvements over the original driver and more.

Using PSVR2 Toolkit + Ignition#

⚠️ Warning

The PSVR2 Toolkit driver also includes optional features that require enabling of a Jailbreak.
While there haven’t been any cases yet, this does have the risk of bricking the headset. Enabling of these features is at your own risk.

Enabling of the Jailbreak is at your own peril!

Before starting setup, ensure that all the below dependencies are installed:

Steam, jq and xr-hardware should all be available as system packages, with Proton Experimental and the PSVR2 App being available via Steam.
You can verify the firmware version your headset is using by following the first part of the Firmware update guide

With all this installed, setup can begin.

  1. Download the latest version of Ignition and extract this folder to a path that the Steam Linux Runtime can see, such as /opt/ignition or ~/Documents/ignition

  2. Find the path of where Steam has installed the PSVR2 App. It should be in $HOME/.local/share/Steam/steamapps/common/PlayStation VR2 App

  3. Run the below commands to install the Ignition driver, making sure to edit this command to point to where you have put the Ignition files

    cd /path/to/ignition/
    ./install_ignition.sh "$HOME/.local/share/Steam/steamapps/common/PlayStation VR2 App/SteamVR_Plug-In"
  4. Change directory into the path of the newly created linux64 folder in the PSVR2 App’s SteamVR_Plug-In folder, then Run driver_install.sh from the linux64 folder.

    cd "$HOME/.local/share/Steam/steamapps/common/Playstation VR2 App/SteamVR_Plug-In/bin/linux64"
    ./driver_install.sh
  5. Change directory into the win64 driver folder and rename the driver_playstation_vr2.dll file in the folder to driver_playstation_vr2_orig.dll

    cd "$HOME/.local/share/Steam/steamapps/common/Playstation VR2 App/SteamVR_Plug-In/bin/win64"
    mv driver_playstation_vr2.dll driver_playstation_vr2_orig.dll
  6. Extract the contents of the PSVR2TK-win64-Ignition.zip from the PSVR2 Toolkit releases page into the $HOME/.local/share/Steam/steamapps/common/Playstation VR2 App/SteamVR_Plug_In/bin/win64 folder.

You can now launch SteamVR to verify that the headset is being detected, and to set up your playspace. Setting up the playspace is needed for full 6DOF movement in headset.

To set up the playspace, all you need to do is download the PSVR2 Unity Room setup utility and follow the on screen instructions.

This will also work with Monado with the below settings in Envision:

ℹ️ Note

This does not allow mixed tracking with SteamVR/Lighthouse devices presently.

  • Repo: https://gitlab.freedesktop.org/Supremium/monado
  • Branch: psvr2-linux-steam-lh

Set the XR Service CMake flag XRT_BUILD_DRIVER_PSVR2 to OFF to prevent the Native Monado driver from taking priority.
Then add the Environment variable in your envision profile of LH_LOAD_PSVR2 with a value of 1.

Setting up the PSVR2 Jailbreak#

🛑 Caution

This jailbreak can potentially brick your headset. While there have been no cases of this reported during testing, it is still possible.

This jailbreak is also not persistent. Every time the headset turns off (Red front LED), you will have to do this again.

Continue at your own peril!

The jailbreak is required for specific features in the PSVR2 Toolkit driver such as Headset haptics and direct Eye Tracking camera feeds.

To set up the jailbreak, follow the below.

Before you can run the Jailbreak, check that your headset is on firmware 0x06000102 (V6.0), as this is required for the Jailbreak to function. This also means you cannot use the headset on PS5 without having to repeatedly downgrade the headset, which could (in the future) have risk of preventing downgrades to V6.0.

If this is not the case, and you are on a version before V6.0, follow the Firwmare update part of the guide, then return here.

  1. Grab the vr2jb binary from the Jailbreak releases page

  2. Turn on your PSVR2 Headset (Should have a white light)

  3. Run vr2jb

If you are seeing a white flashing light on the headset, the jailbreak should now be active!

PSVR2 Toolkit Baballonia module#

ℹ️ Note

This requires the Jailbreak to be running, and for the Ignition driver to be active in either Monado or SteamVR.

There is a custom Baballonia module that enables the PSVR2 Eye tracking camera feeds under the Toolkit driver.

To install it, grab the latest release from the Releases section of the PSVR2Toolkit.Baballonia module github page Extract the PSVR2.Baballonia.zip file, then copy the contents of the resulting folder into your Baballonia modules folder.

In Baballonia, set a fake address for each eye of COM1 and COM2 for the Left and Right Eyes, then select the preferred backend PlayStation VR2 Go into the Cropping menu, and select the Left and Right frames.

You now have full Baballonia Eye Tracking!

Monado’s native driver#

ℹ️ Note

The below section uses the native Monado driver, which has some limitations compared to Ignition presently. This notably includes: 6DOF controller tracking, Sensor fusion on headset movements (Jittery head movement) and no direct Eyetracking camera feeds for Babble Eye tracking. This is still a usable driver if you wish to not use anything beyond Monado itself.

This driver is included with Monado itself and requires no additional dependencies. It supports full headset 6DOF movement, 3DOF controller movement and full OpenXR Eye Tracking support.

Using SteamVR controllers for 6DOF motion controls with the Monado driver#

As the PSVR2 Sense controllers currently only have 3DOF on the Monado driver, you may wish to use a branch which enables the use of SteamVR tracked devices to be able to use the headset for VR applications. This requires the use of a branch of Monado which enables it, and Motoc to combine the tracking spaces.

To set this up with Envision:

  1. Enable developer mode in the configuration drop down
  2. Enable Use development profiles
  3. Create a new profile, and set the XR Service repo to https://gitlab.freedesktop.org/Beyley/monado and the XR Service Branch to psvr2-work-steamvr
  4. Save and clean build the profile

With this branch, you will need to install Motoc which allows the PSVR2 and SteamVR controllers to track properly together.

You can follow the Motoc section below which has pre-written commands ready for use

Using the built in OpenXR Eye Tracking for Social VR on the Monado driver#

Install VRCFT.Avalonia, then install the ALXR Local module in the module registry page. Make sure to start up VRCFT.Avalonia after Monado, and you will have Eye tracking ready for use for Social VR experiences.

Additional steps that may be required#

This section notes any troubleshooting or additional requirements for both Ignition and the Monado driver.

Using Pre-PC firmware for Sony Playstation VR2#

If your headset doesn’t have a firmware newer than or including V5.00 (First PC supporting firmware, which released 6th of August 2024), you need to:

  1. Download and copy the custom psvr2_edid.bin (Thank you iVRy in the Monado Discord) to /lib/firmware/edid.
  2. Confirm what display your headset is plugged into. You can do this by turning the headset on and checking xrandr --verbose and looking for a device which only shows the following 2 resolution options: 1920x1080 and 640x480.
  3. Add the following kernel parameter to your boot-loader: drm.edid_firmware={The display your headset is plugged in to}:edid/psvr2_edid.bin. See the Arch wiki’s page on this for more info.
    In GRUB, you would edit /etc/default/grub and add the option to GRUB_CMDLINE_LINUX_DEFAULT. (Example: GRUB_CMD_LINE_LINUX_DEFAULT="quiet drm.edid_firmware=DP-3:edid/psvr2_edid.bin")
  4. Grab this kernel patch (Thank you to Nas in the Monado Discord!) and follow the kernel patch section on the hardware page.

Firmware update utility#

If you want to flash firmware updates, Supremium has released a utility called PSVR2Updater which allows flashing firmware without requiring a Windows VM or a PS5. This set of instructions is going to focus on installing firmware V6.00 as it has PCVR support, and enables the full PSVR2 Tooklit feature set.

⚠️ Warning

This tool does have a non-zero chance of bricking the headset, and the DepotDownloader tool requires your Steam login information. Continue at your own peril. Only run software from sources you trust!

  1. Download the latest release of PSVR2Updater.

  2. Extract the zip file, turn on the headset and run PSVR2Updater without arguments to check your firmware version. If you are below version 0x06000102, continue. Otherwise, you are already good to go.

  3. Add the official Sony Playstation VR2 app to your Steam library.

  4. Use DepotDownloader to download the PlaystationVR 2 app with the V6.00 firmware with this command, while providing your username and password:

    ℹ️ Note

    If you have installed DepotDownloader via your package manager, the binary may be named depotdownloader instead.

    ./path/to/DepotDownloader -app 2580190 -depot 2580191 -manifest 8448590652442674786 -username 'STEAM_USERNAME' -password 'STEAM_PASSWORD'

If you are on a version of PSVR2 Firmware higher than 0x06000102, follow this section

  1. Download the vr2jb binary
  2. Turn on your PSVR2 headset (Should have a white light)
  3. Run vr2jb downgrade

This will put the headset into recovery mode.

If your headset is below 0x06000102 or you have enabled recovery mode, you can follow the below:

You can now flash the downloaded 0x06000102 firmware:

./path/to/PSVR2Updater ./path/to/depots/2580191/19697519/Firmware/PS_VR2_FW/HMD2_FIRMWARE.CUP

The firmware should now be on Firmware V6.00 and ready to use with Monado or Igniton and PSVR2 Toolkit.

Using Motoc for SteamVR controllers with the PSVR2#

To use this, you will need your PSVR2’s serial and a SteamVR device serial. You can get the serial numbers by using motoc show while Monado is running.

Once you have the serial numbers, you can use the command below to begin calibration.

💡 Tip

You do have to move the headset and a controller you are using to calibrate them together, ideally with them rigidly attached.

motoc calibrate --src {PSVR2 Serial Number} --dst {SteamVR device Serial Number}
💡 Tip

If you are using a SteamVR tracker (i.e. HTC Vive tracker or Tundra tracker), you can use continuous calibration if you attach it to the headset.

motoc calibrate --src {PSVR2 Serial Number} --dst {SteamVR Tracker Serial Number} --continue