Merge branch lvra.gitlab.io:main into main
This commit is contained in:
52
content/docs/fossvr/monado/pimax.md
Normal file
52
content/docs/fossvr/monado/pimax.md
Normal file
@@ -0,0 +1,52 @@
|
||||
---
|
||||
weight: 200
|
||||
title: Pimax
|
||||
---
|
||||
|
||||
# Pimax P2 HMDs
|
||||
At the moment, only headsets from the P2 series (the 5k and 8k headsets with various suffixes) are supported. The Crystal, Crystal light, and Crystal super use different protocols that have not been reverse engineered yet.
|
||||
|
||||
# Setup
|
||||
## Kernel patches
|
||||
For the most convenient use, a few kernel patches are required. One to mark the display as non-desktop (can also be manually done without a patch on Xorg), and one to ignore the EDID checksum errors a lot of these headsets feature (alternatively, overriding the edid with a fixed version also works).
|
||||
- [non-desktop](https://gist.githubusercontent.com/TayouVR/60e3ee5f95375827a66a8898bea02bec/raw/c85135c8d8821ebb2fa85629d837a41de57e12ef/pimax.patch)
|
||||
- [EDID](https://gist.githubusercontent.com/Coreforge/59ed3548427c999273ec012002461eab/raw/f70df3afd5cccbfc6fb34ef805db41d00dbf4770/ps0002-drm-edid-fix-checksum-errors-in-Pimax-HMD-EDIDs.patch)
|
||||
|
||||
## udev rules
|
||||
To allow monado to access to the Pimax HID device, a udev rule is required.
|
||||
```
|
||||
SUBSYSTEM=="usb", ATTR{idVendor}=="0483", ATTR{idProduct}=="0101", MODE="0660", TAG+="uaccess", TAG+="udev-acl"
|
||||
KERNEL=="hidraw*", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="0101", MODE="0660", TAG+="uaccess", TAG+="udev-acl"
|
||||
```
|
||||
|
||||
## Distortion meshes
|
||||
Since calculating the lens distortion isn't implemented yet, precalculated distortion meshes which have been exported from pimax's runtime are used instead.
|
||||
The meshes are available here:
|
||||
- https://gitlab.freedesktop.org/othello7/pimax-distortion/
|
||||
|
||||
The tools to dump meshes yourself are available here (requires a windows install that can drive the headset):
|
||||
- https://github.com/Coreforge/pimax-utils
|
||||
|
||||
## Monado
|
||||
Use monado from the branch `pimax` from the repository `https://gitlab.freedesktop.org/Coreforge/monado/`.
|
||||
Make sure to use the lighthouse driver `steamvr_lh`, other lighthouse drivers are currently not supported with the pimax driver.
|
||||
|
||||
At this point, you should have a working headset.
|
||||
|
||||
### Configuration options
|
||||
The headset should work without changing any of these options, but they may improve the experience or stability (e.g. if the headset only works on the first launch of monado after powering the headset), or might be needed for less standard setups.
|
||||
|
||||
| Name | default value | description |
|
||||
|--------------------|---------------|------------------|
|
||||
| `PIMAX_MESHES_PATH`| `~/.config/pimax/meshes` | The directory distortion meshes are loaded from |
|
||||
| `PIMAX_MESH_NAME` | automatically determined | The file name the distortion meshes are loaded from |
|
||||
| `PIMAX_CHECK_INIT` | 0 | If enabled, display unlock commands are only sent if the HMD hasn't been unlocked (displays enabled) yet |
|
||||
| `PIMAX_REBOOT` | 0 | If enabled, reboots the HMD on startup, like PiTool does |
|
||||
| `PIMAX_REBOOT_DELAY_MS` | 5000 | How long to wait after sending the reboot command |
|
||||
| `PIMAX_HID_RETRY_COUNT` | 3 | How many times to retry opening the pimax HID device before giving up |
|
||||
| `PIMAX_HID_RETRY_DELAY_MS` | 1000 | How long to wait between attempts |
|
||||
| `PIMAX_OFFS_X_R` `PIMAX_OFFS_X_G` `PIMAX_OFFS_X_R` | 0.0 for all | Shifts one channel of the distortion mesh sideways by the given amount of pixels. This is an attempt at reducing the coloured edges especially visible on the 5K XR due to monado currently not supporting subpixel shading. |
|
||||
| `PIMAX_IPD_V0` `PIMAX_IPD_V1` | 0.0 | Vertical offsets (in meters) added to the view poses, somewhat similar to the display offsets in PiTool |
|
||||
| `PIMAX_IPD_H0` `PIMAX_IPD_H1` | 0.0 | Horizontal offsets (in meters) added to the view poses and IPD (for the distortion correction), somewhat similar to the display offsets in PiTool |
|
||||
|
||||
The display (or IPD in the option name) offsets can also be adjusted in the debug GUI, following the same procedure as for PiTool (values are **not** saved in the debug GUI).
|
||||
@@ -29,7 +29,7 @@ As of the splittening release, Resonite only supports copy/pasting text, and doe
|
||||
|
||||
This mod provides full clipboard functionality, but only works on Wayland: https://github.com/GrandtheUK/ResoniteLinuxClipboard
|
||||
|
||||
## Audio Issues
|
||||
## Audio issues
|
||||
|
||||
Resonite uses SDL for audio on Linux, but the current implementation can be a bit flaky.
|
||||
|
||||
@@ -39,11 +39,43 @@ It is recommended that you use PipeWire as your system's audio service, includin
|
||||
|
||||
The game will default to the PipeWire API if it can, falling back to the PulseAudio API.
|
||||
|
||||
### Glitchy audio
|
||||
### Crackling microphone 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.
|
||||
There is an issue WiVRn users have in Resonite, resulting in their microphone audio becoming crackly / glitchy to others. In order to solve this issue, it's necessary to set Resonite to use the ALSA SDL audio backend, and make sure PipeWire sample rates are configured properly.
|
||||
|
||||
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.
|
||||
The steps are as follows:
|
||||
|
||||
1. Force Resonite to use ALSA SDL backend for audio:
|
||||
|
||||
Add the following to Resonite's Launch Options in Steam:
|
||||
|
||||
```
|
||||
SDL_AUDIO_DRIVER=alsa %command%
|
||||
```
|
||||
|
||||
**NOTE:** If you have already set launch arguments for Resonite, simply add `SDL_AUDIO_DRIVER=alsa` next to other env vars in your launch arguments.
|
||||
|
||||
|
||||
2. Configure PipeWire sampling rates:
|
||||
|
||||
For most if not all users, **using ALSA _WILL_ bork your audio** until you've manually configured PipeWire to use a default sample rate of 48kHz. If this happens:
|
||||
|
||||
2.1. Locate the directory or create it if it doesn't exist: `~/.config/pipewire/pipewire.conf.d/`.
|
||||
|
||||
**NOTE:** If you have set `$XDG_CONFIG_HOME` to something other than `~/.config` then please adjust the paths according.
|
||||
|
||||
2.2 Create a configuration file (`01-sample-rates.conf` for this example) in that folder. The full path should be `~/.config/pipewire/pipewire.conf.d/01-sample-rates.conf`.
|
||||
|
||||
2.3 Paste the following content into the file to define supported sample rates, and save it:
|
||||
|
||||
```
|
||||
context.properties = {
|
||||
default.clock.allowed-rates = [ 44100 48000 88200 96000 ]
|
||||
default.clock.rate = 48000
|
||||
}
|
||||
```
|
||||
|
||||
If that doesn't work, you can try forcing the other drivers by specifying `pulseaudio` (or `pipewire`) instead of `alsa` in the above launch argument.
|
||||
|
||||
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.
|
||||
|
||||
@@ -51,7 +83,7 @@ If you want to use the PulseAudio driver, you may need `SDL_AUDIO_DRIVER=pulseau
|
||||
|
||||
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).
|
||||
1. Use `SDL_AUDIO_INCLUDE_MONITORS=1`, but this works with the PulseAudio driver *only* (add it next to your other env vars 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.
|
||||
@@ -60,6 +92,12 @@ Do note that for the Audio Stream feature of Resonite, you'll need to select a d
|
||||
|
||||
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.
|
||||
|
||||
### No WiVRn mic audio
|
||||
|
||||
If you're using WiVRn, close and reopen it. This mostly happens after Resonite has crashed.
|
||||
|
||||
**NOTE:** Closing WiVRn will cause xrizer to crash Resonite if it's open.
|
||||
|
||||
## 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.
|
||||
@@ -111,10 +149,38 @@ Navigate to compatdata in the folder above Resonite's folder (by default `.local
|
||||
|
||||
It may be enough to just verify file integrity in some cases.
|
||||
|
||||
This can also happen because of **incorrect Steam launch options**.
|
||||
|
||||
### Crash on loading into a world with video players
|
||||
|
||||
On GE-Proton9-10 (for example), loading into a world with e.g. a YouTube video or live stream can crash the game. Try using the latest GE-Proton-RTSP release.
|
||||
|
||||
### Hanging on Launch
|
||||
|
||||
Symptoms:
|
||||
|
||||
- Steam reports Resonite is running but Resonite does not launch.
|
||||
|
||||
Possible causes:
|
||||
- Not having a default audio device selected.
|
||||
|
||||
**Solution:** Select an/another audio device in your volume panel and see if it works. This is likely an SDL issue.
|
||||
|
||||
- Improperly configured mod loaders and plugins.
|
||||
|
||||
**Solution:** Try starting without Steam launch options and then re-add the env vars one by one. This is commonly caused by misconfigured MonkeyLoader.
|
||||
|
||||
### Crash after loading
|
||||
|
||||
Although this is rare, some proton updates can start crashing Resonite repetitively.
|
||||
|
||||
Symptoms:
|
||||
- Crashes approximately 1 minute after successfully loading Resonite.
|
||||
- Everything freezes in both desktop mode and VR, but you can still hear sounds, including the voices of other users.
|
||||
|
||||
If this happens, just switch Proton to another version such as Proton-GE or Proton-GE-rtsp.
|
||||
|
||||
|
||||
## Controls busted after switching to desktop
|
||||
|
||||
Resonite allows a VR player to take a break and switch to desktop mode by pressing the F8 key.
|
||||
|
||||
Reference in New Issue
Block a user