merge from remote

This commit is contained in:
kzd
2025-10-16 16:23:41 -04:00
27 changed files with 595 additions and 97 deletions

View File

@@ -0,0 +1,69 @@
---
title: Fedora Atomic (Bazzite)
---
# Fedora Atomic
This documentation applies to both Fedora's Atomic images (Silverblue, Kinoite, etc.), as well as Universal Blue images (Bazzite, Bluefin, etc.)
# AtomicXR
The recommended way to set up Fedora Atomic for VR is with [AtomicXR](https://tangled.sh/@matrixfurry.com/atomic-xr). See the [README](https://tangled.sh/@matrixfurry.com/atomic-xr/blob/main/README.md) for the most up-to date usage instructions.
## Installation & Setup
{{% hint info %}}
You'll need to install [Homebrew](https://brew.sh/) to use AtomicXR. See [this page](https://docs.brew.sh/Homebrew-on-Linux#install) for installation instructions.
If you're using a Universal Blue image (Bazzite, Bluefin, etc.), it's already installed for you.
{{% /hint %}}
1. Add the AtomicXR Homebrew tap:
```sh
brew tap matrixfurry.com/atomicxr https://tangled.sh/@matrixfurry.com/homebrew-atomicxr
```
2. Install the AtomicXR CLI (`axr`):
```sh
brew install atomicxr-cli
```
## [Envision](/docs/fossvr/envision/)
### Installation
After installing the AtomicXR CLI, you can use `axr envision install` to install Envision.
### Building profiles
{{% hint note %}}
It's bad practice to install development packages on your base system, to improve system stabilty and performance.
AtomicXR will instead set up a container with all your build depencencies installed.
Launching Envision in build mode will start it inside of that container.
{{% /hint %}}
To build profiles, right click Envision in your application menu and click "Launch in Build Mode".
## Overlays & Applications
### Install
- [WlxOverlay-S](/docs/fossvr/wlxoverlay-s/): `brew install wlx-overlay-s`
- [WayVR Dashboard](/docs/fossvr/wlxoverlay-s/#wayvr-dashboard): `brew install --cask wayvr-dashboard`
- [Monado Tracking Origin Calibrator](/docs/fossvr/motoc/): `brew install motoc`
- [OSC Avatar Manager](https://github.com/galister/oscavmgr): `brew install oscavmgr vrc-advert`
### OscAvMgr
OscAvMgr [requires VrcAdvert to handle OscQuery](https://github.com/galister/oscavmgr?tab=readme-ov-file#setting-up-to-use-with-vrchat).
A command is included to launch OscAvMgr and VrcAdvert together for you (use `openxr` for WiVRn):
```sh
axr oscavmgr start <babble|openxr|alvr>
```
## Troubleshooting
See [this section](https://tangled.sh/@matrixfurry.com/atomic-xr#troubleshooting) in the README for the most up-to-date troubleshooting steps.
### Envision Plugin download failed
Plugins should be installed from the [AtomicXR Homebrew Tap](https://tangled.sh/@matrixfurry.com/homebrew-atomicxr) instead of Envision. Envision doesn't provide a way to download plugins via a command (yet).
## Support
You can open an issue on [Tangled](https://tangled.sh/@matrixfurry.com/atomic-xr/issues), ask questions in [this post](https://discord.com/channels/1065291958328758352/1389409336580767775) on the LVRA Discord, or reach out to [the maintainer](https://woosh.link/matrixfurry.com) directly.

View File

@@ -1,6 +1,6 @@
---
title: DEMoCap - Drag[en]gine Motion Capture
weight: 100
weight: 1100
---
# DEMoCap - Drag[en]gine Motion Capture
@@ -34,4 +34,4 @@ To start a motion capture project you have to first prepare your character model
Once done you can create a motion capture project in DEMoCap and get going. See [Project Management](https://developer.dragondreams.ch/wiki/doku.php/democap:projectmanagement#project_management) to create a new project and the various pages under [Documentation and Tutorials](https://developer.dragondreams.ch/wiki/doku.php/democap:main#documentation) for information about the individual steps.
If you have questions or problems drop by the [discord channel](https://discord.gg/Jeg62ns) for help.
If you have questions or problems drop by the [discord channel](https://discord.gg/Jeg62ns) for help.

View File

@@ -1,5 +1,5 @@
---
weight: 49
weight: 100
title: Envision
---
@@ -13,6 +13,10 @@ title: Envision
Envision is a graphical app that acts as an orchestrator to get a full [Monado](/docs/fossvr/monado/) or [WiVRn](/docs/fossvr/wivrn/) setup up and running with a few clicks.
{{% hint danger %}}
**Do not** use Envision for WiVRn directly unless you absolutely need it to access experimental patches. See [WiVRn](/docs/fossvr/wivrn/) as WiVRn has it's own GUI much more suited to itself than Envision and may be installed via Flatpak, AUR, or Fedora repos.
{{% /hint %}}
Envision attempts to construct a working runtime with both a native OpenXR and an OpenVR API, provided by [OpenComposite](/docs/fossvr/opencomposite/), for client aplications to utilize. Please note the OpenVR implementation is incomplete and contains only what's necessary to run most games for compatibility. If you plan to implement software, utilize the OpenXR API, specification [here](https://registry.khronos.org/OpenXR/specs/1.0/html/xrspec.html).
{{% hint danger %}}

View File

@@ -5,6 +5,8 @@ title: WMR Controller Tracking on Arch
# Envision Installation on Arch with Controller Tracking
## Install Envision-XR with Paru on Arch
## Recommendations:
- **Paru** as the Arch AUR helper
- **KDE** as the desktop environment for better compatibility with SteamVR (may not be necessary)
@@ -18,31 +20,15 @@ cd paru
makepkg -si
```
## Monado Vulkan Layers
These are only needed if you have an NVIDIA Card and a Nvidia Driver before 565.77.01.
[Monado Vulkan Layers AUR](https://aur.archlinux.org/packages/monado-vulkan-layers-git)
### Paru Installation
```bash
paru -S monado-vulkan-layers-git
```
### Normal Installation with compiling manually
```bash
git clone https://aur.archlinux.org/monado-vulkan-layers-git.git
cd monado-vulkan-layers-git
makepkg -i
```
- -> Install dependencies and, if needed, run `makepkg -i` again.
## Envision-XR with Paru
### Install Envision-XR from AUR using Paru:
[Envision-XR AUR](https://aur.archlinux.org/packages/envision-xr-git)
```bash
paru -S envision-xr-git
```
## Envision Configuration <small>(Non-Arch users follow from here!)</small>
### Envision Setup
- Select **WMR default**.
- Select profile: **WMR default**.
![WMR default](/images/EnvisionXR_WMR.png "Envision XR Screen with WMR Envision Default selected")
- Duplicate and adjust settings:
@@ -75,4 +61,28 @@ paru -S envision-xr-git
WARN [wmr_controller_send_fw_cmd] Controller fw read timed out after 250 ms
ERROR [wmr_bt_controller_create] WMR Controller (Bluetooth): Failed to create controller
ERROR [wmr_create_bt_controller] Failed to create WMR controller (Bluetooth)
```
```
### Troubleshooting
#### NVIDIA: No allowlisted displays found!
1. See the logs:
```
== Current Allowlist (8) ==
Sony SIE HMD *08
HTC Corporation HTC-VIVE
HTC Corporation VIVE Pro
Oculus VR Inc. Rift
Valve Corporation Index HMD
Seiko/Epson SEC144A
HPN
PNP
== Found Displays (2) ==
SAMSUNG (HDMI-0)
HP Inc. (DP-2)
```
2. Identify which entry under Found Displays is your HMD.
3. Add the following env var to the Envision profile, with the correct name for your HMD:
`XRT_COMPOSITOR_FORCE_NVIDIA_DISPLAY="HP Inc."`

View File

@@ -1,5 +1,5 @@
---
weight: 53
weight: 900
title: Valve Index Camera Passthrough
---

View File

@@ -1,5 +1,5 @@
---
weight: 100
weight: 800
title: LÖVR
---
@@ -12,4 +12,4 @@ title: LÖVR
The LÖVR engine is a Lua XR engine, written in C, which supports overlays on monado. Very simple and fun to implement whatever you would like.
- [lovr-playspace](/docs/fossvr/lovr/lovr-playspace/) A barebones room boundary built on the LÖVR engine.
- [lovr-playspace](/docs/fossvr/lovr/lovr-playspace/) A barebones room boundary built on the LÖVR engine.

View File

@@ -1,5 +1,5 @@
---
weight: 50
weight: 200
title: Monado
---

View File

@@ -0,0 +1,27 @@
---
weight: 200
title: FlipVR controllers
---
# Using FlipVR with the Monado OpenXR Runtime
This is currently the only way to use these controllers in [Resonite](/docs/resonite/) as of 2025-08-22
From the [ShiftAll Discord](https://discord.com/invite/Z9Tp7tUzmb) ([link to post](https://discord.com/channels/1093765691582185482/1262995177845293076/1408272236703387688)):
> _I expect you are using [Envision](https://gitlab.com/gabmus/envision) to setup Monado and OpenComposite/xrizer. If you aren't, you'll have to manually compile and setup Monado yourself._
>
> 1. Create a new "Lighthouse Driver" profile in Envision.
> 2. Change the "XR Service Repo" to `https://gitlab.freedesktop.org/PointerOffset/monado`
> 3. Change the "XR Service Branch" to `steamvr_lh-flipvr`
> 4. Build the profile.
> 5. Install the "Shiftall Controller Driver" from Steam if you haven't already: https://store.steampowered.com/app/3036810/Shiftall_Controller_Driver/
> 6. Copy the contents of the "Shiftall Controller Drivers" folder to SteamVR's driver folder. The directory _must_ be named `shiftall`.
>
> For the last step, if everything is in the default locations, this command should get it copied:
> ```
> cp -r ~/.local/share/Steam/steamapps/common/Shiftall\ Controller\ Drivers ~/.local/share/Steam/steamapps/common/SteamVR/drivers/shiftall
> ```
>
> If everything went correctly, you should now have working FlipVR controllers through Monado. **If you're using this to run Resonite on Linux, you'll need to use _xrizer_ for your "OpenVR Compatibility" module.**
>
> If you try it, please let me know if it works and how it feels! I might need to adjust the controller offsets and I'd like to make it so you don't need to copy the Shiftall driver files. Hoping to try and get this merged into Monado sometime in the near-future though. Thank you if you give it a shot!

View File

@@ -1,5 +1,5 @@
---
weight: 50
weight: 1000
title: Motoc
---
@@ -19,4 +19,4 @@ Please take a look at the GitHub Readme for a comprehensive guide.
## Support
Reach out in the `monado` or `wivrn` room in Discord or Matrix.
Reach out in the `monado` or `wivrn` room in Discord or Matrix.

View File

@@ -1,5 +1,5 @@
---
weight: 800
weight: 500
title: OpenComposite
---

View File

@@ -1,6 +1,6 @@
---
title: Stardust XR
weight: 52
weight: 700
---
# Stardust XR

View File

@@ -1,5 +1,5 @@
---
weight: 50
weight: 300
title: WiVRn
---
@@ -71,6 +71,7 @@ flatpak override --user --filesystem=xdg-config/openxr:ro com.valvesoftware.Stea
flatpak override --user --filesystem=xdg-config/openvr:ro com.valvesoftware.Steam
flatpak override --user --filesystem=xdg-run/wivrn com.valvesoftware.Steam
flatpak override --user --filesystem=/var/lib/flatpak/app/io.github.wivrn.wivrn:ro com.valvesoftware.Steam
flatpak override --user --filesystem=~/.var/app/io.github.wivrn.wivrn:ro com.valvesoftware.Steam
```
As an added bonus to the above, this command will save you the effort of having to set launch options for every single VR game in your Steam library:
@@ -101,7 +102,7 @@ Manual steps: See the [README](https://github.com/WiVRn/WiVRn/blob/master/README
To use SlimeVR trackers through WiVRn, you currently must use a [fork](https://github.com/notpeelz/WiVRn) of WiVRn:
### Usage with Envision
### Option A: Build with Envision
To use this fork within Envision, edit these fields in your profile:
- XR Service Repo: `https://github.com/notpeelz/WiVRn.git`
@@ -110,7 +111,7 @@ To use this fork within Envision, edit these fields in your profile:
Then save and clean build the profile.
### NixOS setup
### Option B: NixOS
Override the `wivrn` package from nixpkgs with something resembling the following, replacing `[COMMIT HASH HERE]` with the latest commit hash from https://github.com/notpeelz/WiVRn/commits/solarxr-patches and filling in the correct src hash. Do note you may need to adapt this depending on how you install WiVRn:
```nix
{ pkgs, lib, ... }:
@@ -142,7 +143,9 @@ This section covers using WiVRn 0.19 and newer with any Lighthouse-tracked devic
You must have SteamVR installed (no need to run it).
### Using Distro-Native Packages
Upstream xrizer doesn't support FBT, so either **select OpenComposite as the OpenVR library** in WiVRn dashboard settings, or build the [experimental2 branch of xrizer](https://github.com/RinLovesYou/xrizer/tree/experimental2).
### Option A: Use Distro-Native Packages
These packages come with lighthouse support enabled (Flatpak & Envision does NOT)
- Arch: Install `wivrn-dashboard wivrn-server` from AUR
@@ -153,7 +156,7 @@ Open the WiVRn dashboard and under advanced settings, tick `Enable SteamVR track
Warning: distro-native packages are known to have issues with Flatpak Steam.
### Envision
### Option B: Build using Envision
Set WiVRn Profile as such:
- XR Service CMake Flags:
- `WIVRN_FEATURE_STEAMVR_LIGHTHOUSE=ON`
@@ -163,7 +166,7 @@ Set WiVRn Profile as such:
Perform a **Clean Build** after changing the CMake flags!
### NixOS
### Option C: NixOS
Override the `wivrn` package and launch wivrn-server with the required environment variables:
```nix
{
@@ -183,7 +186,7 @@ Override the `wivrn` package and launch wivrn-server with the required environme
}
```
### Manual
### Option D: Manual Build
Simply pass `-DWIVRN_FEATURE_STEAMVR_LIGHTHOUSE=ON` to CMake and export the above environment variables before starting `wivrn-server`.
### Usage tips

View File

@@ -1,5 +1,5 @@
---
weight: 51
weight: 600
title: WlxOverlay-S
---
@@ -21,6 +21,12 @@ WayVR acts as a bridge between Wayland applications and WlxOverlay-S panels, all
Read more about setup/usage in the [WayVR README](https://github.com/galister/wlx-overlay-s/tree/main/contrib/wayvr).
## WayVR-Dashboard
WayVR Dashboard is a work-in-progress overlay application (in the form of a WlxOverlay-S plugin) for launching various applications and games directly into a VR desktop environment.
For more details, read the [WayVR-Dashboard README](https://github.com/olekolek1000/wayvr-dashboard/).
## Support
Reach out in the `wlxoverlay` room in Discord or Matrix.
Reach out in the `wlxoverlay` room in Discord or Matrix.

View File

@@ -1,6 +1,6 @@
---
title: WMR Lighthouse (No SteamVR)
weight: 9000
weight: 2000
---
# WMR Lighthouse (No SteamVR)

View File

@@ -1,5 +1,5 @@
---
weight: 900
weight: 1200
title: xrBinder
---

View File

@@ -1,5 +1,5 @@
---
weight: 300
weight: 400
title: xrizer
---
@@ -20,7 +20,7 @@ title: xrizer
If you would like a battle-tested solution, see [OpenComposite](/docs/fossvr/opencomposite/).
{{% /hint %}}
Currently xrizer does not support full body tracking, however there is a **work-in-progress** [fork by RinLovesYou](https://github.com/RinLovesYou/xrizer/tree/experimental2) with support while using Monado.
Currently xrizer does not support full body tracking, however there is a **work-in-progress** [fork by RinLovesYou, maintained by Mr-Zero88](https://github.com/Mr-Zero88/xrizer/tree/fbt) with support while using Monado.
To use the above fork, follow these steps:
@@ -28,8 +28,8 @@ To use the above fork, follow these steps:
- Click the three dots next to the profile selector and select 'Edit profile'
- If a popup asks if you would like to duplicate the profile, click yes.
- Scroll down to 'OpenVR Compatibility' and set the following fields:
- OpenVR Compatibility Repo: `https://github.com/RinLovesYou/xrizer.git`
- OpenVR Compatibility Branch: `experimental2`
- OpenVR Compatibility Repo: `https://github.com/Mr-Zero88/xrizer.git`
- OpenVR Compatibility Branch: `fbt`
- Clean build your profile from the menu at the top right, or use the Ctrl+F5 keybind.
### NixOS

View File

@@ -0,0 +1,28 @@
---
title: Assetto Corsa
weight: 50
---
# Assetto Corsa
[Assetto Corsa](https://store.steampowered.com/app/244210/Assetto_Corsa/) runs with [Proton](https://www.protondb.com/app/244210).
## Content Manager
The most commonly used method to load custom content is [Content Manager](https://assettocorsa.club/content-manager.html).
Download the executable and place it in `~/.steam/steam/steamapps/common/assettocorsa/` as `Content Manager Safe.exe`.
In Steam, create the following launch-option:
```
'~/.steam/steam/steamapps/common/Proton - Experimental/proton' waitforexitandrun '~/.steam/steam/steamapps/common/assettocorsa/Content Manager Safe.exe'; echo %command%
```
Optionally replace `~/.steam/steam/steamapps/common/Proton - Experimental/proton` with the path to another Proton executable.
### Content
All custom content is located in `~/.steam/steam/steamapps/common/assettocorsa/content/`.
#### Settings/Further Reading
[raptyyy's AC VR Guide](https://raptyyy.github.io/vr-guide/#/README)

View File

@@ -0,0 +1,13 @@
---
title: Beat Saber
weight: 50
---
# Beat Saber
[Beat Saber](https://store.steampowered.com/app/620980/Beat_Saber/) runs under Proton without issue.
## Modding
[BSManager](https://github.com/Zagrios/bs-manager) is a one-stop modding solution for Beat Saber modding under linux. [Installation instructions](https://github.com/Zagrios/bs-manager/wiki/install-bsmanager-on-linux)

View File

@@ -28,8 +28,6 @@ While in VR, if you have mods that add extra items in the main menu, they will b
Currently, Proton 9 and above has an issue ([#8409](https://github.com/ValveSoftware/Proton/issues/8409)) causing NomaiVR to instantly crash on startup, only rendering the game window for a split second.\
The workaround is to just use Proton 8.
Do note that as Proton GE-RTSP is using the latest releases of Proton upstream, it will also not work until this issue is patched.
### Default Quest/Pico 4 controller bindings only partially work with XRizer
When playing the game with XRizer and you use Quest or Pico 4 Controllers, it is recommended to use [this custom bindings file](https://github.com/user-attachments/files/19900420/oculustouch.json) ([more info here](https://github.com/Raicuparta/nomai-vr/issues/558#issue-3018649448)).

View File

@@ -14,19 +14,25 @@ title: VR Gear & GPUs
| Manufacturer/ Hardware | Driver | VR Support | Reprojection Support | Hybrid Graphics Support | Notes |
|--------------|---------------------------|----------------|--------------------------------|-------------------------------|----------------------------------------------------------------------------------------------|
| Nvidia >= 16XX Series GPU | Nvidia (Open Module) | ✅ Acceptable | ⚠️ Partial | ✅ Supported | Requires driver version 565+. [Critical DRM lease issue](https://forums.developer.nvidia.com/t/substantial-drm-lease-presentation-latency-resulting-in-unusable-vr-hmd-experience/332386) causes uncomfortable latency in wired VR, requires runtime mitigation found below support table. Best used with wireless solutions (WiVRn). Works for wired VR. |
| Nvidia <= 10XX Series GPU | Nvidia (Closed Source Module) | ⚡ No wired VR | ⚠️ Partial | ✅ Supported | Requires driver version 565+. Best used with wireless solutions (WiVRn). [No wired VR support.](https://forums.developer.nvidia.com/t/nvidia-proprietary-non-open-modules-completely-unable-to-acquire-a-drm-lease-on-any-display-server-all-known-nvidia-drivers-any-hardware/341244) |
| Nvidia <= 10XX Series GPU | Nvidia (Closed Source Module) | ✅ Acceptable | ⚠️ Partial | ✅ Supported | Requires driver version 565+. [No Valve Index support.](https://forums.developer.nvidia.com/t/nvidia-proprietary-non-open-modules-completely-unable-to-acquire-a-drm-lease-on-any-display-server-all-known-nvidia-drivers-any-hardware/341244) |
| Nvidia/ Any | Nouveau (Open Source) | ⚠️ Limited | ❌ Not Viable | ✅ Supported | Cannot reproject due to lack of realtime compute shader support needed by Monado. Lacks DisplayPort audio. Not recommended for VR. |
| AMD RDNA generation GPU | RADV (Open Source) | ✅ Excellent | ✅ Robust (RDNA+) | ✅ Supported | Recommended for wired VR. |
| AMD GCN generation GPU | RADV (Open Source) | ✅ Excellent | ⚠️ Limited | ✅ Supported | Not recommended for wired VR. Pre-RDNA GPUs have functional but less robust reprojection. |
| AMD/ Any | AMDVLK (Open Source) | ❌ Not Viable | ❌ Not Viable | ❌ N/A | RADV preferred in all circumstances. Unable to drive wired HMDs. Do not use. Do not seek support. |
| AMD/ Any | AMDGPU PRO (Closed Source)| ❌ Not Viable | ❌ Not Viable | ❌ N/A | RADV preferred in all circumstances. Unable to drive wired HMDs. Do not use. Do not seek support. |
| Intel/ Any | i915 (Open Source) | ⚡ Functional | ❓ Unknown | ✅ Supported | Relatively old driver, likely poor support for newer GPUs. Limited testing with VR applications. |
| Intel/ Any | Intel/Xe (Open Source) | ❌ No wired HMDs | ❌ N/A | ✅ Supported | Lacks direct mode implementation in driver, unable to drive wired HMDs. |
| Intel/ Any | i915 (Open Source) | ⚡ Functional | ✅ Robust (Limited testing) | ✅ Supported | Relatively old driver. SteamVR/ALVR doesn't start. WiVRn tested working. Graphical glitches in some games. |
| Intel/ Any | Intel/Xe (Open Source) | ❌ No wired HMDs | ✅ Robust (Limited testing) | ✅ Supported | Lacks direct mode implementation in driver, unable to drive wired HMDs. WiVRn tested working. Graphical glitches in some games. |
**Notes:**
- **Nvidia Wired VR Workaround**: Wired users should certainly set `XRT_COMPOSITOR_USE_PRESENT_WAIT` to 1 which changes the swapchain to explicit sync behavior and `U_PACING_COMP_TIME_FRACTION_PERCENT` to 90, representing 90% of the time it takes to render a frame can significantly reduce the latency effect with Nvidia GPUs. There are notable frametime issues in the driver still which may result in stutter but this should vastly improve the experience.
- For Nvidia proprietary drivers *older* than 565, (please try to update!), the [vulkan-layers](https://gitlab.freedesktop.org/monado/utilities/vulkan-layers) must be installed in order to not crash: [*AUR*](https://aur.archlinux.org/packages/monado-vulkan-layers-git)・[*Fedora*](https://packages.fedoraproject.org/pkgs/monado-vulkan-layers/monado-vulkan-layers/)
- Audio over displayport is known to temporarily cut out when new audio sources spring up on pipewire [without a fix to add alsa headroom](https://wiki.archlinux.org/title/PipeWire#Audio_cutting_out_when_multiple_streams_start_playing)
- Wired HMDs on Intel Arc GPUs: Only DisplayPort-based HMDs work, only with i915 driver. Tested: A580, A770 with HP Reverb G2 (OK), Acer AH101 (FAIL).
- Direct Display Mode doesn't work with HDMI-based HMDs.
- Xe driver currently doesn't support Direct Display Mode at all.
- Audio over DisplayPort is known to temporarily cut out whenever new audio sources spring up on PipeWire [without a fix to add ALSA headroom](https://wiki.archlinux.org/title/PipeWire#Audio_cutting_out_when_multiple_streams_start_playing).
- This fix's default values adds a lot of audio latency to the entire system. If you're someone who is sensitive to audio latency, you can try changing period-size=64 and headroom=512. If audio continues to cut off, double these values.
- Also, this fix will change the latency of _all_ audio output devices. To tweak the audio output latency of your HMD _only_, which is usually sufficient to prevent cutouts, use `pactl list sinks` to identify the Sink Name that your HMD is currently connected to, and edit the headroom fix file by changing the `node.name`.
- For example: `node.name = "alsa_output.pci-0000_03_00.1.hdmi-stereo-extra2"` (not a typo, it's still connected via DisplayPort)
## XR Devices
@@ -40,8 +46,8 @@ A non-comprehensive table of various VR/XR devices and the drivers that support
| HTC Vive | ✅ | ✅ | 🚧 (WiVRn PC-PC stream) |
| HTC Vive Pro | ✅ | ✅ | 🚧 (WiVRn PC-PC stream) |
| HTC Vive Pro Eye | ✅ | ✅ | 🚧 (WiVRn PC-PC stream) |
| HTC Vive Pro 2 | ✅ (custom [driver and patches](https://github.com/CertainLach/VivePro2-Linux-Driver)) | ✅ (With two kernel patches [1](https://github.com/CertainLach/VivePro2-Linux-Driver/blob/master/kernel-patches/0002-drm-edid-parse-DRM-VESA-dsc-bpp-target.patch) [2](https://github.com/CertainLach/VivePro2-Linux-Driver/blob/master/kernel-patches/0003-drm-amd-use-fixed-dsc-bits-per-pixel-from-edid.patch), Nvidia driver 580+ open kernel modules.) | -- |
| Bigscreen Beyond | ✅ (with [kernel patch](https://gist.github.com/galister/08cddf10ac18929647d5fb6308df3e4b/raw/0f6417b6cb069f19d6c28b730499c07de06ec413/combined-bsb-6-10.patch), Nvidia driver 580+ open kernel modules.) | ✅ (with [kernel patch](https://gist.github.com/galister/08cddf10ac18929647d5fb6308df3e4b/raw/0f6417b6cb069f19d6c28b730499c07de06ec413/combined-bsb-6-10.patch), Nvidia driver 580+ open kernel modules.) | -- |
| HTC Vive Pro 2 | ✅ (custom [driver and patches](https://github.com/CertainLach/VivePro2-Linux-Driver)) | ✅ (With two kernel patches [1](https://github.com/CertainLach/VivePro2-Linux-Driver/blob/master/kernel-patches/0002-drm-edid-parse-DRM-VESA-dsc-bpp-target.patch) [2](https://github.com/CertainLach/VivePro2-Linux-Driver/blob/master/kernel-patches/0003-drm-amd-use-fixed-dsc-bits-per-pixel-from-edid.patch), AMD GPUs or Nvidia driver 580+ open kernel modules.) | -- |
| Bigscreen Beyond | ✅ (with kernel patch for [<= 6.14](https://gist.github.com/galister/08cddf10ac18929647d5fb6308df3e4b/raw/0f6417b6cb069f19d6c28b730499c07de06ec413/combined-bsb-6-10.patch) and [>= 6.15](bigscreen-beyond-kernel-6.15.patch), AMD GPUs or Nvidia driver 580+ open kernel modules.) | ✅ (with kernel patch for [<= 6.14](https://gist.github.com/galister/08cddf10ac18929647d5fb6308df3e4b/raw/0f6417b6cb069f19d6c28b730499c07de06ec413/combined-bsb-6-10.patch) and [>= 6.15](bigscreen-beyond-kernel-6.15.patch), AMD GPUs or Nvidia driver 580+ open kernel modules.) | -- |
| Somnium VR1 | ⚠️ Rumored successful internal test by Somnium. | ⚠️ Rumored successful internal test by Somnium. | ⚠️🚧 (WiVRn PC-PC stream) |
| VRgineers XTAL | ? | ? | ? |
| StarVR One | ? | ? | ? |
@@ -109,6 +115,16 @@ A non-comprehensive table of various VR/XR devices and the drivers that support
- Eyetrack VR and Project Babble will both be implemented through [oscavmgr](https://github.com/galister/oscavmgr) to emit proper unified flexes over OSC.
- Tracking technologies can be mixed Monado/WiVRn by using [motoc](https://github.com/galister/motoc).
### Desktop hangs on start of SteamVR or Monado
Symptoms:
- When starting the SteamVR or Monado for the first time, the desktop freezes and after 15 seconds the SteamVR window is open but the Headset does not show a picture.
- Restarting SteamVR solves this.
- Unplugging the headset and plugging it back in solves this.
- `dmesg | grep amdgpu` prints a line containing `ERROR dc_stream_state is NULL for crtc '1'!` (or some other number).
This is a regression with the current RADV driver. A kernel patch is available [on this GitLab issue](https://gitlab.freedesktop.org/drm/amd/-/issues/1856#note_2836580). See the section on [how to apply a kernel patch](#applying-a-kernel-patch-for-vive-pro-2-bigscreen-beyond-pimax).
## Applying a kernel patch (for Vive Pro 2, Bigscreen Beyond, Pimax)
### Arch

View File

@@ -0,0 +1,243 @@
diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c
index 3b4065099..639699e3b 100644
--- a/drivers/gpu/drm/drm_edid.c
+++ b/drivers/gpu/drm/drm_edid.c
@@ -189,6 +189,9 @@ static const struct edid_quirk {
/* Rotel RSX-1058 forwards sink's EDID but only does HDMI 1.1*/
EDID_QUIRK('E', 'T', 'R', 13896, EDID_QUIRK_FORCE_8BPC),
+ /* Bigscreen Beyond Headset */
+ EDID_QUIRK('B', 'I', 'G', 0x1234, EDID_QUIRK_NON_DESKTOP),
+
/* Valve Index Headset */
EDID_QUIRK('V', 'L', 'V', 0x91a8, EDID_QUIRK_NON_DESKTOP),
EDID_QUIRK('V', 'L', 'V', 0x91b0, EDID_QUIRK_NON_DESKTOP),
From c33583995576e9ac532c4ad9e260324b1c4fa3a3 Mon Sep 17 00:00:00 2001
From: Yaroslav Bolyukin <iam@lach.pw>
Date: Sun, 30 Oct 2022 19:04:26 +0100
Subject: [PATCH 3/3] drm/amd: use fixed dsc bits-per-pixel from edid
VESA vendor header from DisplayID spec may contain fixed bit per pixel
rate, it should be respected by drm driver
Signed-off-by: Yaroslav Bolyukin <iam@lach.pw>
Reviewed-by: Wayne Lin <Wayne.Lin@amd.com>
---
drivers/gpu/drm/amd/display/dc/core/dc_stream.c | 2 ++
drivers/gpu/drm/amd/display/dc/dc_types.h | 3 +++
2 files changed, 5 insertions(+)
diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_stream.c b/drivers/gpu/drm/amd/display/dc/core/dc_stream.c
index 38d71b5c1f2d..f2467b64268b 100644
--- a/drivers/gpu/drm/amd/display/dc/core/dc_stream.c
+++ b/drivers/gpu/drm/amd/display/dc/core/dc_stream.c
@@ -103,6 +103,8 @@ static bool dc_stream_construct(struct dc_stream_state *stream,
/* EDID CAP translation for HDMI 2.0 */
stream->timing.flags.LTE_340MCSC_SCRAMBLE = dc_sink_data->edid_caps.lte_340mcsc_scramble;
+ stream->timing.dsc_fixed_bits_per_pixel_x16 =
+ dc_sink_data->edid_caps.dsc_fixed_bits_per_pixel_x16;
memset(&stream->timing.dsc_cfg, 0, sizeof(stream->timing.dsc_cfg));
stream->timing.dsc_cfg.num_slices_h = 0;
diff --git a/drivers/gpu/drm/amd/display/dc/dc_types.h b/drivers/gpu/drm/amd/display/dc/dc_types.h
index dc78e2404b48..65915a10ab48 100644
--- a/drivers/gpu/drm/amd/display/dc/dc_types.h
+++ b/drivers/gpu/drm/amd/display/dc/dc_types.h
@@ -231,6 +231,9 @@ struct dc_edid_caps {
bool edid_hdmi;
bool hdr_supported;
+ /* DisplayPort caps */
+ uint32_t dsc_fixed_bits_per_pixel_x16;
+
struct dc_panel_patch panel_patch;
};
--
2.38.1
diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c
index 3b4065099..15268afa3 100644
--- a/drivers/gpu/drm/drm_edid.c
+++ b/drivers/gpu/drm/drm_edid.c
@@ -6391,7 +6391,7 @@ static void drm_parse_vesa_mso_data(struct drm_connector *connector,
if (oui(vesa->oui[0], vesa->oui[1], vesa->oui[2]) != VESA_IEEE_OUI)
return;
- if (sizeof(*vesa) != sizeof(*block) + block->num_bytes) {
+ if (block->num_bytes < 5) {
drm_dbg_kms(connector->dev,
"[CONNECTOR:%d:%s] Unexpected VESA vendor block size\n",
connector->base.id, connector->name);
@@ -6414,24 +6414,37 @@ static void drm_parse_vesa_mso_data(struct drm_connector *connector,
break;
}
- if (!info->mso_stream_count) {
- info->mso_pixel_overlap = 0;
- return;
- }
+ info->mso_pixel_overlap = 0;
+
+ if (info->mso_stream_count) {
+ info->mso_pixel_overlap = FIELD_GET(DISPLAYID_VESA_MSO_OVERLAP, vesa->mso);
+
+ if (info->mso_pixel_overlap > 8) {
+ drm_dbg_kms(connector->dev,
+ "[CONNECTOR:%d:%s] Reserved MSO pixel overlap value %u\n",
+ connector->base.id, connector->name,
+ info->mso_pixel_overlap);
+ info->mso_pixel_overlap = 8;
+ }
- info->mso_pixel_overlap = FIELD_GET(DISPLAYID_VESA_MSO_OVERLAP, vesa->mso);
- if (info->mso_pixel_overlap > 8) {
drm_dbg_kms(connector->dev,
- "[CONNECTOR:%d:%s] Reserved MSO pixel overlap value %u\n",
- connector->base.id, connector->name,
- info->mso_pixel_overlap);
- info->mso_pixel_overlap = 8;
+ "[CONNECTOR:%d:%s] MSO stream count %u, pixel overlap %u\n",
+ connector->base.id, connector->name,
+ info->mso_stream_count, info->mso_pixel_overlap);
+ }
+
+ if (block->num_bytes < 7) {
+ /* DSC bpp is optional */
+ return;
}
+ info->dp_dsc_bpp = FIELD_GET(DISPLAYID_VESA_DSC_BPP_INT, vesa->dsc_bpp_int) * 16 +
+ FIELD_GET(DISPLAYID_VESA_DSC_BPP_FRACT, vesa->dsc_bpp_fract);
+
drm_dbg_kms(connector->dev,
- "[CONNECTOR:%d:%s] MSO stream count %u, pixel overlap %u\n",
- connector->base.id, connector->name,
- info->mso_stream_count, info->mso_pixel_overlap);
+ "[CONNECTOR:%d:%s] DSC bits per pixel %u\n",
+ connector->base.id, connector->name,
+ info->dp_dsc_bpp);
}
static void drm_update_mso(struct drm_connector *connector,
@@ -6479,6 +6492,7 @@ static void drm_reset_display_info(struct drm_connector *connector)
info->mso_stream_count = 0;
info->mso_pixel_overlap = 0;
info->max_dsc_bpp = 0;
+ info->dp_dsc_bpp = 0;
kfree(info->vics);
info->vics = NULL;
diff --git a/drivers/gpu/drm/drm_edid.c.rej b/drivers/gpu/drm/drm_edid.c.rej
new file mode 100644
index 000000000..de3b3bf4e
--- /dev/null
+++ b/drivers/gpu/drm/drm_edid.c.rej
@@ -0,0 +1,9 @@
+diff a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c (rejected hunks)
+@@ -6376,6 +6389,7 @@ static void drm_reset_display_info(struct drm_connector *connector)
+ info->mso_stream_count = 0;
+ info->mso_pixel_overlap = 0;
+ info->max_dsc_bpp = 0;
++ info->dp_dsc_bpp = 0;
+ }
+
+ static u32 update_display_info(struct drm_connector *connector,
diff --git a/include/drm/drm_connector.h b/include/drm/drm_connector.h
index fe88d7fc6..1de1d1726 100644
--- a/include/drm/drm_connector.h
+++ b/include/drm/drm_connector.h
@@ -803,6 +803,12 @@ struct drm_display_info {
*/
u32 max_dsc_bpp;
+ /**
+ * @dp_dsc_bpp: DP Display-Stream-Compression (DSC) timing's target
+ * DST bits per pixel in 6.4 fixed point format. 0 means undefined
+ */
+ u16 dp_dsc_bpp;
+
/**
* @vics: Array of vics_len VICs. Internal to EDID parsing.
*/
diff --git a/include/drm/drm_connector.h.rej b/include/drm/drm_connector.h.rej
new file mode 100644
index 000000000..d54d40443
--- /dev/null
+++ b/include/drm/drm_connector.h.rej
@@ -0,0 +1,13 @@
+diff a/include/drm/drm_connector.h b/include/drm/drm_connector.h (rejected hunks)
+@@ -721,6 +721,11 @@ struct drm_display_info {
+ * monitor's default value is used instead.
+ */
+ u32 max_dsc_bpp;
++ /**
++ * @dp_dsc_bpp: DP Display-Stream-Compression (DSC) timing's target
++ * DST bits per pixel in 6.4 fixed point format. 0 means undefined
++ */
++ u16 dp_dsc_bpp;
+ };
+
+ int drm_display_info_set_bus_formats(struct drm_display_info *info,
diff --git a/include/drm/drm_displayid.h b/include/drm/drm_displayid.h
index 566497eeb..3a4bd0816 100644
--- a/drivers/gpu/drm/drm_displayid_internal.h
+++ b/drivers/gpu/drm/drm_displayid_internal.h
@@ -131,12 +131,16 @@ struct displayid_detailed_timing_block {
#define DISPLAYID_VESA_MSO_OVERLAP GENMASK(3, 0)
#define DISPLAYID_VESA_MSO_MODE GENMASK(6, 5)
+#define DISPLAYID_VESA_DSC_BPP_INT GENMASK(5, 0)
+#define DISPLAYID_VESA_DSC_BPP_FRACT GENMASK(3, 0)
struct displayid_vesa_vendor_specific_block {
struct displayid_block base;
u8 oui[3];
u8 data_structure_type;
u8 mso;
+ u8 dsc_bpp_int;
+ u8 dsc_bpp_fract;
} __packed;
/*
diff --git a/include/drm/drm_displayid.h.rej b/include/drm/drm_displayid.h.rej
new file mode 100644
index 000000000..61fbd38e0
--- /dev/null
+++ b/include/drm/drm_displayid.h.rej
@@ -0,0 +1,18 @@
+diff a/include/drm/drm_displayid.h b/include/drm/drm_displayid.h (rejected hunks)
+@@ -131,12 +131,16 @@ struct displayid_detailed_timing_block {
+
+ #define DISPLAYID_VESA_MSO_OVERLAP GENMASK(3, 0)
+ #define DISPLAYID_VESA_MSO_MODE GENMASK(6, 5)
++#define DISPLAYID_VESA_DSC_BPP_INT GENMASK(5, 0)
++#define DISPLAYID_VESA_DSC_BPP_FRACT GENMASK(3, 0)
+
+ struct displayid_vesa_vendor_specific_block {
+ struct displayid_block base;
+ u8 oui[3];
+ u8 data_structure_type;
+ u8 mso;
++ u8 dsc_bpp_int;
++ u8 dsc_bpp_fract;
+ } __packed;
+
+ /* DisplayID iteration */
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_helpers.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_helpers.c
index d4395b92fb85..6c7f589e19ac 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_helpers.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_helpers.c
@@ -136,6 +136,8 @@ enum dc_edid_status dm_helpers_parse_edid_caps(
edid_caps->edid_hdmi = connector->display_info.is_hdmi;
+ edid_caps->dsc_fixed_bits_per_pixel_x16 = connector->display_info.dp_dsc_bpp;
+
apply_edid_quirks(dev, edid_buf, edid_caps);
sad_count = drm_edid_to_sad((struct edid *) edid->raw_edid, &sads);

View File

@@ -8,9 +8,29 @@ title: Bigscreen Beyond Driver
You can get the "Bigscreen Beyond Driver" app from Steam working via Proton by following these instructions:
1. use a Proton version >=10 that has access to `PROTON_ENABLE_HIDRAW` env var; `Proton Experimental [bleeding-edge]` works well
2. set `PROTON_ENABLE_HIDRAW=0x35BD/0x0101 %command%` as your launch arg for the `Bigscreen Beyond Driver` under `Properties`
3. OPTIONAL: copy a SteamVR Windows install somewhere in the prefix (ie: C/ root) under appid 2467050 and when the driver is open, set the SteamVR path to where you placed the Windows install of SteamVR
3. OPTIONAL: download/copy a SteamVR Windows install somewhere and when the driver is open, set the SteamVR path to where you placed the Windows install of SteamVR
The "Bigscreen Beyond Driver" and all of its features should be working fine after doing the above!
The "Bigscreen Beyond Driver" and most of its features should be working fine after doing the above!
Note that currently firmware updates do not work.
## Download Windows SteamVR via SteamCMD
You can easily downlwad the Windows version of SteamVR via SteamCMD. To do this:
1. [Download SteamCMD](https://developer.valvesoftware.com/wiki/SteamCMD#Linux)
2. Run this command somewhere you can create directories (i.e., your home directory):
```sh
mkdir steamvr_win && steamcmd +@ShutdownOnFailedCommand 1 \
+@sSteamCmdForcePlatformType windows \
+force_install_dir $(realpath steamvr_win) \
+login anonymous \
+app_update 250820 validate \
+quit
```
This will:
- Create a directory in the current directory named `steamvr_win`
- Download and validate Windows SteamVR into it.
Note: your home directory is accessible under `Z:\home` by default in Proton.
## Easier Device Mode Swapping

View File

@@ -5,29 +5,11 @@ weight: 50
# Resonite
{{% hint info %}}
**Note**: The Linux-native version of Resonite, amid deprioritization of developer time to fix its numerous issues, was put on indefinite hold in August 2024 and later removed in March 2025. This document only covers running under Proton.
{{% /hint %}}
{{% hint warning %}}
Steam will sometimes try and run Resonite without using Proton. This may be due to the removal of the Linux native build.
If Resonite fails to start, you may need to force Proton to be used.
{{% /hint %}}
The current recommended Proton variant is [**Proton GE**](https://github.com/GloriousEggroll/proton-ge-custom/releases/latest).
[XRizer](/docs/fossvr/xrizer/) should now provide a close-to-flawless experience on most controllers and when using hand tracking. If you encounter any major issues you can fallback to [OpenComposite](/docs/fossvr/opencomposite/).
[XRizer](/docs/fossvr/xrizer/) should now provide a close-to-flawless experience on most controllers and when using hand tracking.
## Visual bugs
There are some minor visual bugs specific to running Resonite on Proton, such as textures taking longer to load and appearing black for a few seconds when close to the player.
## Mirrors look cross-eyed
When playing Resonite under [Monado](https://lvra.gitlab.io/docs/fossvr/monado/) or [WiVRn](https://lvra.gitlab.io/docs/fossvr/wivrn/), the 3D effect of mirrors may appear way off, as if looking through them feels like your eyes are crossed. This only affects headsets with canted displays (e.g. Valve Index, Pimax).
@@ -36,13 +18,52 @@ To solve this, prepend `OXR_PARALLEL_VIEWS=1` to Resonite's launch options.
## Performance
Resonite currently runs under an extremely old version of Mono runtime required by Unity, which has very poor Garbage Collection causing frequent lag spikes and frame hitching during asset loading and unloading. Very soon, Resonite will be updated to use .NET 9, a far more modern and bespoke runtime, with Unity running on a separate thread only for rendering the game. Eventually Unity will be replaced by a custom rendering engine as well.
In August 2025, Resonite updated to run FrooxEngine as a native Linux process, with the renderer being run through Proton.
The main developer and owner of Resonite goes into more detail [here](https://youtu.be/9cx2-VtL_LM&t=16).
In larger sessions Resonite is typically CPU-bound, there isn't much that can be done besides upgrading your CPU. In situations where the GPU is a bottleneck, lowering the resolution <!-- TODO link to resolution scaling --> (either in the OpenXR runtime or through OpenComposite) may help dramatically.
Resonite is typically GPU-bottlenecked. Lowering the resolution <!-- TODO link to resolution scaling --> may help.
This can be easily done by prepending `OXR_VIEWPORT_SCALE_PERCENTAGE=75` to Resonite's launch options. Experiment with different values to find your preferred balance between performance and quality.
## Clipboard
As of the splittening release, Resonite only supports copy/pasting text, and does not work at all in Flatpak Steam with Wayland [(issue)](https://github.com/Yellow-Dog-Man/Resonite-Issues/issues/5321).
This mod provides full clipboard functionality, but only works on Wayland: https://github.com/GrandtheUK/ResoniteLinuxClipboard
## Audio Issues
Resonite uses SDL for audio on Linux, but the current implementation can be a bit flaky.
In particular, the WiVRn microphone [is known to be glitchy](https://github.com/Yellow-Dog-Man/Resonite-Issues/issues/5260).
It is recommended that you use PipeWire as your system's audio service, including its PulseAudio and ALSA support.
The game will default to the PipeWire API if it can, falling back to the PulseAudio API.
### Glitchy audio
The most straightforward way to fix a glitchy microphone is to use SDL's ALSA driver with `SDL_AUDIO_DRIVER=alsa %command%` as the launch argument on Steam.
If that doesn't work, you can try forcing the other drivers by specifying `pipewire` or `pulseaudio` instead of `alsa` in the above launch arguments.
If you want to use the PulseAudio driver, you may need `SDL_AUDIO_DRIVER=pulseaudio PULSE_LATENCY_MSEC=15 PULSE_BUFFER_MSEC=250 PULSE_FRAGMENT_SIZE_MSEC=25 %command%` as the launch arguments.
### Virtual audio sources/sinks
To be able to chose a virtual sink, you have two options:
1. Use `SDL_AUDIO_INCLUDE_MONITORS=1`, but this works with the PulseAudio driver *only* (add it next to your other env var in launch arguments).
2. Select any other source in Resonite, and manually connect the wanted input or output to Resonite's sink using a PipeWire graph GUI (e.g. Coppwr, Qwpgraph, Helvum)
Do note that for the Audio Stream feature of Resonite, you'll need to select a different source that the one you are using as your microphone, or else SDL will **not** create a sink dedicated for it. If you only have one input, use the Steam voice option.
### Flatpak
The PipeWire driver is not supported by Steam Flatpak OOtB, see [this issue](https://github.com/Yellow-Dog-Man/Resonite-Issues/issues/5261#issuecomment-3228033460) if you need to use the PipeWire driver on Resonite in Steam Flatpak.
## FlipVR controller support with Monado
Currently there is an experimental Monado branch that works with Shiftall FlipVR controllers. Instructions can be found [here](/docs/fossvr/monado/flipvr/). At the time of writing, this branch is the only way to use FlipVR controllers with Resonite, as they are not supported even through SteamVR on Windows.
## Mods
Resonite has a thriving modding community with an abundance of [mods](https://wiki.resonite.com/Mods) that offer greater user experience, optimizations and new features.
@@ -59,25 +80,36 @@ You can load RML mods with MonkeyLoader but not the other way around.
The exact cause of this is currently unknown. Consider using MonkeyLoader if you encounter such issues starting the game as it seems to not cause the same problem.
### ResonitePlatformSpoof
- [Mod Repo](https://github.com/isovel/ResonitePlatformSpoof)
- [Link to working version](https://github.com/isovel/ResonitePlatformSpoof/issues/2#issuecomment-2439588723)
{{% hint info %}}
See [issue #2745](https://github.com/Yellow-Dog-Man/Resonite-Issues/issues/2745#issuecomment-2573574108) for more context as to why the Linux badge isn't available for Proton users.
{{% /hint %}}
When the native Linux build of Resonite was still available, players are given a Linux badge to show others that they are running the native build of the client. When Proton is used to play the windows build of the game, you will not get the Linux badge. However, ResonitePlatformSpoof lets you 'spoof' your platform to the Linux native build and allows proton users to get the Linux badge.
## Crashes
Resonite has been seen causing random SteamVR crashes on Linux before. In some situations the engine also tends to freeze. On OpenComposite, the game will rarely close out on its own without leaving any obvious trace of things going wrong &mdash; this is being investigated.
### Renderer issues
The cause of these issues and whether they are Proton-specific isn't currently known.
Resonite's renderer is known to randomly crash suddenly - this is currently tracked at https://github.com/Yellow-Dog-Man/Resonite-Issues/issues/5325.
There is also a known memory leak when running the renderer on Linux - however, it is uncertain currently whether this is an issue with Proton or there is something else at play - see https://github.com/Yellow-Dog-Man/Resonite-Issues/issues/5246.
### Crash on launching in VR mode
Currently, OpenComposite is known to crash Resonite when used in VR, so attempting to use OpenComposite for Resonite is not recommended.
Symptoms:
- Crashes only in VR mode, where after several seconds a black window appears and closes briefly, then Resonite stops within approximately 30 seconds.
- The normal log file shows a renderer crash: `RendererProcess has exited. Shutting down.`. There's a Player.log file.
See https://github.com/Yellow-Dog-Man/Resonite-Issues/issues/5152 for more information.
### Crash on launching in desktop & VR mode
Proton data can get corrupted, which will result in consistent crashes on launch. This only applies if you've already replaced OpenComposite (see above).
The symptoms are:
- Crashes 2 seconds from launch in desktop mode (and in VR)
- No log files (no main log, no Player.log, no crash log, no proton log with PROTON_LOG=1, only the boostrapper log)
- It may be accompanied by error windows if you're using a mod loader.
Navigate to compatdata in the folder above Resonite's folder (by default `.local/share/Steam/steamapps/compatdata/`) and delete the `2519830` folder; it will regenerate on the next launch. Then verify the integrity of Resonite files in Steam (right-click Resonite and go to Properties>Installed Files>Verify).
It may be enough to just verify file integrity in some cases.
### Crash on loading into a world with video players

View File

@@ -22,7 +22,7 @@ Alternatively you can build it on your own, and you have a few variants to choos
- [Frozen Slimes V2](https://github.com/frosty6742/frozen-slimes-v2)
- while a bit bigger, Frozen Slimes V2 tend to be cheaper and a lot easier to build, being approachable even for people that are inexperienced with soldering
It's generally **highly recommended** to opt for the more expensive but higher quality [BNO085](https://shop.slimevr.dev/products/slimevr-imu-module-bno085) IMU module. This should offer the highest quality tracking with best precision and minimal drifting.
The **current recommended** IMU Modules are the [ICM-45686](https://shop.slimevr.dev/products/slimevr-mumo-breakout-module-v1-icm-45686-qmc6309), [LSM6DSV](https://moffshop.deyta.de/products/lsm6dsv-module) and [LSM6DSR](https://moffshop.deyta.de/products/lsm6dsr), The ICM-45686 is currently considered the best IMU with a reset time of 45-60 minutes but is more expensive compared to the other options. If you're looking for a budget option, the LSM6DSR comes at around half the price of the others with reset times of 45-50 minutes.
## Installing SlimeVR Server

View File

@@ -42,7 +42,7 @@ sudo setcap CAP_SYS_NICE=eip ~/.local/share/Steam/steamapps/common/SteamVR/bin/l
**Vive Pro 2** will need the driver from here: [VivePro2-Linux-Driver on GitHub](https://github.com/CertainLach/VivePro2-Linux-Driver)
**Bigscreen Beyond** requires a patched kernel: [Bigscreen Beyond Kernel Patch](https://gist.githubusercontent.com/TayouVR/af8635a4b8e1d02d038be1be1d221c83/raw/3806a6ff0a03721904164277d7523d43f7ca383c/bigscreenBeyond.patch)
**Bigscreen Beyond** requires a patched kernel: for [<= 6.14](https://gist.github.com/galister/08cddf10ac18929647d5fb6308df3e4b/raw/0f6417b6cb069f19d6c28b730499c07de06ec413/combined-bsb-6-10.patch) and [>= 6.15](../../hardware/bigscreen-beyond-kernel-6.15.patch)
For any of the above headsets with {{< icon name="nvidia" >}} Nvidia, you will get a smoother experience with Monado + OpenComposite (use Envision for easy setup), albeit this combo does not work with all VR titles.

View File

@@ -0,0 +1,17 @@
---
weight: 150
title: Pictures
---
# Pictures
By default, all pictures taken inside of VRChat will save inside the Wine prefix (`<steam library>/steamapps/compatdata/438100/pfx/drive_c/users/steamuser/Pictures/VRChat`).
This can be a hassle to reach if you need to access VRChat pictures regularly. If you would like to link this folder to your user's regular Pictures folder, you can do so with the following steps:
1. Install [protontricks](https://github.com/Matoking/protontricks)
2. Run `protontricks 438100 winecfg`
3. Select "Desktop Integration"
4. Select "Pictures" under folders, enable **Link to** and browse to your system's Pictures folder.
- eg. `/home/user/Pictures`
5. Apply and save.
6. Your VRChat pictures should now save to your regular pictures folder.

View File

@@ -142,6 +142,18 @@ A dialog may appear upon trying to build an avatar, where none of the buttons ar
This seems to happen consistently if the projects are stored on an EXFAT partition. Consider using another filesystem, such as NTFS if you still need projects accessible under both Windows and Linux.
### Built avatar appears non-stereoscopic to me and everyone else
Ensure the filesystem your project is on has not been mounted with `noexec`.
With `noexec`, the shader compilation plugin from VRCSDK will fail with a warning:
> Plugins: Couldn't open /run/media/blahblahblah/MyProject/Packages/com.vrchat.base/Editor/VRCSDK/ShaderCompilerPlugin/Plugins/Linux/x86_64/libvrc_shader_compiler_plugin.so, error: [...]: failed to map segment from shared object
Even though the plugin fails to load, the avatar will upload anyway, without including the Double Wide Rendering shader variants necessary for VR.
The `noexec` mount option may also contribute to other issues such as being unable to run any binaries from inside the project, such as avatar patchers.
### Crashing frequently with Nvidia
On some systems running Nvidia graphics, the Unity Editor may crash frequently from common actions like importing a unitypackage or dragging a file.