Merge branch 'main' into 'main'

add pimax page

See merge request lvra/lvra.gitlab.io!156
This commit was merged in pull request #161.
This commit is contained in:
hypevhs
2025-10-23 18:31:16 -05:00

View 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).