331 Commits

Author SHA1 Message Date
hypevhs
0304517dbc Merge branch 'main' into 'main'
Add Euro Truck Simulator 2 & American Truck Simulator VR page

See merge request lvra/lvra.gitlab.io!161
2025-11-02 07:49:30 -06:00
PoorPockets McNewHold
06407f0ec5 Add Euro Truck Simulator 2 & American Truck Simulator VR page 2025-11-02 07:49:30 -06:00
hypevhs
f4a88b959c Merge branch 'cherry-pick-2693ab81' into 'main'
[Take 2] Tidy up links, update mod section, add crash info

See merge request lvra/lvra.gitlab.io!160
2025-10-30 16:05:30 -05:00
Marcus Howser
bb2edd7308 [Take 2] Tidy up links, update mod section, add crash info 2025-10-30 16:05:30 -05:00
hypevhs
01e59bbe45 Merge branch 'patch-1' into 'main'
Change command to use right directory

See merge request lvra/lvra.gitlab.io!158
2025-10-30 16:04:15 -05:00
albibi
bed37ca954 Change command to use right directory 2025-10-27 17:27:20 +00:00
hypevhs
80ffbc2f3b Merge branch 'main' into 'main'
Remove GPU acceleration note

See merge request lvra/lvra.gitlab.io!155
2025-10-24 11:52:43 -05:00
notfranko_
055bfbedfa BSB: GPU Acceleration is busted for Nvidia 2025-10-24 11:52:42 -05:00
hypevhs
6939ec353c Merge branch 'patch-3' into 'main'
Specify what causes no mic audio in Resonite

See merge request lvra/lvra.gitlab.io!157
2025-10-24 11:49:36 -05:00
Krzeszny
67fe496d4c Specify what causes no mic audio 2025-10-24 12:12:17 +00:00
hypevhs
baf1dca2ff Merge branch 'main' into 'main'
add pimax page

See merge request lvra/lvra.gitlab.io!156
2025-10-23 18:31:16 -05:00
hypevhs
1e7e2a0c68 Merge branch 'patch-2' into 'main'
Shooting more troubles for Resonite

See merge request lvra/lvra.gitlab.io!153
2025-10-23 18:29:27 -05:00
Krzeszny
30b77184a3 Shooting more troubles for Resonite 2025-10-23 18:29:27 -05:00
Coreforge
da72563796 add pimax page 2025-10-23 22:32:05 +02:00
hypevhs
b0f9a7af09 Merge branch 'wivrn-solarxr-apk' into 'main'
wivrn: more info about solarxr apk

See merge request lvra/lvra.gitlab.io!154
2025-10-21 15:09:00 -05:00
hypevhs
b7c806534e wivrn: more info about solarxr apk 2025-10-21 15:08:59 -05:00
hypevhs
a74c0d50e6 Merge branch 'main' into 'main'
Update Bigscreen Beyond information

See merge request lvra/lvra.gitlab.io!152
2025-10-21 14:59:26 -05:00
notfranko_
01793ccb4a Update Bigscreen Beyond information 2025-10-21 14:59:26 -05:00
hypevhs
95ffcc5451 Merge branch 'main' into 'main'
Edit FOSS VR WiVRn documentation page to indicate where the WiVRn APK for the solarxr-patches branch can be found.

See merge request lvra/lvra.gitlab.io!151
2025-10-21 12:41:23 -05:00
polyborea
ea9d4f177f Edit _index.md to indicate where the WiVRn APK for the solarxr-patches branch can be found 2025-10-19 19:42:00 +00:00
hypevhs
70d21a524e Merge branch 'bsb-mermaid' into 'main'
bsb page mermaid chart fix

See merge request lvra/lvra.gitlab.io!150
2025-10-18 15:28:03 -05:00
kzd
bedce32c2c bsb page mermaid chart fix 2025-10-18 15:28:03 -05:00
hypevhs
b3f0c90fbd htmltest: ignore npmjs 2025-10-17 16:57:27 -05:00
hypevhs
cb879b08bb unity: remove dead link 2025-10-17 16:53:40 -05:00
hypevhs
2aea1d50fe xrizer: switch FBT branch pt2 2025-10-17 16:48:53 -05:00
hypevhs
5d79df68d3 xrizer: switch FBT branch 2025-10-17 16:41:16 -05:00
hypevhs
ce6f415392 Merge branch 'bsb2e-baballonia-guide' into 'main'
Bsb2e baballonia guide

See merge request lvra/lvra.gitlab.io!148
2025-10-17 16:36:09 -05:00
kzd
2a215d33c0 Bsb2e baballonia guide 2025-10-17 16:36:08 -05:00
Bones
67122b835b fix: update fbt branches for xrizer 2025-10-16 03:38:53 +00:00
Bones
74709faffd fix: warn not to use Envision in place of WiVRn distribution 2025-10-16 03:35:38 +00:00
hypevhs
8ae5688725 hardware: 10xx can't Index 2025-10-08 02:24:02 -05:00
hypevhs
99c067b57c hardware: mark Nvidia 10xx as acceptable 2025-10-08 02:20:25 -05:00
hypevhs
e865a19700 Merge branch 'Assetto-Corsa' into 'main'
Assetto corsa

See merge request lvra/lvra.gitlab.io!146
2025-10-05 18:16:53 -05:00
Glax
1d9a82929d Assetto corsa 2025-10-05 18:16:53 -05:00
hypevhs
486e5b169b Merge branch 'patch-1' into 'main'
Troubleshooting steps for Resonite crashing on launch

See merge request lvra/lvra.gitlab.io!147
2025-10-04 14:05:19 -05:00
Krzeszny
d544628182 Troubleshooting steps for Resonite crashing on launch 2025-10-04 14:05:19 -05:00
hypevhs
fb759595f5 Merge branch 'patch-5' into 'main'
Instructions to fix desktop freezing when launching SteamVR

See merge request lvra/lvra.gitlab.io!144
2025-10-01 11:15:08 -05:00
Glax
4d0f333283 Instructions to fix desktop freezing when launching SteamVR 2025-10-01 11:15:07 -05:00
hypevhs
90255a3aa6 Merge branch 'BeatSaber' into 'main'
Beatsaber

See merge request lvra/lvra.gitlab.io!145
2025-09-30 21:03:59 -05:00
Glax
88c0639109 Beatsaber 2025-09-30 21:03:59 -05:00
hypevhs
189fcd4d7a Merge branch 'resonite/remove-visemes' into 'main'
Resonite: Remove section about visemes

See merge request lvra/lvra.gitlab.io!143
2025-09-26 21:35:12 -05:00
Baplar
fbc53ec4fa Resonite: Remove section about visemes
Now that they’re officially supported,
there’s no longer any need for a mod.
2025-09-27 03:04:10 +02:00
hypevhs
6dd4d1b863 Merge branch 'main' into 'main'
Document Direct Display Mode/Wired HMDs on Intel Arc GPUs.

See merge request lvra/lvra.gitlab.io!142
2025-09-23 01:16:51 -05:00
Alicja Michalska
5957c211b2 Document Direct Display Mode/Wired HMDs on Intel Arc GPUs. 2025-09-21 21:58:25 +02:00
hypevhs
4714d56058 Merge branch 'beegscreen' into 'main'
Document downloading Windows SteamVR via SteamCMD

See merge request lvra/lvra.gitlab.io!139
2025-09-16 23:22:54 -05:00
Supreeeme
418bc4a276 Document downloading Windows SteamVR via SteamCMD
Also mention that firmware updates don't work for the 
Bigscreen Beyond Utility
2025-09-17 03:20:37 +00:00
galister
2f7cf865c6 wivrn: emphasize alternative options 2025-09-10 02:58:41 +00:00
galister
04463f2747 wivrn: add note about xrizer not supporting FBT 2025-09-10 02:06:30 +00:00
hypevhs
89033c7091 Merge branch 'patch-1' into 'main'
Add an entry for shader issues caused by `noexec` for unity

See merge request lvra/lvra.gitlab.io!135
2025-09-09 16:56:07 -05:00
Myra
03b66e3291 Add an entry for shader issues caused by noexec for unity 2025-09-09 16:56:07 -05:00
hypevhs
30a878a018 Merge branch 'patch-2' into 'main'
Update SlimeVR IMU Recommendation

See merge request lvra/lvra.gitlab.io!137
2025-09-09 14:52:42 -05:00
notfranko_
470dec62bc Update SlimeVR IMU Recommendation 2025-09-09 14:52:42 -05:00
hypevhs
d4d3237f53 Merge branch 'main' into 'main'
Update AtomicXR instructions

See merge request lvra/lvra.gitlab.io!138
2025-09-08 17:03:33 -05:00
Shiloh Fen
f5dd8634e9 Fedora Atomic: Use Cask to install WayVR Dashboard 2025-09-06 04:26:15 -05:00
Shiloh Fen
0475e48557 Fedora Atomic: Add troubleshooting section 2025-09-05 15:18:12 -05:00
Shiloh Fen
d573067a0a Fedora Atomic: Remove plugins section
AtomicXR's plugins are now compiled directly into Envision, so no extra
steps are needed to register them.
2025-09-05 15:13:08 -05:00
hypevhs
573f1f39b6 Outer Wilds: remove RTSP mention 2025-09-05 13:13:59 -05:00
hypevhs
aa8e6cbcbb Merge branch 'resonite' into 'main'
add common issue with audio on Resonite

See merge request lvra/lvra.gitlab.io!136
2025-08-28 14:03:17 -05:00
Naia
5cec88cc63 Add common issues with audio on Resonite 2025-08-28 14:03:17 -05:00
hypevhs
c1c9c3fa84 Merge branch 'patch-bigscreen-kernel-patch-quickstart-ref' into 'main'
Update quickstart page for Bigscreen Beyond patch

See merge request lvra/lvra.gitlab.io!134
2025-08-25 15:58:21 -05:00
coolGi
ecfe4dd15a Update quickstart page for Bigscreen Beyond patch 2025-08-25 15:58:21 -05:00
hypevhs
ee023e1dc8 Merge branch 'flipvr-instructions' into 'main'
FlipVR controller support for Monado instructions

See merge request lvra/lvra.gitlab.io!133
2025-08-25 02:52:39 -05:00
Nat Osaka
939917bcdd FlipVR controller support for Monado instructions 2025-08-25 02:52:38 -05:00
hypevhs
83245d2acf Merge branch 'resonite-splittening' into 'main'
Resonite: update for the splittening

See merge request lvra/lvra.gitlab.io!132
2025-08-21 21:39:55 -05:00
bredo
0badd456b4 Resonite: Mention issues with renderer on Linux 2025-08-22 08:31:14 +12:00
bredo
dd5a19ac80 Apply 1 suggestion(s) to 1 file(s)
Co-authored-by: hypevhs <4498312-hypevhs@users.noreply.gitlab.com>
2025-08-22 08:19:05 +12:00
bredo
7f24920de4 Resonite: remove mention of texture bugs
https://gitlab.com/lvra/lvra.gitlab.io/-/merge_requests/132#note_2701862285
2025-08-22 08:18:02 +12:00
bredo
8cde6c33c1 Resonite: Add section about viseme analysis on Linux 2025-08-22 07:12:55 +12:00
bredo
9474ce7759 Resonite: Mention OpenComposite crashing
https://github.com/Yellow-Dog-Man/Resonite-Issues/issues/5152
2025-08-22 07:07:28 +12:00
bredo
a77aa3f14f Resonite: remove mention about needing to force Proton
This has apparently been fixed:
https://github.com/Yellow-Dog-Man/Resonite-Issues/issues/5303
https://gitlab.com/lvra/lvra.gitlab.io/-/merge_requests/132#note_2700847834
2025-08-22 07:03:06 +12:00
bredo
df154f8364 Resonite: change wording of Proton warning 2025-08-21 22:21:34 +12:00
bredo
1630149278 Resonite: the splittening is released
Resonite technically runs natively on Linux now, but Proton is still
required for the renderer.
2025-08-21 22:19:22 +12:00
bredo
52b93d4dc1 Resonite: remove mention of ResonitePlatformSpoof
Now that The Splittening has released and FrooxEngine runs on Linux
natively, ResonitePlatformSpoof is no longer needed for the tux badge.
2025-08-21 22:08:55 +12:00
hypevhs
e331a788eb Merge branch 'wayvr-dashboard' into 'main'
WayVR Dashboard: Add section

See merge request lvra/lvra.gitlab.io!131
2025-08-19 15:47:20 -05:00
hypevhs
2d7268861a Reorder FOSS VR 2025-08-19 15:44:46 -05:00
hypevhs
564531e7fa WayVR Dashboard: Add section 2025-08-19 15:44:46 -05:00
hypevhs
12531fe424 Hardware: lower-latency ALSA headroom
Co-authored-by: notfranko_ <growfrog777@gmail.com>
2025-08-19 14:31:23 -05:00
galister
d5a2888b39 wmr: forcing nvidia display 2025-08-16 07:57:37 +00:00
hypevhs
faccf248d4 Merge branch 'main' into 'main'
Add documentation for Fedora Atomic

See merge request lvra/lvra.gitlab.io!129
2025-08-12 14:04:50 -05:00
Shiloh Fen
304cf9c00b add trailing slashes
Signed-off-by: Shiloh Fen <shiloh@shilohfen.com>
2025-08-12 03:00:18 -05:00
Shiloh Fen
b1733b637b Add Fedora Atomic documentation
Signed-off-by: Shiloh Fen <shiloh@shilohfen.com>
2025-08-12 01:51:04 -05:00
Shiloh Fen
78adf4f04e wivrn: add Steam Flatpak override for WiVRn user installation
Signed-off-by: Shiloh Fen <shiloh@shilohfen.com>
2025-08-12 00:27:59 -05:00
mae taylor
da9293fe92 vrchat: add info on linking Pictures folder 2025-08-11 19:38:45 -05:00
hypevhs
f9fc5fe959 Merge branch 'patch-bigscreen-kernel-6.15' into 'main'
Add Bigscreen Beyond Kernel patch for kernels post 6.15

See merge request lvra/lvra.gitlab.io!120
2025-08-11 19:31:37 -05:00
coolGi
1592696bb4 added bigscreen beyond kernel patch for kernels post 6.15 2025-08-11 19:10:03 -05:00
hypevhs
93b11c9c76 Merge branch 'patch-1' into 'main'
added info about resonite on the pre-release of the splittening

See merge request lvra/lvra.gitlab.io!128
2025-08-11 18:14:06 -05:00
Naia
b2aef3c37f added info about resonite on the pre-release of the splittening 2025-08-11 18:14:06 -05:00
galister
c930d00537 Update info on intel drivers 2025-08-11 08:30:38 +00:00
hypevhs
07a9927d4d Merge branch 'main' into 'main'
Bigscreen Beyond Driver under Proton

See merge request lvra/lvra.gitlab.io!111
2025-08-09 17:27:47 -05:00
kzd
9edb83bf8b Bigscreen Beyond Driver under Proton 2025-08-09 17:27:47 -05:00
Bones
2b22a619a9 Merge branch 'steamvr-autolaunch' into 'main'
Document disabling SteamVR controller autolaunch

See merge request lvra/lvra.gitlab.io!127
2025-08-06 12:45:56 +00:00
Supreeeme
00c9650c03 Document disabling SteamVR controller autolaunch 2025-08-06 03:58:52 +00:00
Bones
d7a7cec161 Update Pico Neo 3 2025-08-05 10:40:27 -04:00
Bones
3e95d825f1 Update hardware support info 2025-08-05 10:07:26 -04:00
hypevhs
9cd3371185 htmltest: ignore steamdb 2025-08-04 16:12:10 -05:00
hypevhs
7a3be60843 envision: the SteamLinuxRuntime_sniper-arm64 issue 2025-08-03 17:02:37 -05:00
hypevhs
f6042da0fa monado: don't hotlink logo 2025-08-03 16:14:54 -05:00
hypevhs
0ce06575f8 add monado icon png 2025-08-03 16:06:42 -05:00
hypevhs
a4b56825fa monado: add kernel params for not-GRUB 2025-08-03 15:56:06 -05:00
hypevhs
c24cffb35c vrcx: just link to their guide 2025-08-03 13:59:32 -05:00
hypevhs
b4b8e2ad73 vrcx: remove wine method 2025-08-03 13:50:06 -05:00
hypevhs
e716fca93b Merge branch 'patch-1' into 'main'
Add Nvidia wired screen tearing with VRR monitors

See merge request lvra/lvra.gitlab.io!126
2025-08-03 13:42:37 -05:00
WMan Twentytwo
e8993b5ece Edit _index.md 2025-08-03 13:24:23 -05:00
hypevhs
0c33833f3f Merge branch 'patch-4' into 'main'
Extend lighthouse-tracked pairing

See merge request lvra/lvra.gitlab.io!119
2025-08-03 13:04:54 -05:00
Glax
9bc48e92bc Extend lighthouse-tracked pairing 2025-08-03 13:04:54 -05:00
Bones
1fbd86d3be Merge branch 'nvidia-lat' into 'main'
Update nvidia GPU situation

See merge request lvra/lvra.gitlab.io!125
2025-07-27 02:35:26 +00:00
Bones
063b2051fc Update nvidia GPU situation 2025-07-21 14:59:05 -04:00
galister
803cf1a320 add native packages info to wivrn/steamvr_lh 2025-07-21 06:06:03 +00:00
hypevhs
5f0a208466 Merge branch 'main' into 'main'
Unify Stardust docs by linking to Stardust wiki setup guide

See merge request lvra/lvra.gitlab.io!124
2025-07-09 13:14:45 -05:00
hypevhs
1c37567b13 Merge branch 'resonite-proton-note' into 'main'
Resonite: Add mention about Steam not using Proton

See merge request lvra/lvra.gitlab.io!122
2025-07-09 12:22:38 -05:00
bredo
43e2f3329e resonite: change recommended Proton version
GE-Proton-RTSP doesn't help Resonite any more than normal GE - RTSP GE
is primarily focused at VRChat
2025-07-09 12:17:43 -05:00
bredo
74f7992dc5 Resonite: Add mention about Steam not using Proton
Sometimes Steam will not use Proton to try and run the Windows build of
Resonite - likely due to the Linux native build being removed.
2025-07-09 12:17:43 -05:00
Owen Zimmerman
1f6b776c6a Unify Stardust docs by linking to Stardust wiki setup guide 2025-07-09 01:46:33 +00:00
galister
d9df074276 add community & vrdb link to main index 2025-07-08 11:09:10 +00:00
hypevhs
fdd2096a3c Merge branch 'remove-vrchat-mention' into 'main'
Resonite: remove unnecessary comment about VRChat

See merge request lvra/lvra.gitlab.io!121
2025-06-18 17:11:54 -05:00
bredo
46f9a54a8e Resonite: remove unnecessary comment about VRChat 2025-06-19 09:10:21 +12:00
hypevhs
44851800bb Merge branch 'patch-2' into 'main'
Update SteamVR page (Reprojection)

See merge request lvra/lvra.gitlab.io!117
2025-06-12 21:47:47 -05:00
Glax
0d9815c448 Edit _index.md 2025-06-12 21:45:09 -05:00
Bones
56c2dafda2 Merge branch 'patch-1' into 'main'
EyetrackVR

See merge request lvra/lvra.gitlab.io!113
2025-05-28 08:16:26 +00:00
Glax
df6ced6f10 Edit _index.md EyetrackVR 2025-05-23 21:48:36 +00:00
hypevhs
f18b7ed80e Merge branch 'patch-1' into 'main'
Mark support for the Razer Hydra.

See merge request lvra/lvra.gitlab.io!112
2025-05-22 18:31:11 -05:00
Beyley Cardellio
0efd5352ee Mark support for the Razer Hydra. 2025-05-22 04:56:36 +00:00
Bones
0e4d5510ec Update landing page for WiVRN bin dist 2025-05-21 05:56:19 +00:00
Bones
e2afb9efd5 Merge branch 'main' into 'main'
Added "OXR_PARALLEL_VIEWS=1 %command%"  for openvr games

See merge request lvra/lvra.gitlab.io!107
2025-05-21 05:32:29 +00:00
hypevhs
6b39bcc5be Merge branch 'patch-1' into 'main'
Update instructions for Void Linux: OpenXR is now available

See merge request lvra/lvra.gitlab.io!110
2025-05-20 17:36:48 -05:00
Adam Gausmann
b1ea3c3671 Update instructions for Void Linux: OpenXR is now available 2025-05-20 17:36:48 -05:00
Mhowser
ebffb51637 Resonite: Fix info highlight 2025-05-20 17:27:22 -05:00
hypevhs
d3b664e9b9 Merge branch 'patch-1' into 'main'
Noted on an issue with Outer Wilds NomaiVR with proton 9+

See merge request lvra/lvra.gitlab.io!108
2025-05-18 17:28:53 -05:00
coolGi
bc7668259d Noted on an issue with Outer Wilds NomaiVR with proton 9+ 2025-05-18 18:30:47 +09:30
hypevhs
f2fd537f46 Merge branch 'cherry-pick-2cc2fb98' into 'main'
add more info in performance section, add section for ResonitePlatformSpoof

See merge request lvra/lvra.gitlab.io!106
2025-05-18 02:34:53 -05:00
Marcus Howser
b7a6cc9be3 add more info in performance section, add section for ResonitePlatformSpoof 2025-05-18 02:34:53 -05:00
Mandle Rex
2b6a31520a Update 2 files
- /content/docs/fossvr/envision/_index.md
- /content/docs/fossvr/monado/_index.md
2025-05-16 06:05:28 +00:00
galister
75c5a45f91 Merge branch 'patch-1' into 'main'
Remove experimental warning about Envision

See merge request lvra/lvra.gitlab.io!73
2025-05-14 21:49:42 +00:00
Theo
1142eddd7f Remove experimental warning about Envision 2025-05-14 21:49:42 +00:00
galister
5f59afaedd Merge branch 'cherry-pick-ac3b5ca3-2' into 'main'
restructure, add modding info in Resonite section

See merge request lvra/lvra.gitlab.io!105
2025-05-14 21:46:46 +00:00
Marcus Howser
b90587e857 restructure, add modding info in Resonite section 2025-05-14 21:46:46 +00:00
galister
ee10d8d59a Merge branch 'cherry-pick-811d920b' into 'main'
Minor restructuring to Outer Wilds section

See merge request lvra/lvra.gitlab.io!102
2025-05-14 21:45:53 +00:00
galister
d51a4d3edc Merge branch 'cherry-pick-52bb0f57' into 'main'
Add info for LVRA DB website

See merge request lvra/lvra.gitlab.io!103
2025-05-14 21:44:53 +00:00
Marcus Howser
8186224b01 Add info for LVRA DB website 2025-05-14 21:44:53 +00:00
Marcus Howser
da178790c8 gorp 2025-05-14 01:26:50 -07:00
Mhowser
c92f3ca972 Minor restructuring to Outer Wilds section
(cherry picked from commit 811d920b93f09fde5bdf093ea1ff0b5000c4eec5)

Co-authored-by: Mhowser <mhowser265@gmail.com>
2025-05-14 08:21:18 +00:00
hypevhs
eae94ff98b Merge branch 'main' into 'main'
Add info for HaritoraX trackers / Slimetora

See merge request lvra/lvra.gitlab.io!101
2025-05-13 18:24:20 -05:00
Mhowser
9588d49e0b Add info for HaritoraX trackers / Slimetora 2025-05-13 18:24:20 -05:00
hypevhs
4de0ea9fdf Merge branch 'patch-2' into 'main'
Outer Wilds - Remove proton warning, add info for fixed bindings

See merge request lvra/lvra.gitlab.io!99
2025-05-12 01:06:11 -05:00
Mhowser
07c1ce5940 Remove proton warning, add info for fixed bindings 2025-05-12 00:42:51 -05:00
hypevhs
7f45ae5ca4 Merge branch 'envision/steam-flatpak' into 'main'
fossvr/envision: Add instructions for using Envision with Steam Flatpak

See merge request lvra/lvra.gitlab.io!100
2025-05-12 00:41:31 -05:00
Sapphire
8d7e2fb8ad fossvr/envision: Add instructions for using Envision with Steam Flatpak
Co-authored-by: Shiloh Fen <shiloh@shilohfen.com>
Signed-off-by: Sapphire <imsapphire0@gmail.com>
2025-05-09 13:04:50 -05:00
Gabriele Musco
fde61e2637 fix: update theme 2025-05-07 00:04:00 +02:00
Gabriele Musco
64310b11ce fix: hint shortcode 2025-05-07 00:03:37 +02:00
BabbleBones
6e63e153c5 Add snippet about AMDVLK 2025-05-06 15:42:33 -04:00
BabbleBones
ce5d3462df Update GPU info 2025-05-06 15:36:18 -04:00
Bones
a7fc2c1016 Warn Nvidia issued on wired headsets 2025-05-06 18:31:09 +00:00
Bones
8179d4ba52 Merge branch 'main' into 'main'
Edit Vive Pro Eye as fully supported, Add ReVision link in hardware note

See merge request lvra/lvra.gitlab.io!98
2025-05-06 16:14:25 +00:00
Bones
4806289c35 Adjust corectrl info 2025-05-06 16:13:42 +00:00
notfranko_
76358ac97e Edit Vive Pro Eye as fully supported
Add ReVision link in hardware note
2025-05-06 18:31:24 +03:00
Bones
4c50760d79 Merge branch 'patch-1' into 'main'
Edit Pimax headsets to mention AMD GPUs only

See merge request lvra/lvra.gitlab.io!97
2025-05-06 14:38:23 +00:00
Aleksandar Dimitrov
0a7882de8c Edit Pimax headsets to mention AMD GPUs only 2025-05-06 14:22:30 +00:00
xytovl
d023a59ce9 Merge branch 'xrizer' into 'main'
Add xrizer wiki page

See merge request lvra/lvra.gitlab.io!96
2025-05-06 10:03:09 +00:00
Sapphire
97cf466518 Add xrizer wiki page 2025-05-06 04:17:23 -05:00
xytovl
9020075c44 Merge branch 'wivrn/distro-packages' into 'main'
wivrn: Add more distro packages, revise wired connection section, minor other edits

See merge request lvra/lvra.gitlab.io!95
2025-05-06 08:42:45 +00:00
Sapphire
2df747a604 wivrn: Add more distro packages, revise wired connection section, minor other edits 2025-05-06 03:36:09 -05:00
xytovl
2f2d97a3eb Update WiVRn install recommendation 2025-05-06 08:03:18 +00:00
hypevhs
1263b3bd11 Merge branch 'opensuse-steamvr' into 'main'
OpenSUSE: SteamVR needs setcap

Closes #3

See merge request lvra/lvra.gitlab.io!94
2025-05-01 22:00:39 -05:00
hypevhs
6c9d7d9a67 OpenSUSE: SteamVR needs setcap 2025-05-01 22:00:39 -05:00
hypevhs
ae6e1d6e1a Merge branch 'patch-1' into 'main'
docs/wmr_controllers: Add warning about firmware

See merge request lvra/lvra.gitlab.io!92
2025-04-29 16:03:10 -05:00
Alicja Michalska
26d8780e25 docs/wmr_controllers: Add warning about firmware 2025-04-29 16:00:52 -05:00
hypevhs
5f8d4fd458 Merge branch 'ft' into 'main'
VRCFaceTracking.Avalonia as an alternative option to OscAvMgr.

See merge request lvra/lvra.gitlab.io!93
2025-04-29 15:59:50 -05:00
DeltaNeverUsed
1b85369fd8 feat: add VRCFaceTracking.Avalonia as an alternative option to OscAvMgr 2025-04-28 11:13:26 +02:00
hypevhs
b3fc86f9a4 Merge branch 'eac-message' into 'main'
VRChat EAC: Rewrite

See merge request lvra/lvra.gitlab.io!91
2025-04-25 19:00:12 -05:00
hypevhs
394497d81e CI: Ignore PCGamingWiki 2025-04-25 18:47:52 -05:00
hypevhs
e5276b5b70 VRChat EAC: Rewrite
EAC startup errors are really rare now. Let's write the article in the
past tense.
2025-04-25 18:38:38 -05:00
hypevhs
3659752e20 Merge branch 'solarxr-envision-cmake-option' into 'main'
fossvr/wivrn: Fix missing Envision CMake option step for SolarXR

See merge request lvra/lvra.gitlab.io!89
2025-04-22 20:06:42 -05:00
Sapphire
1ed840500e fossvr/wivrn: Fix missing Envision CMake option step for SolarXR 2025-04-22 20:06:00 -05:00
hypevhs
8e51d3758d Merge branch 'monado-nv-wayland-direct' into 'main'
fossvr/monado: Recommend forcing Wayland direct mode on NVIDIA if acquiring display fails

See merge request lvra/lvra.gitlab.io!90
2025-04-22 20:05:25 -05:00
Sapphire
d6f6ea0e57 fossvr/monado: Recommend forcing Wayland direct mode on NVIDIA if acquiring display fails 2025-04-22 14:56:31 -05:00
galister
99233eba40 Merge branch 'oc-forced-trackers' into 'main'
fossvr/opencomposite: Add non-tracker-device-as-tracker section

See merge request lvra/lvra.gitlab.io!88
2025-04-21 17:29:52 +00:00
Sapphire
515dbf8d0a fossvr/opencomposite: Add non-tracker-device-as-tracker section 2025-04-21 08:54:52 -05:00
hypevhs
f65187873b Merge branch 'patch-1' into 'main'
Add troubleshooting step for Valve Index microphone

See merge request lvra/lvra.gitlab.io!80
2025-04-14 13:18:54 -05:00
stella
ec854e370f Add troubleshooting step for Valve Index microphone 2025-04-14 13:18:54 -05:00
hypevhs
e8c745ddc1 Merge branch 'void-linux' into 'main'
Add specific information for Void Linux

See merge request lvra/lvra.gitlab.io!87
2025-04-14 13:16:38 -05:00
Lennart Kroll
62e4e41a72 Add specific information for Void Linux 2025-04-14 13:09:59 -05:00
hypevhs
255bd4726c Merge branch 'patch-1' into 'main'
SlimeVR: add SolarXR instructions for WiVRn

See merge request lvra/lvra.gitlab.io!71
2025-04-14 13:05:01 -05:00
Romain D.
9a7a5cb6ba SlimeVR: add SolarXR instructions for WiVRn 2025-04-14 12:51:39 -05:00
hypevhs
807214efb8 Merge branch 'nix-warning' into 'main'
Add warning for NixOS

See merge request lvra/lvra.gitlab.io!86
2025-04-14 12:44:24 -05:00
Mhowser
524ea9ee27 Envision: Warn NixOS users 2025-04-14 12:44:24 -05:00
hypevhs
c1b3f9bed5 Merge branch 'wivrn-nixos-lh-env' into 'main'
fossvr/wivrn: Add env vars for NixOS lighthouse setup

See merge request lvra/lvra.gitlab.io!85
2025-04-10 21:27:57 -05:00
Sapphire
6132a72444 fossvr/wivrn: Add env vars for NixOS lighthouse setup 2025-04-10 21:09:06 -05:00
hypevhs
5cc1ba51e3 Merge branch 'wivrn-lighthouse-nixos' into 'main'
fossvr/wivrn: Add NixOS instructions for lighthouse usage

See merge request lvra/lvra.gitlab.io!84
2025-04-10 20:57:55 -05:00
Sapphire
3a5d772127 fossvr/wivrn: Add NixOS instructions for lighthouse usage 2025-04-10 20:52:51 -05:00
hypevhs
1935b7dc73 Merge branch 'wivrn-solarxr' into 'main'
fossvr/wivrn: Add SlimeVR section

See merge request lvra/lvra.gitlab.io!83
2025-04-10 20:50:17 -05:00
Sapphire
a1bc2b0ad6 fossvr/wivrn: Add SlimeVR section 2025-04-10 18:23:49 -05:00
hypevhs
e53f656de4 Merge branch 'main' into 'main'
Add Monado display troubleshooting

See merge request lvra/lvra.gitlab.io!82
2025-04-08 16:12:33 -05:00
Sapphire
ae3dc5372c Add Monado display troubleshooting 2025-04-08 16:12:33 -05:00
hypevhs
9a3bc24490 Merge branch 'resonite-tweaks' into 'main'
Resonite: Linux native build removal

See merge request lvra/lvra.gitlab.io!81
2025-04-08 12:48:04 -05:00
bredo
bc19750874 resonite: remove mention of linux binary download
Steam will now automatically use compatibility tools for Resonite post
removal of the Linux native build
2025-04-08 20:24:05 +12:00
bredo
5468b2722e resonite: add mention of Linux native build removal 2025-04-08 20:24:01 +12:00
hypevhs
9f6f2a2076 Merge branch 'main' into 'main'
Update VRCSDK Patch info

See merge request lvra/lvra.gitlab.io!77
2025-04-05 10:05:47 -05:00
Sinus
7672eb111f Update VRCSDK Patch info 2025-04-05 10:05:47 -05:00
hypevhs
d89f9e3dde Hardware: install Fedora builddeps 2025-04-03 15:16:52 -05:00
hypevhs
b77fb35795 Merge branch 'patch-1' into 'main'
Added links, helpful info in performance section

See merge request lvra/lvra.gitlab.io!79
2025-04-03 13:01:50 -05:00
Mhowser
44ee7490f5 Added links, helpful info in performance section 2025-04-03 13:01:50 -05:00
hypevhs
b3a7600b4d Resonite: mention OXR_PARALLEL_VIEWS 2025-04-02 22:44:27 -05:00
hypevhs
cf152ff810 Merge branch 'vulkan-layers-meh' into 'main'
Remove dead links to vulkan-layers, encourage >=565

See merge request lvra/lvra.gitlab.io!78
2025-03-31 11:43:19 -05:00
hypevhs
9101358589 Index: recommend replug technique 2025-03-29 11:24:06 -05:00
hypevhs
ba3cf3f3a3 Remove AdGoBye
It's been mostly broken for a while, but a recent VRChat change has made it outright impossible to fix, so the project is dead. See: https://github.com/AdGoBye/AdGoBye/issues/105#issuecomment-2763012736
2025-03-28 22:06:17 -05:00
hypevhs
e728202c9a Remove dead links to vulkan-layers, encourage >=565 2025-03-28 13:09:05 -05:00
hypevhs
4868cc9a8c Fix trailing spaces 2025-03-28 13:08:59 -05:00
hypevhs
ae430abd23 Envision: discourage AppImageLauncher 2025-03-28 10:39:55 -05:00
hypevhs
64a7b7196b Merge branch 'main' into 'main'
SlimeVR: Remove outdated important notes

See merge request lvra/lvra.gitlab.io!76
2025-03-22 12:14:01 -05:00
Aleksander
621af2e338 SlimeVR: Remove outdated important notes 2025-03-22 10:40:09 +01:00
Nova King
9d4e3a26b1 Merge branch 'patch-1' into 'main'
Edit _index.md

See merge request lvra/lvra.gitlab.io!75
2025-03-19 04:30:10 +00:00
Johnny Mnemonic
28595b46f4 Edit _index.md
Updating links and information
2025-03-19 03:06:03 +00:00
hypevhs
5693edf1e2 Merge branch 'update-nixos-info' into 'main'
Update NixOS documentation

See merge request lvra/lvra.gitlab.io!74
2025-03-17 14:46:30 -05:00
AnnoyingRains
d0d653b514 Update NixOS documentation with setup recommendations, as well as instructions on how to undo the damage that Envision can do to a NixOS VR system. 2025-03-11 13:32:31 +00:00
AnnoyingRains
c1907a137e Fix typo 2025-03-11 12:22:50 +00:00
galister
a9699c16dc Merge branch 'wmr-instructions' into 'main'
Add WMR Lighthouse hacky wiki entry

See merge request lvra/lvra.gitlab.io!70
2025-03-04 19:28:20 +00:00
Zuzka Varga
c869edaefc Add WMR Lighthouse hacky wiki entry 2025-03-04 19:28:20 +00:00
hypevhs
ea0704d99b Merge branch 'wivrn-steam-flatpak' into 'main'
WiVRn: Add Steam Flatpak instructions

See merge request lvra/lvra.gitlab.io!69
2025-02-15 19:42:54 +00:00
hypevhs
606910ecc6 WiVRn: Add Steam Flatpak instructions
Co-authored-by: Tabitha Moon <123581598+tabithamoon@users.noreply.github.com>
2025-02-13 15:23:48 -06:00
hypevhs
4042104f3b Merge branch 'main' into 'main'
Tweak examples in exe redirection instructions

See merge request lvra/lvra.gitlab.io!67
2025-02-12 02:58:09 +00:00
hypevhs
eb4521d1ce Merge branch 'patch-1' into 'main'
Edit vrcx.md to add the native linux appimage version.

See merge request lvra/lvra.gitlab.io!66
2025-02-11 23:06:37 +00:00
hypevhs
e8a3669c57 Update vrcx.md 2025-02-11 16:55:46 -06:00
Reimei
12407c856f Edit vrcx.md to add the native linux appimage version. 2025-02-11 21:55:37 +00:00
hypevhs
57fa2e5144 Merge branch 'Mhowser-main-patch-28c5' into 'main'
Add Outer Wilds Section

See merge request lvra/lvra.gitlab.io!63
2025-02-11 20:34:22 +00:00
Mhowser
a0e142e9ab Add Outer Wilds Section 2025-02-11 20:34:22 +00:00
Bones
81cbe09300 Update SlimeVR info 2025-02-07 15:07:28 +00:00
Valters Tomsons
20efb3ced0 More examples to a subsection 2025-02-02 01:51:37 +02:00
Valters Tomsons
140899ba49 Add CrysisVR example 2025-02-02 01:45:52 +02:00
hypevhs
f4a5b5e715 Merge branch 'steam-manual-pairing' into 'main'
Document lighthouse_console instructions

See merge request lvra/lvra.gitlab.io!64
2025-01-25 22:39:42 +00:00
Virgile Robles
2206c528b4 document lighthouse_console instructions 2025-01-25 21:39:59 +01:00
GabMus
7f3c6ee1e9 Merge branch 'patch-1' into 'main'
Add relevant information for the Ultraleap v1 hand tracking module.

See merge request lvra/lvra.gitlab.io!62
2025-01-12 09:20:57 +00:00
Yannick
6ac38f8186 Add relevant information for the Ultraleap v1 hand tracking module. 2025-01-12 09:20:57 +00:00
Gabriele Musco
bca6908c5e fix links in envision page 2025-01-12 10:18:42 +01:00
GabMus
7fba4a5543 warn the user about the dangers of gpu overclocking, stop suggesting to crank up sliders in corectrl 2025-01-12 09:14:59 +00:00
hypevhs
a3fd71e6ce Envision: add plugins section 2025-01-11 10:03:06 +00:00
Bones
a413272aeb Update info for pico neo 3 2025-01-08 14:34:20 +00:00
hypevhs
6558e53528 Merge branch 'main' into 'main'
Add section for mod manager integration with Steam/Proton

See merge request lvra/lvra.gitlab.io!58
2025-01-04 22:47:36 +00:00
hypevhs
1618c8c846 unity.md: downgrade ALCOM 2025-01-02 19:39:23 +00:00
hypevhs
2d851619a7 Merge branch 'main' into 'main'
Add VR Setup on Arch with WMR and Controller tracking

See merge request lvra/lvra.gitlab.io!61
2024-12-30 17:34:22 +00:00
Toemmsen96
1c735f8a20 Add VR Setup on Arch with WMR and Controller tracking 2024-12-30 17:34:22 +00:00
hypevhs
db514e48c6 Merge branch 'main' into 'main'
Add note about amdgpu.ppfeaturemask

See merge request lvra/lvra.gitlab.io!54
2024-12-26 19:09:22 +00:00
Valters Tomsons
eb423e0c44 Remove trailing space 2024-12-26 19:43:51 +02:00
Valters Tomsons
7cebcda718 Remove -forcesteamloader from example because it makes Vortex crash 2024-12-26 19:40:24 +02:00
Valters Tomsons
cb72bead7d Add tip about redirecting game exectuables 2024-12-25 00:17:15 +02:00
Valters Tomsons
1a8bad3d4f Add expanded notes 2024-12-25 00:16:58 +02:00
Valters Tomsons
9ef4b5beb0 Tweak instructions 2024-12-24 04:05:43 +02:00
Valters Tomsons
d6a3becf4d Add subheading for instruction start 2024-12-24 04:00:43 +02:00
Valters Tomsons
c38b5b764e Fix some typos, tweak some points 2024-12-24 03:59:41 +02:00
Valters Tomsons
71bf9be751 Add section for mod manager integration with Steam/Proton 2024-12-23 21:09:28 +02:00
hypevhs
481ea4cdef Merge branch 'Mhowser-main-patch-77233' into 'main'
Add envision AUR package

See merge request lvra/lvra.gitlab.io!55
2024-12-10 09:04:05 +00:00
Mhowser
4c5c582624 Add envision AUR package 2024-12-10 08:55:50 +00:00
hypevhs
fa3d76b0ae wlxoverlay-s.md: Add WayVR section 2024-12-10 01:33:32 +00:00
Jonathan Steffan
e70867ec89 Add note about amdgpu.ppfeaturemask 2024-12-02 16:14:59 +00:00
galister
c6b8c17397 update monado-vulkan-layers links 2024-11-29 21:07:28 +00:00
hypevhs
ae66b0356e Merge branch 'xytovl-main-patch-14309' into 'main'
Remove WiVRn + SlimeVR section

See merge request lvra/lvra.gitlab.io!52
2024-11-22 22:43:15 +00:00
xytovl
e62a82f482 Remove WiVRn + SlimeVR section
Can be added back once SlimeVR support is merged into baseline Monado
2024-11-21 13:46:13 +00:00
hypevhs
021c637292 Merge branch 'logo_min' into 'main'
Optimize logo image (601 KiB -> 18 KiB)

See merge request lvra/lvra.gitlab.io!50
2024-11-16 02:36:06 +00:00
Aleksander
dbab82f1c4 Optimize logo image (601 KiB -> 18 KiB) 2024-11-15 23:29:55 +01:00
hypevhs
5d839f22aa Merge branch 'slimevr_third_method' into 'main'
SlimeVR: Add third method (SolarXR driver for Monado)

See merge request lvra/lvra.gitlab.io!48
2024-11-10 18:11:44 +00:00
galister
965acbed48 Merge branch 'fedora-patch' into 'main'
kernel patching for fedora, add 6.10+ patches

See merge request lvra/lvra.gitlab.io!49
2024-11-10 10:48:48 +00:00
galister
feffa344f2 kernel patching for fedora, add 6.10+ patches 2024-11-10 10:48:48 +00:00
Aleksander
9b8e8d8f88 SlimeVR: Add third method (SolarXR driver for Monado) 2024-11-09 11:44:31 +01:00
hypevhs
97e5424eac Merge branch 'fix-nvidia-crash-warning-wording' into 'main'
Reword Nvidia Vulkan Layer Requirement

See merge request lvra/lvra.gitlab.io!47
2024-11-08 21:38:58 +00:00
Dandrid Dandresis
062de55c8e Reword Nvidia Vulkan Layer Requirement 2024-11-08 16:02:20 -05:00
galister
292f5e244a WiVRn + SlimeVR no longer experimental 2024-11-05 05:20:37 +00:00
hypevhs
ef2da7f7f1 Resonite: native is busted, add troubleshooting 2024-11-04 22:42:34 -06:00
hypevhs
7b8fc48699 Merge branch 'fix-hugo-book-update' into 'main'
Unbreak after hugo-book update

See merge request lvra/lvra.gitlab.io!46
2024-11-05 03:56:34 +00:00
hypevhs
d85c3aba46 Fix htmltest 2024-11-04 21:51:35 -06:00
hypevhs
51a0cc20c4 Fix <hint>s that broke with hugo-book update 2024-11-04 21:48:53 -06:00
galister
1dc2988ea1 update wivrn guide 2024-11-04 14:43:22 +00:00
hypevhs
051570b401 Merge branch 'main' into 'main'
Remove Envision AppImage warning for WiVRn, add Unity troubleshooting step for RHEL/Fedora

Closes #1

See merge request lvra/lvra.gitlab.io!45
2024-10-31 07:56:39 +00:00
Sapphire
314153e45c Add RHEL documentation link to Unity licensing troubleshooting 2024-10-31 06:57:26 +00:00
Sapphire
7864586d10 Add RHEL/Fedora OpenSSL troubleshooting step for Unity licensing failures 2024-10-31 06:39:13 +00:00
Sapphire
6e1dea2873 Remove warning about WiVRn when using Envision AppImage 2024-10-31 06:32:14 +00:00
galister
cd69a8610e slimevr reset logic was fixed 2024-10-27 10:33:49 +00:00
hypevhs
b6407a5de4 Merge branch 'main' into 'main'
Added details to WiVRn section

See merge request lvra/lvra.gitlab.io!44
2024-10-24 09:00:16 +00:00
hypevhs
e01710a223 Merge branch 'main' into 'main'
Update NixOS info

See merge request lvra/lvra.gitlab.io!43
2024-10-24 08:59:11 +00:00
Aldzen0
d8badb0eb0 Added details to WiVRn section. Mostly pulled from the WiVRn Github, Personal experience, and aspects mentioned elsewhere in the wiki that I believe should also be mentioned here. 2024-10-21 01:59:26 +00:00
PassiveLemon
523bc89e5b Update NixOS info 2024-10-20 20:14:25 -04:00
Gabriele Musco
3b94461f8d fix: remove white filter from logo and make it a little bigger 2024-10-18 07:33:33 +02:00
Bones
80898d3595 Update FBT info 2024-10-18 02:03:56 +00:00
Bones
b9ad920d21 Merge branch 'DeltaNeverUsed-main-patch-42793' into 'main'
Use newer SDK patches for the VRChat SDK

See merge request lvra/lvra.gitlab.io!42
2024-10-17 21:51:16 +00:00
Sinus
ff5b6c9401 fix: update sdk patch instructions 2024-10-17 21:39:43 +00:00
Gabriele Musco
ec08c67eef fix: update hugo theme 2024-10-17 17:54:13 +02:00
Bones
2d46f5260d Update general info of hardware on Envision 2024-10-17 00:17:26 +00:00
Bones
b04f4c7fed Update support matrix openhmd status 2024-10-16 23:58:41 +00:00
Bones
265217b518 fix: spelling 2024-10-12 14:03:09 +00:00
Bones
75bda8b3fc Merge branch 'opencomposite-rebinding' into 'main'
Instructions for overriding OpenVR bindings

See merge request lvra/lvra.gitlab.io!41
2024-10-11 13:25:18 +00:00
Sarah
e57ff76ad1 Instructions for overriding OpenVR bindings 2024-10-11 15:10:56 +02:00
hypevhs
c1cf979c69 Merge branch 'resonite' into 'main'
Update Resonite info

See merge request lvra/lvra.gitlab.io!40
2024-10-10 18:43:18 +00:00
hypevhs
976f50fec6 CICD: Don't test hugo-book commit links 2024-10-10 18:41:46 +00:00
Orion Moonclaw
8a6b748a89 Update Resonite info 2024-10-10 20:17:09 +02:00
hypevhs
d43cfe6b9b CICD: run pages job even on htmltest fail 2024-10-10 17:34:15 +00:00
hypevhs
8417d97065 Merge branch 'xrbinder-guide' into 'main'
Added xrBinder page with guide on installation and usage

See merge request lvra/lvra.gitlab.io!39
2024-10-10 17:03:53 +00:00
ExDe707
a0241c2b24 Added xrBinder page with guide on installation and usage 2024-10-10 18:03:53 +02:00
galister
4638b5f65c wivrn: solarxr now on master 2024-10-01 21:19:47 +00:00
galister
c7cc5ab6fd wivrn: no longer have to grab matching APK manually 2024-09-27 09:04:49 +00:00
galister
9cd23881f8 slimevr-monado is experimental 2024-09-24 13:58:07 +00:00
galister
e5113dc22a wivrn: format 2024-09-23 09:08:59 +00:00
galister
33d2240f13 wivrn: add slimevr 2024-09-23 09:05:49 +00:00
galister
c0d96c0d15 steamvr quick-start: improve wording 2024-09-20 17:32:55 +00:00
galister
73de3671d4 update USB wivrn for 0.19 release 2024-09-19 15:21:00 +00:00
galister
d440bf8f28 vrchat: test worlds / avatars 2024-09-17 18:13:01 +00:00
galister
49b1c6ed89 wivrn: format 2024-09-13 16:49:35 +00:00
galister
d54ebed8f1 wivrn: improve wording 2024-09-13 16:32:31 +00:00
galister
deb1ac1b36 wivrn: add wired mode guide 2024-09-13 16:16:26 +00:00
galister
c13b40404a add wivrn-lighthouse guide 2024-09-13 15:45:47 +00:00
galister
b02a40bce9 add motoc + wlx info 2024-09-05 22:47:55 +00:00
galister
f531c9a279 add motoc 2024-09-04 23:14:38 +00:00
hypevhs
20f17db1c8 Envision: link to main pipelines 2024-09-03 18:20:40 +00:00
hypevhs
5bf33b09fb Update .gitlab-ci.yml file 2024-08-28 20:00:07 +00:00
hypevhs
83fbc8c3d1 Merge branch 'link-check' into 'main'
Check links in CI with htmlcheck

See merge request lvra/lvra.gitlab.io!38
2024-08-28 19:43:01 +00:00
hypevhs
dc4f9edaf1 Fix htmltest failures 2024-08-22 21:49:14 -05:00
hypevhs
1f27801aad Check links in CI with htmlcheck
Remove test_links.py
2024-08-22 21:49:12 -05:00
hypevhs
9e2c8fe2d5 Merge branch 'videoPlayers' into 'main'
Update information about AvPro compatibility

See merge request lvra/lvra.gitlab.io!37
2024-08-22 20:35:55 +00:00
Etch9
12f779c96e Update information about AvPro compatibility 2024-08-22 20:35:54 +00:00
hypevhs
c6f1713f08 Merge branch 'Crate-TW-info-Page' into 'main'
Create TW info page

See merge request lvra/lvra.gitlab.io!22
2024-08-22 19:59:06 +00:00
Etch9
701d90ed56 Create TW info page 2024-08-22 19:59:05 +00:00
hypevhs
37a23e87ae NixOS: Fix relative link 2024-08-17 19:37:38 +00:00
hypevhs
bdcdd81868 Merge branch 'xytovl-main-patch-70562' into 'main'
WiVRn has moved

See merge request lvra/lvra.gitlab.io!36
2024-08-15 19:06:17 +00:00
xytovl
c7bc7bc9b5 Update _index.md 2024-08-15 16:03:39 +00:00
hypevhs
1df86394d9 Unity: add avatar offline build & test instructions 2024-08-14 08:29:31 +00:00
hypevhs
988810b66f Unity: ALCOM fixed drag-and-drop crash 2024-08-14 08:09:13 +00:00
hypevhs
a7fc5f5448 Merge branch 'birbirl-main-patch-98500' into 'main'
Updating the guide for NixOS users as best as i can :)

See merge request lvra/lvra.gitlab.io!35
2024-08-14 06:49:35 +00:00
Birb Irl
a005272a6f epic grammar commit 2024-08-12 18:41:22 +00:00
Birb Irl
48ab5a515a Updating the guide for NixOS users as best as i can :) 2024-08-12 18:31:40 +00:00
galister
ca984c067a update LOVR playspace 2024-08-11 08:21:22 +00:00
hypevhs
2bb72b4034 Merge branch 'alcom-drag-crash' into 'main'
Unity: clarify Meta, ALCOM drag crash, highlight sections when directly linked

See merge request lvra/lvra.gitlab.io!34
2024-08-10 07:53:17 +00:00
hypevhs
9f5ab578e2 feat: highlight active HTML anchor header 2024-08-10 02:21:31 -05:00
hypevhs
7d0db514da Unity: clarify Meta, ALCOM drag crash 2024-08-10 02:16:24 -05:00
hypevhs
2a6c3a1a8a unity.md: Add nvidia crashfix steps for ALCOM, too 2024-08-08 08:41:24 +00:00
67 changed files with 2516 additions and 288 deletions

3
.gitignore vendored
View File

@@ -7,3 +7,6 @@ node_modules/
public/ public/
resources/ resources/
.deploy*/ .deploy*/
# htmltest
tmp/

View File

@@ -1,28 +1,49 @@
variables: variables:
GIT_SUBMODULE_STRATEGY: recursive GIT_SUBMODULE_STRATEGY: recursive
test-links: ## GitLab defaults to:
image: python:latest # stages:
script: # - build
- python3 ./test_links.py # - test
# - deploy
test-trailing-spaces: build-site:
script: stage: build
- ./test_trailing_spaces.sh
test-build:
image: registry.gitlab.com/pages/hugo/hugo_extended
script:
- hugo
except:
- main
pages:
image: registry.gitlab.com/pages/hugo/hugo_extended image: registry.gitlab.com/pages/hugo/hugo_extended
script: script:
- hugo - hugo
artifacts: artifacts:
paths: paths:
- public - public
test-html:
stage: test
image:
name: wjdp/htmltest:latest
entrypoint: [""]
cache:
key: htmltest-cache
paths:
- tmp/
script:
- htmltest
test-trailing-spaces:
stage: test
needs: [] # ok to run before build-site
script:
- ./test_trailing_spaces.sh
# The GitLab Pages job must always be named "pages", and result in a "public" artifact.
# Our "public" artifact is created above, but GitLab jobs will fetch all artifacts from previous stages.
pages:
stage: deploy
script: ls -ld public
artifacts:
paths:
- public
only: only:
- main - main
# New pages are absolute links to prod, and are 404s until they get published.
# Get around htmltest's chicken-and-egg problem. We're on `main`, just publish unconditionally.
when: always

18
.htmltest.yml Normal file
View File

@@ -0,0 +1,18 @@
# https://github.com/wjdp/htmltest?tab=readme-ov-file#wrench-configuration
DirectoryPath: "public"
EnforceHTTPS: true
IgnoreURLs:
# - "example.com"
# - "^/misc/js/script.js$"
# For "Edit this page" and "Last modified by":
- "https://gitlab.com/lvra/lvra.gitlab.io/-/edit"
- "https://gitlab.com/lvra/lvra.gitlab.io/-/commit"
# Blocks bots:
- "https://www.pcgamingwiki.com/"
- "https://steamdb.info/"
- "https://www.npmjs.com/"
# IgnoreDirs:
# - "lib"
CacheExpires: "6h"
IgnoreAltMissing: true

View File

@@ -19,3 +19,13 @@ main {
#menu-control:checked ~ main .book-page { #menu-control:checked ~ main .book-page {
opacity: 1; opacity: 1;
} }
h1,
h2,
h3,
h4,
h5 {
&:target {
background-color: rgba(#f66, 0.1);
}
}

View File

@@ -12,4 +12,16 @@ Feel free to contribute to this wiki yourself if you find anything useful that y
You can start with the [hardware table](/docs/hardware/). You can start with the [hardware table](/docs/hardware/).
After which you may want to take a look at the [Envision](/docs/fossvr/envision/) application for quick setup and compatibility with your PC Steam games. For wireless/android/standalone headsets visit the [WiVRn](/docs/fossvr/wivrn/) page for installation instructions.
For wired headsets similar to Valve Lighthouse/WMR/Oculus/Rift use [Envision](/docs/fossvr/envision/) application for quick setup and compatibility with your PC Steam games.
## Community
Join a community of thousands of Linux VR adventurers!
[More info here.](/docs/community/).
## Game Compatibility
Check [db.vronlinux.org](https://db.vronlinux.org/) for an up-to-date report about what VR titles run well on Linux!

View File

@@ -7,21 +7,25 @@ weight: 250
DIY eye tracking for any headset. Here are the steps to get the software working on linux. DIY eye tracking for any headset. Here are the steps to get the software working on linux.
## Prerequisites
- tkinter `pacman -S tk`
- Python 3.11 available through the [AUR](https://aur.archlinux.org/packages/python311), build yourself! Otherwise tk will not work!
- Build after installing tkinter, otherwise it will not be included
- [poetry](https://python-poetry.org/docs/#installing-with-the-official-installer)
## EyeTrackApp ## EyeTrackApp
`git clone https://github.com/EyeTrackVR/EyeTrackVR.git` ```bash
git clone https://github.com/EyeTrackVR/EyeTrackVR.git
cd EyeTrackVR
poetry install --no-root
cd EyeTrackApp
poetry run pyinstaller eyetrackapp.spec
```
`cd EyeTrackVR` and bada bing bada boom you now should now have a fully functional eyetrack app in directory `dist`
`git checkout v2.0-beta-feature-branch`
`poetry install --no-root`
`cd EyeTrackApp`
and bada bing bada boom you now should now have a fully functional eyetrack app when you run:
`poetry run python3 eyetrackapp.py`
## VRChat Native Eyetracking ## VRChat Native Eyetracking

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

@@ -0,0 +1,24 @@
---
title: OpenSUSE Tumbleweed
---
# OpenSUSE Tumbleweed
**Packages:**
- The OpenXR SDK package can be found in the [hardware:xr](https://build.opensuse.org/package/show/hardware:xr/OpenXR-SDK) [Open Build service](https://en.opensuse.org/openSUSE:Build_Service_FAQ) project. To build [Envision](/docs/fossvr/envision/) profiles, the devel package will also have to be installed.
- The set of [Monado Vulkan Layers](/docs/hardware/) is provided by a [community package](https://build.opensuse.org/package/show/home:Etch-9:xr/monado-vulkan-layers-git).
Any other package in hardware:xr is really outdated and should not be used. Additional information on third-party repositories can be found here: [Additional package repositories (opensuse.org)](https://en.opensuse.org/Additional_package_repositories)
## SteamVR
SteamVR may give you a "SteamVR setup is incomplete" error on OpenSUSE Tumbleweed.
This happens because SteamVR needs to run the `setcap`/`getcap` programs, but can't find them.
To fix it, run these commands:
```sh
sudo zypper install libcap-progs
sudo ln -s /sbin/getcap /usr/bin/
sudo ln -s /sbin/setcap /usr/bin/
```

View File

@@ -0,0 +1,31 @@
---
title: Void Linux
---
# Void Linux
## Envision
The [official Appimage](https://gitlab.com/gabmus/envision#download-envision)
is the easiest way to get Envision working on Void Linux.
Just make sure you have all necessary dependencies installed for building your
desired profile. For Monado, all of the dependencies can be found in the Void
repositories - see the following section [Building Monado](#building-monado)
for the full list.
Envision may warn you about other missing dependencies. They can usually be
found in the Void repositories; you may also need `-devel` for some packages,
for example: `libbsd-devel`
## Building Monado
Monado may appear to build fine but if you are missing some dependencies only
the null compositor will work. To make a successful build make sure you have
the following dependencies installed:
```bash
sudo xbps-install pkg-config python3 wayland-devel glslang vulkan-loader-devel libglvnd-devel eigen libusb-devel eudev-libudev-devel v4l-utils-devel libxcb-devel wayland-devel libX11-devel hidapi-devel libopencv-devel libjpeg-turbo-devel libbluetooth-devel SDL2-devel cJSON-devel gstreamer1-devel gst-plugins-base1-devel libbsd-devel openxr-devel
```
There is a [void-packages PR](https://github.com/void-linux/void-packages/pull/53279) with templates for xrgears, Monado and libsurvive that you can use, however it is easier and recommended to just use Envision to build everything for you.

View File

@@ -6,10 +6,106 @@ title: NixOS
General documentation about VR is provided on the [NixOS Wiki](https://wiki.nixos.org/wiki/VR). General documentation about VR is provided on the [NixOS Wiki](https://wiki.nixos.org/wiki/VR).
Short overview: ## Recommendations
- Monado is supported natively on NixOS using the [`services.monado`](https://search.nixos.org/options?channel=unstable&query=services.monado) since 24.05. The recommended way to set up NixOS for VR is by using [services.monado](https://search.nixos.org/options?channel=unstable&query=services.monado) or [services.wivrn](https://search.nixos.org/options?channel=unstable&query=services.wivrn).
- SteamVR works like it does on other distros for the most part. Though there are some issues regarding the fhsenv-sandbox
- [Asynchronous reprojection does not work](https://github.com/NixOS/nixpkgs/issues/217119) (without a kernel patch) You may also want to install [opencomposite](https://search.nixos.org/packages?channel=unstable&query=opencomposite) (or xrizer, currently only available in [nixpkgs-xr](https://github.com/nix-community/nixpkgs-xr)) and [wlx-overlay-s](https://search.nixos.org/packages?channel=unstable&query=wlx-overlay-s).
- [setcap doesn't work](https://github.com/NixOS/nixpkgs/issues/42117#issuecomment-996731579) (but can be done manually)
- [Envision](../fossvr/envision) is currently being packaged in [this merge request](https://gitlab.com/gabmus/envision/-/merge_requests/11) For OpenComposite or XRizer, you may want to configure `~/.config/openvr/openvrpaths.vrpath` to point to your OpenComposite or XRizer installation. See below for an example using [home-manager](https://github.com/nix-community/home-manager).
- [Asynchronous reprojection does not work](https://github.com/NixOS/nixpkgs/issues/217119) (without a kernel patch)
```nix
xdg.configFile."openvr/openvrpaths.vrpath".text = ''
{
"config" :
[
"~/.local/share/Steam/config"
],
"external_drivers" : null,
"jsonid" : "vrpathreg",
"log" :
[
"~/.local/share/Steam/logs"
],
"runtime" :
[
"${pkgs.opencomposite}/lib/opencomposite"
],
"version" : 1
}
'';
```
If you need to run the latest possible version of any of these pieces of software for whatever reason, above what is packaged in NixOS, you may want to check out Community Overlays at the bottom of this article.
If you need to run a branch of Monado or WiVRn, you can use `.overrideAttrs`, see below for an example of doing this for Coreforge's Monado Pimax fork.
```nix
monado = {
enable = true;
defaultRuntime = true;
highPriority = true;
package = (pkgs.monado.overrideAttrs {
pname = "monado-pimax"; # optional but helps distinguishing between packages
src = pkgs.fetchFromGitLab {
domain = "gitlab.freedesktop.org";
owner = "Coreforge";
repo = "monado";
rev = "f858ee5dd8ca7696bd9219e8278f2671df56fe6e";
hash = "sha256-Si56yvG+oSfyUaPAlF1FgB7WJo8td1xuVxYnkJvbu4o=";
};
});
};
```
## Monado
Monado is supported natively on NixOS using the [services.monado](https://search.nixos.org/options?channel=unstable&query=services.monado) since 24.05.
Make sure to follow the [official guide](https://wiki.nixos.org/wiki/VR#Monado) as it sets the *minimal* requirements needed, then, if those aren't sufficient:
In case of the headset view stuttering, adding `U_PACING_COMP_MIN_TIME_MS = "5";` to `systemd.user.services.monado.environment` could help. Adjust the value as needed.
Similarly, setting the cpu Niceness value to a higher priority manually with `renice -20 -p $(pgrep monado)` could also help. Unfortunately `systemd.user.services.monado.serviceConfig.Nice = -20;` does **not** seem to work.
Once monado is set up the nix way, use `systemctl --user start monado.service` to run it and `systemctl --user stop monado.service` to stop it.
## WiVRn
WiVRn is also supported natively on NixOS using the [services.wivrn](https://search.nixos.org/options?channel=unstable&query=services.wivrn) since 24.05.
As WiVRn is built around Monado, most, if not all, settings for Monado are also available for WiVRn, however you may need to change things like process and option names appropriately.
You can find WiVRn on the official [NixOS wiki](https://wiki.nixos.org/wiki/VR#WiVRn).
### Steam Games
To get Steam games working with monado on NixOS, use the `env PRESSURE_VESSEL_FILESYSTEMS_RW=$XDG_RUNTIME_DIR/monado_comp_ipc %command%` launch options on steam and, if prompted, choose the SteamVR launch option.
## OpenXR apps
All OpenXR apps should work out of the box, assuming you have a default runtime set.
To set a default OpenXR runtime, you can either use `services.monado.defaultRuntime` (the same option is present for WiVRn) or create/modify `~/.config/openxr/1/active_runtime.json`.
## SteamVR
SteamVR works like it does on other distros for the most part. Unfortunately, if it doesn't work out of the box, troubleshooting it on NixOS can be close to impossible due to NixOS's structure and SteamVR's proprietary nature.
[Asynchronous reprojection does not work](https://github.com/NixOS/nixpkgs/issues/217119) without a [kernel patch](https://github.com/Frogging-Family/community-patches/blob/a6a468420c0df18d51342ac6864ecd3f99f7011e/linux61-tkg/cap_sys_nice_begone.mypatch). However, this patch is only applicable for AMD GPUs. There is no way to get SteamVR asynchronous reprojection working on Nvidia.
[setcap doesn't work](https://github.com/NixOS/nixpkgs/issues/42117#issuecomment-996731579) but can be done manually.
## Envision
[Envision](../../fossvr/envision/) has been packaged in [nixos 24.11](https://github.com/NixOS/nixpkgs/blob/nixos-24.11/pkgs/by-name/en/envision/package.nix) but is still in early development and is not recommended. It may also mess with your `monado.service` setup in unexpected ways.
Notably, if you try to use Envision on NixOS, by default, binaries will be dynamically linked, not statically linked, which will cause many issues with VR apps. Also, if you try to use Envision with a dedicated PCVR headset (ie, Monado with an Index, Pimax, etc), asynchronous reprojection will not work without an AMD-only kernel patch, for the same reason as SteamVR.
### Removing Envision
In case you did not follow the above advice, and attempted to use Envision on NixOS, you may want to undo the changes it has made to your home folder, so `services.monado`, `services.wivrn`, `opencomposite` and/or `xrizer` may work correctly.
You will want to delete or modify `~/.config/openxr/1/active_runtime.json`. Note that this is an override for `/etc/xdg/openxr/1/active_runtime.json`, so if you are using `services.monado.defaultRuntime = true` (or the WiVRn equivalent) then you can safely delete this file. Otherwise, you'll want to point it to your Monado installation, which will be somewhere in `/nix/store`.
You will also want to modify `~/.config/openvr/openvrpaths.vrpath`. Remove any runtimes that point to Envision's compiled binaries.
I recommend using [home-manager](https://github.com/nix-community/home-manager) to automate writing these config files, as these paths will change regularly, due to the nature of NixOS.
## Community Overlays
[Nixpkgs-xr](https://github.com/nix-community/nixpkgs-xr) provides overlays for the exisiting nixpkgs. If the mainline packages are broken for you (whether it be compiling or in function) for any reason, adding this, as described in the readme, might help. It also provides XR-related packages considerably before they are available in NixOS.

View File

@@ -12,8 +12,10 @@ If you want an alternative to SteamVR, there are a few options you can use, depe
In either case, here are some related projects you might want to check out: In either case, here are some related projects you might want to check out:
- [OpenComposite](/docs/fossvr/opencomposite/) allows you to run OpenVR games - [xrizer](/docs/fossvr/xrizer/) and [OpenComposite](/docs/fossvr/opencomposite/) allow you to run OpenVR games
- [Envision](/docs/fossvr/envision/) is a GUI to setup and run either Monado or WiVRn - [Envision](/docs/fossvr/envision/) is a GUI to setup and run either Monado or WiVRn
- [Stardust XR](/docs/fossvr/stardust/) is an XR environment to run 2D and (eventually) 3D apps - [Stardust XR](/docs/fossvr/stardust/) is an XR environment to run 2D and (eventually) 3D apps
- [WlxOverlay-S](/docs/fossvr/wlxoverlay-s/) is an overlay to access your desktop from VR + playspace mover
- [Motoc](/docs/fossvr/motoc/) is a tool to calibrate devices from different tracking technologies to work together
- [LÖVR](/docs/fossvr/lovr/) An open source framework for rapidly building immersive 3D experiences. - [LÖVR](/docs/fossvr/lovr/) An open source framework for rapidly building immersive 3D experiences.
- [DEMoCap](/docs/fossvr/democap/) An open source motion capture tool using VR hardware. - [DEMoCap](/docs/fossvr/democap/) An open source motion capture tool using VR hardware.

View File

@@ -1,6 +1,6 @@
--- ---
title: DEMoCap - Drag[en]gine Motion Capture title: DEMoCap - Drag[en]gine Motion Capture
weight: 100 weight: 1100
--- ---
# DEMoCap - Drag[en]gine Motion Capture # DEMoCap - Drag[en]gine Motion Capture

View File

@@ -1,5 +1,5 @@
--- ---
weight: 49 weight: 100
title: Envision title: Envision
--- ---
@@ -13,34 +13,105 @@ 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. 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). 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 >}} {{% hint danger %}}
**Warning** We recommend **against** using Envision if your distro is NixOS. See [our NixOS page](/docs/distros/nixos/#envision) for more info.
{{% /hint %}}
Envision is still considered alpha-quality and highly experimental. You can download the latest AppImage snapshot from [GitLab Pipelines](https://gitlab.com/gabmus/envision/-/pipelines?ref=main&status=success).
{{< /hint >}}
You can download the latest Appimage snapshot from [GitLab Pipelines](https://gitlab.com/gabmus/envision/-/pipelines). If you are on Arch, You can use the [AUR package](https://aur.archlinux.org/packages/envision-xr-git) `envision-xr-git`
**Please note that WiVRn will not work properly by AppImage, if you utilize the AppImages to run WiVRn you must extract the contents of the AppImage and then execute the Envision binary.** ## Getting started
## Getting Started
Upon launching Envision, you will need to select a profile on the bottom of the left side bar. Upon launching Envision, you will need to select a profile on the bottom of the left side bar.
Profiles that are available by default: Profiles that are available by default:
- Lighthouse driver: Proprietary SteamVR Lighthouse driver with top tracking quality. Recommended for Lighthouse HMDs. - Lighthouse driver: Proprietary SteamVR Lighthouse driver with top tracking quality. Recommended for Lighthouse HMDs.
- OpenHMD: Recommended for Oculus Rift & DK series. - OpenHMD: Recommended for Oculus CV1 HMDs.
- Simulated headset: Dummy driver for testing on a flat screen. - Simulated headset: Dummy driver for testing on a flat screen.
- Survive: FOSS Lighthouse driver implementation. - Survive: FOSS Lighthouse driver implementation. Lower track quality and less robust than SteamVR proprietary.
- WMR: Use with Windows Mixed Reality headsets. - WMR: Use with any SLAM based HMD or Windows Mixed Reality headsets. Inlcudes Rift S support.
- WiVRn: Wireless streaming solution for Quest, Pico, HTC standalone HMDs. - WiVRn: Robust wireless streaming solution for all Android based standalone HMDs.
Monado does not have a launcher app, and so after connecting your headset, you will likely see a solid color. This means you can now start your VR title. Monado does not have a launcher app, and so after connecting your headset, you will likely see a solid color. This means you can now start your VR title.
You may want to launch [WlxOverlay-S](/docs/fossvr/wlxoverlay-s/) first and use it to access your desktop and other VR titles. You can even start it automatically alongside the Monado session: just enter `wlx-overlay-s --openxr` into the "Autostart" field of your Envision profile. You may want to launch [WlxOverlay-S](/docs/fossvr/wlxoverlay-s/) first and use it to access your desktop and other VR titles. You can even start it automatically alongside the Monado/WiVRn session, by enabling it in the [Plugins](#plugin-system) menu.
## Plugin system
The plugin system for Envision allows you to launch anything (usually OpenXR overlays) alongside the Monado/WiVRn session.
Open the Plugins window by clicking the kebab menu (three dots) at the top of the Envision window, and clicking "Plugins". Here, you can install overlays like [WlxOverlay-S](/docs/fossvr/wlxoverlay-s/) or [Stardust XR](/docs/fossvr/stardust/) (or a custom plugin &mdash; see below). After installing plugins and toggling them on, once you start a profile, the enabled plugins will start alongside it.
Plugins are the replacement for the "autostart" feature from older versions.
### Adding a custom plugin
The plugins included in the store are just a quick front-end to the latest release AppImages. For everything else, you can create a custom plugin that runs any given executable script or binary.
For example, if you installed WlxOverlay-S from AUR or built it from source, you can disable the original WlxOverlay-S plugin and create a custom plugin to run it:
1. Create a new file `~/.local/bin/wlx-but-newer` (creating the `~/.local/bin` directory if it does not exist).
2. Give it the content:
```bash
#!/usr/bin/env bash
/usr/bin/wlx-overlay-s --openxr
```
3. `chmod +x ~/.local/bin/wlx-but-newer`
4. In Envision, open the Plugins window.
5. Add a custom plugin by clicking the &#x2795; plus button.
6. For the executable file, point it to the script you just created.
7. Name the plugin "Wlx but newer".
8. Save, and then enable the new plugin.
Now starting the profile will also start your custom or AUR version of WlxOverlay-S.
### Plugin troubleshooting
On some systems, a built-in plugin may not launch. This can happen for a number of reasons, but one in particular is so obtuse that it's worth a mention:
Please *uninstall* AppImageLauncher. It intercepts the normal AppImage starting behavior in a dirty way that we can't predict.
You can tell if you are affected if, when you run the WlxOverlay-S AppImage in terminal (whether in plugin form in `~/.local/share/envision/plugins`, or downloaded directly from GitHub), you only get the output `execv error: No such file or directory`.
## Steam Flatpak
To use Envision with the Flatpak version of Steam, you'll need to add the following filesystem overrides to Steam using an application like Flatseal:
- `xdg-data/envision:ro`
- `xdg-run/monado_comp_ipc`
- `xdg-config/openxr:ro`
- `xdg-config/openvr:ro`
Alternatively, you can use the following command:
```shell
flatpak override --filesystem="xdg-data/envision:ro" --filesystem="xdg-run/monado_comp_ipc" --filesystem="xdg-config/openxr:ro" --filesystem="xdg-config/openvr:ro" com.valvesoftware.Steam
```
## Known issues
### The `SteamLinuxRuntime_sniper-arm64` issue
If Envision crashes with this in terminal/logs:
```
thread 'main' panicked at src/util/file_utils.rs:165:9:
Failed to copy /home/USERNAME/.local/share/Steam/steamapps/common/SteamLinuxRuntime_sniper/_v2-entry-point to /home/USERNAME/.local/share/envision/backups/_v2-entry-point.bak: No such file or directory (os error 2)
```
This is because [Valve suddenly renamed a folder](https://steamdb.info/app/1628350/history/?changeid=30126564), and it hasn't been reflected in Envision yet. Anyone who has installed or moved the runtime since 18 July 2025 will run into this, even if they are not using ARM64. For now, please symlink it:
```bash
ln -s ~/.steam/steam/steamapps/common/SteamLinuxRuntime_sniper-arm64 ~/.steam/steam/steamapps/common/SteamLinuxRuntime_sniper
# or if it's located on a different drive e.g. /mnt/steam
ln -s /mnt/steam/steamapps/common/SteamLinuxRuntime_sniper-arm64 /mnt/steam/steamapps/common/SteamLinuxRuntime_sniper
```
## Experimental feature settings ## Experimental feature settings
@@ -48,11 +119,12 @@ The following resources can be entered into your Envision profile repo and branc
### Full body Lighthouse tracking ### Full body Lighthouse tracking
Full body is now provided by default in Monado & OpenComposite through the XR_MNDX_xdev_space OpenXR vendor extension. This allows any tracked "xdev" in Monado to be forwarded as a raw pose without bindings to applications. OpenComposite exposes these as fake Vive FBT trackers for use. Full body is no longer experimental; it is enabled by default in Monado & OpenComposite through the XR_MNDX_xdev_space OpenXR vendor extension. This allows any tracked "xdev" in Monado to be forwarded as a raw pose without bindings to applications. OpenComposite exposes these as fake Vive FBT trackers for use.
### WMR controller tracking ### WMR & Rift S controller tracking
This enables positional tracking for WMR controllers in full 6dof. This enables positional tracking for WMR controllers in full 6dof.
Includes Rift S support & controllers.
For the Envision XR Service settings: For the Envision XR Service settings:
@@ -61,9 +133,27 @@ For the Envision XR Service settings:
### Experimental Pimax support branch ### Experimental Pimax support branch
Major WIP. Allows certain Pimax HMDs to function with Monado. Modest WIP. Allows certain Pimax HMDs to function with Monado. Look Ma, no Pitools!
For the Envision XR Service settings: For the Envision XR Service settings:
- Repo: `https://gitlab.freedesktop.org/Coreforge/monado/` - Repo: `https://gitlab.freedesktop.org/Coreforge/monado/`
- Branch: `pimax` - Branch: `pimax`
Dumped distortion parameters are found here, please follow the instructions in the README.md and consult with LVRA to add your own if missing.
- https://gitlab.freedesktop.org/othello7/pimax-distortion/
### OpenHMD Rift CV1 support
The Oculus Rift CV1 is supported on the OpenHMD profile of Envision.
Start the profile with your headset placed on the floor in clear view of all bases to generate this file as your calibrated playspace origin first run and delete it to reset the configuration.
A calibration of base stations will be saved to disk at `~/.config/openhmd/rift-room-config.json`.
### Fix View
In Steam OpenVR games, the eye's are not calibrated properly, and result in double vision or cross eye effect.
You can add "OXR_PARALLEL_VIEWS=1 %command%" to the launch options to fix this.

View File

@@ -0,0 +1,88 @@
---
weight: 100
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)
### Paru:
[Paru GitHub Repository](https://github.com/Morganamilo/paru)
```bash
sudo pacman -S --needed base-devel
git clone https://aur.archlinux.org/paru.git
cd paru
makepkg -si
```
### 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>
- Select profile: **WMR default**.
![WMR default](/images/EnvisionXR_WMR.png "Envision XR Screen with WMR Envision Default selected")
- Duplicate and adjust settings:
- **XR Service Repo**:
```bash
https://gitlab.freedesktop.org/thaytan/monado
```
- **XR Service Branch**:
```bash
dev-constellation-controller-tracking
```
![WMR adjusted settings](/images/wmr_controller_tracking_envision.png "Repo and Branch adjusted for controller tracking")
- Save and build the profile.
- Plug in the VR headset & turn on the controllers.
- Click **Start** on Monado.
- Once ready, launch a game on Steam.
### Important Notes:
- Do **not** close Envision before starting the game.
- If changing the game:
- Close the game.
- Leave Monado open.
- Start the new game.
- Always turn on the controllers **before** starting Envision.
- Update controller firmware while running Windows. It's necessary for controllers to work in Linux, updating them from Linux is currently impossible.
- Make sure that you **don't factory-reset the controllers** (performed by long-pressing the pairing button when controllers are off). This action restores the factory firmware version.
- If monado fails to start with the following error, you likely need to update the firmware in Mixed Reality Portal:
```
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 title: Valve Index Camera Passthrough
--- ---
@@ -7,11 +7,11 @@ title: Valve Index Camera Passthrough
- [index_camera_passthrough GitHub repository](https://github.com/yshui/index_camera_passthrough) - [index_camera_passthrough GitHub repository](https://github.com/yshui/index_camera_passthrough)
{{< hint danger >}} {{% hint danger %}}
**Warning** **Warning**
index_camera_passthrough is still to be considered alpha-quality and highly experimental. index_camera_passthrough is still to be considered alpha-quality and highly experimental.
{{< /hint >}} {{% /hint %}}
index_camera_passthrough is a dual API (OpenXR and OpenVR) view corrected passthrough overlay for lighthouse tracked devices with not less or more than 2 external cameras. index_camera_passthrough is a dual API (OpenXR and OpenVR) view corrected passthrough overlay for lighthouse tracked devices with not less or more than 2 external cameras.

View File

@@ -1,5 +1,5 @@
--- ---
weight: 100 weight: 800
title: LÖVR 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. 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

@@ -13,6 +13,4 @@ Avoid bumping into walls! Acquire a LÖVR appimage and execute it while providin
lovr-playspace works on any runtime that implements EXTX_OVERLAY. Currently this is limited to Monado-based runtimes. lovr-playspace works on any runtime that implements EXTX_OVERLAY. Currently this is limited to Monado-based runtimes.
WiVRn users: while WiVRn supports EXTX_OVERLAY, it does no frame composition on the server side, so overlay apps can have ghosting issues.
![Preview of the playspace in action.](https://github.com/SpookySkeletons/lovr-playspace/blob/main/assets/preview.png?raw=true) ![Preview of the playspace in action.](https://github.com/SpookySkeletons/lovr-playspace/blob/main/assets/preview.png?raw=true)

View File

@@ -1,5 +1,5 @@
--- ---
weight: 50 weight: 200
title: Monado title: Monado
--- ---
@@ -8,7 +8,7 @@ title: Monado
- [Monado home page](https://monado.freedesktop.org/) - [Monado home page](https://monado.freedesktop.org/)
- [Monado GitLab repository](https://gitlab.freedesktop.org/monado/monado) - [Monado GitLab repository](https://gitlab.freedesktop.org/monado/monado)
![The Legendary Big M](https://gitlab.freedesktop.org/uploads/-/system/project/avatar/2685/monado_icon_medium.png?width=128) ![Monado icon](/images/monado_icon_medium.png "The Legendary Big M")
> Monado is an open source XR runtime delivering immersive experiences such as VR and AR on mobile, PC/desktop, and other devices. Monado aims to be a complete and conformant implementation of the OpenXR API made by Khronos. The project is currently being developed for GNU/Linux and aims to support other operating systems such as Windows in the near future. > Monado is an open source XR runtime delivering immersive experiences such as VR and AR on mobile, PC/desktop, and other devices. Monado aims to be a complete and conformant implementation of the OpenXR API made by Khronos. The project is currently being developed for GNU/Linux and aims to support other operating systems such as Windows in the near future.
@@ -31,8 +31,52 @@ To use Monado as the OpenXR runtime with Steam, or if you're planning to use the
In order to use the SteamVR lighthouse driver in Monado, you just need to set the environment variable `STEAMVR_LH_ENABLE=true`. In order to use the SteamVR lighthouse driver in Monado, you just need to set the environment variable `STEAMVR_LH_ENABLE=true`.
You may want to disable SteamVR automatically starting whenever you turn on your controllers, because this will interfere with trying to use them with Monado.
To do this:
1. Launch SteamVR at least once, to create the `<steam install directory>/config/steamvr.vrsettings` file
- `<steam install directory>` is probably `~/.steam/steam` or `~/.local/share/Steam`
2. Add the following section to the end of the file, before the last closing brace:
"power" : {
"autoLaunchSteamVROnButtonPress" : false
}
- This is a JSON file, so be sure that you add a comma to the end of the previous close brace.
3. Launch SteamVR again to apply the config.
OpenComposite is REQUIRED to operate Monado in conjunction with Steam games. Proton requires a functional OpenVR API to utilize OpenXR at all and Proton itself is required for VR to function as normal wine does not carry any of the needed patches nor does "protonified" wine something like Lutris would provide. OpenComposite is REQUIRED to operate Monado in conjunction with Steam games. Proton requires a functional OpenVR API to utilize OpenXR at all and Proton itself is required for VR to function as normal wine does not carry any of the needed patches nor does "protonified" wine something like Lutris would provide.
### Fix View
In Steam OpenVR games, the eye's are not calibrated properly, and result in double vision or cross eye effect.
You can add "OXR_PARALLEL_VIEWS=1 %command%" to the launch options to fix this.
## Envision ## Envision
[Envision](/docs/fossvr/envision/) provides a fairly low-barrier setup and development of both Monado and OpenComposite on most any modern distro. [Envision](/docs/fossvr/envision/) provides a fairly low-barrier setup and development of both Monado and OpenComposite on most any modern distro.
# Troubleshooting
## [NVIDIA-specific] "NVIDIA: No allowlisted displays found!"
This may be caused by a few different issues:
- NVIDIA driver misnaming the display: If you see a display simply named "NVIDIA" in the output, the NVIDIA driver may be using a fallback name.
This can be worked around by setting the environment variable `XRT_COMPOSITOR_FORCE_NVIDIA_DISPLAY="NVIDIA"` in your Envision profile or otherwise passed to Monado.
- HMD display completely missing from the list: Try unplugging and replugging the power adapter.
## [NVIDIA-Specific] "I'm getting screen tearing inside of my wired VR headset!"
This is caused by having a monitor with VRR enabled, while using a Nvidia GPU. Turning it off in KDE Plasma's display settings will not fix it. You need to add the kernel parameter `nvidia-modeset.conceal_vrr_caps=1` to your boot loader.
ArchWiki has a guide on [how to add kernel parameters](https://wiki.archlinux.org/title/Kernel_parameters#Boot_loader_configuration) in general, but here's an example if you boot with GRUB.
1. Open your terminal and type `sudo nano /etc/default/grub`
1. Add `nvidia-modeset.conceal_vrr_caps=1` inside the parameters of `GRUB_CMDLINE_LINUX_DEFAULT=`
1. Close nano after saving the changes to the text file
1. Update your grub config by typing `sudo grub-mkconfig -o /boot/grub/grub.cfg`
1. Restart your PC
## "vkAcquireXlibDisplayEXT: VK_ERROR_UNKNOWN (0x000058b7a0764a80)"
Try unplugging and replugging the power adapter. If the issue still occurs and you are on a Wayland session, try setting the environment variable `XRT_COMPOSITOR_FORCE_WAYLAND_DIRECT=1`.

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

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

View File

@@ -0,0 +1,22 @@
---
weight: 1000
title: Motoc
---
# Motoc
- [Motoc GitHub repository](https://github.com/galister/motoc)
Motoc is a tool for calibrating devices of different tracking technologies to work together.
With support for both one-shot and continuous modes, Motoc is a complete solution for all your calibration needs.
Example use cases:
- Use a WiVRn HMD with lighthouse trackers
- Use a WMR HMD with lighthouse trackers
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.

View File

@@ -1,5 +1,5 @@
--- ---
weight: 800 weight: 500
title: OpenComposite title: OpenComposite
--- ---
@@ -16,3 +16,61 @@ Please note the OpenVR implementation is incomplete and contains only what's nec
OpenComposite is required for Steam Play games to work in VR regardless of API. Due to the number of confounding factors surrounding setup, sandboxing, and more quirks; we recommend you use Envision to setup and manage your VR. OpenComposite is required for Steam Play games to work in VR regardless of API. Due to the number of confounding factors surrounding setup, sandboxing, and more quirks; we recommend you use Envision to setup and manage your VR.
Contributions to improve the OpenVR to OpenXR mapping are welcome. Contributions to improve the OpenVR to OpenXR mapping are welcome.
## Forcing additional devices as trackers
OpenComposite has the environment variable `OPENCOMPOSITE_TRACKER_SERIALS` to allow using non-tracker devices as trackers in SteamVR games. The expected format is as follows: `serial1;serial2` where each 'serial' is a device serial like `LHR-00000000` or `WiVRn HMD`. You can set this on games by setting this launch option in Steam: `env OPENCOMPOSITE_TRACKER_SERIALS="LHR-00000001;LHR-00000002" %command%`.
To obtain info for lighthouse devices, you may look at the top of the Monado stdout when using steamvr_lh. For other types of devices there are multiple ways of obtaining device serials:
- OpenComposite log file
The OpenComposite log file at `~/.local/state/OpenComposite/logs/opencomposite.log` will log all seen devices when checking for trackers, so you can search for `Checking for generic trackers...` in the log file and look below for `Found usable xdev`.
- motoc
motoc has the `show` subcommand for viewing all device names, serials, and positions relative to the space origin.
## Rebinding controls
> Changing OpenVR bindings is currently a very manual process. This will change in the future.
We're going to be using VRChat as an example, but this should apply to just about any OpenVR game.
First, we locate where the bindings are stored. For Unity games this is always in `GameName_Data/StreamingAssets/SteamVR`.
In the case of VRChat, it would be in `PATH_TO_STEAM/steamapps/common/VRChat/VRChat_Data/StreamingAssets/SteamVR/`
Create a folder next to the game's executable called `OpenComposite`. Make a copy of the bindings file for your controller and place it in the `OpenComposite` folder. Open it up and look for `controller_type`, it's typically near the bottom of the file.
```json
"controller_type" : "knuckles",
```
Rename the copy you've made to the value of `controller_type`.
In my case i've ended up with a copy of the valve index bindings named `knuckles.json` located in `PATH_TO_STEAM/steamapps/common/VRChat/OpenComposite/knuckles.json`.
Going back to the location of the original bindings, open up `actions.json`, which defines every possible action in the game. A popular binding is changing the microphone button to toggle gestures. We'll use this as an example.
in `actions.json`, we can find the name of the desired actions.
```json
"/actions/Global/in/Mic": "Toggle Microphone", //the one we want to replace
"/actions/Global/in/Gesture_Toggle": "Gesture Toggle", //the one we want to replace it with
```
in our copy `knuckles.json`, we can then look for `actions/Global/in/Mic` and replace it with `Gesture_Toggle` like this:
```json
{
"inputs" : {
"click" : {
"output" : "/actions/global/in/Gesture_Toggle"
}
},
"mode" : "button",
"path" : "/user/hand/left/input/a"
},
```
And that's it! OpenComposite will automatically pick up these files as long as they're placed and named correctly, and load them instead of the game's provided ones.

View File

@@ -1,6 +1,6 @@
--- ---
title: Stardust XR title: Stardust XR
weight: 52 weight: 700
--- ---
# Stardust XR # Stardust XR
@@ -9,19 +9,13 @@ weight: 52
- [Github Organization](https://github.com/StardustXR/) - [Github Organization](https://github.com/StardustXR/)
A system UI to make using all your 2D—and eventually OpenXR—apps together intuitive, accessible, and fun by using community-made virtual objects as interfaces. A system UI to make using all your 2D—and eventually OpenXR—apps together intuitive, accessible, and fun by using community-made virtual objects as interfaces.
Stardust provides a 3D environment, where anything from 2D windows (including your existing apps!), to 3D apps built from objects, can exist together in physical space.
![Panels for wayland apps and a CRT panel shell for XR UI.](https://stardustxr.org/img/carousel/panels.png) ![Panels for wayland apps and a CRT panel shell for XR UI.](https://stardustxr.org/img/carousel/panels.png)
## Setup ## Setup
First you need to install and run the server from https://github.com/StardustXR/server. Follow the README. If you have issues getting OpenXR to work, try running https://gitlab.freedesktop.org/monado/demos/xrgears first. For full installation and setup instructions and a deeper dive into setting it up with various linux distributions, visit the [Stardust XR website](https://stardustxr.org/docs/get-started/manual).
After the server is running, you'll need to run some clients. Here's a demo showing some off: Here's a demo showing some off some of what Stardust XR is like:
![A showcase of some different clients](https://stardustxr.org/img/docs/clients/demo_01.mp4) <iframe width="560" height="315" src="https://www.youtube.com/embed/v2WblwbaLaA" frameBorder={0} allow="autoplay; encrypted-media" allowFullScreen style={{maxWidth: '100%', aspectRatio: '16/9'}} ></iframe>
Non-exhaustive list of clients:
- [Flatland](https://github.com/StardustXR/flatland): A panel item UI (XR equivalent of a window manager) so you can interact with your apps using virtual touchscreens. To show Wayland apps, run them with the proper `WAYLAND_DISPLAY` environment variable, in the server's startup script, or use a stardust launcher such as gravity or protostar. Flatland works great in 3DoF or 6DoF with direct touch and pointer interaction.
![A flat panel containing the prism launcher](https://stardustxr.org/img/docs/clients/flatland.png)
- [Gravity](https://github.com/StardustXR/gravity): Command line tool to launch programs inside of stardust at a particular offset in space. This is nestable so you can run a script using gravity, and then gravity inside that script to make a whole composed setup out of thin air! It also ensures that everything launched through it will properly connect to the stardust server, such as wayland clients.
- [Protostar](https://github.com/StardustXR/protostar): Prototype app launcher library/examples. Grab app icons and drop them in space to launch apps where they're dropped.
- [Magnetar](https://github.com/StardustXR/magnetar): Workspaces in 3D. Any object inside the rings will move with them, so you can move a bunch of stuff out of the way temporarily when you don't need it.

View File

@@ -1,18 +1,207 @@
--- ---
weight: 50 weight: 300
title: WiVRn title: WiVRn
--- ---
# WiVRn # WiVRn
- [WiVRn GitHub repository](https://github.com/Meumeu/WiVRn) - [WiVRn GitHub repository](https://github.com/WiVRn/WiVRn)
![The WiVRn mascot](https://github.com/Meumeu/WiVRn/blob/master/images/wivrn.svg?raw=true) ![The WiVRn mascot](https://github.com/WiVRn/WiVRn/blob/master/images/wivrn.svg?raw=true)
> WiVRn lets you run OpenXR applications on a computer and display them on a standalone headset. > WiVRn wirelessly connects a standalone VR headset to a Linux computer. You can then play PCVR games on the headset while processing is done on the computer.
It's very similar in purpose to [Monado](/docs/fossvr/monado/), but for standalone VR headsets. WiVRn is based on [Monado](/docs/fossvr/monado/) and can be used with [xrizer](/docs/fossvr/xrizer/) or [OpenComposite](/docs/fossvr/opencomposite/) to support a majority of titles available for SteamVR. A wide range of standalone headsets are supported.
Current limitations are a fixed bitrate and network protocol streaming only, please ensure your headset is on a stable network or utilize an ethernet adapter to your headset to operate in a quasi-wired mode. ## Installing WiVRn
Should you utilize [Envision](/docs/fossvr/envision/) for WiVRn setup, please ensure your APK and WiVRn server match as closely as possible. Check the WiVRn github [actions](https://github.com/Meumeu/WiVRn/actions) for an APK matching your server build to install to your headset. We recommend using distribution packages when available (see below) or the [WiVRn Flatpak](https://flathub.org/apps/io.github.wivrn.wivrn) when one is unavailable.
### Arch Linux
Packages are available on [AUR](https://wiki.archlinux.org/title/Arch_User_Repository), you will need the following packages:
* `wivrn-server` and `wivrn-dashboard` for base feature + GUI (latest release), or `wivrn-full-git` for development version
* `opencomposite-git` or `xrizer-git` for compatibility with OpenVR and proton
### Fedora
The `wivrn` package will automatically pull `wivrn-dashboard` and `opencomposite` as dependencies, it can be installed with `sudo dnf install wivrn`.
To make use of patented codecs for video encoding like H264/H265, you must [install the codecs from RPMFusion](https://rpmfusion.org/Howto/Multimedia).
### Gentoo Linux
Packages are available on [Guru](https://wiki.gentoo.org/wiki/Project:GURU), you will need `media-libs/wivrn` and `media-libs/opencomposite`.
### NixOS
See [`services.wivrn`](https://search.nixos.org/options?channel=24.11&size=50&sort=relevance&type=packages&query=services.wivrn).
### Flatpak (all distributions)
The [WiVRn Flatpak](https://flathub.org/apps/io.github.wivrn.wivrn) has the latest released version and can be installed with `flatpak install io.github.wivrn.wivrn` or via your software centre application.
For development releases, you can download the `wivrn-flatpak-x86_64` artifact from the GitHub [Build](https://github.com/WiVRn/WiVRn/actions/workflows/Build.yml?query=branch%3Amaster) action.
### Envision (guided build)
You can use [Envision](/docs/fossvr/envision/) to install and launch WiVRn & OpenComposite - this may be the easier route if you use SteamVR Lighthouse-tracked devices or SlimeVR trackers.
## General WiVRn Notes
WiVRn uses Avahi for network discovery. Ensure it is running with the following terminal command:
```bash
systemctl enable --now avahi-daemon
```
If Avahi is not available, `--no-publish-service` bypasses it, and the IP address of the server must be entered into the client.
If a firewall is installed, make sure ports 5353/UDP and 9757/UDP+TCP are open for Avahi and WiVRn respectively.
If using Nvidia proprietary drivers older than 565, install the [Monado Vulkan Layers](https://gitlab.freedesktop.org/monado/utilities/vulkan-layers), otherwise games will crash with a segmentation fault.
For audio in WiVRn, you will need to assign applications, or the system as a whole, to output audio to the virtual output "WiVRn" which is created upon connection between the server and the headset.
## Steam Flatpak
It is possible to use WiVRn Flatpak with Steam Flatpak, though Steam Flatpak isn't generally recommended for VR. If you are using Steam Flatpak, you just need to grant it access to the relevant paths:
```bash
flatpak override --user --filesystem=xdg-config/openxr:ro com.valvesoftware.Steam
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:
```bash
flatpak override --user --env=PRESSURE_VESSEL_FILESYSTEMS_RW=/run/user/1000/wivrn/comp_ipc:/var/lib/flatpak/app/io.github.wivrn.wivrn com.valvesoftware.Steam
```
## Wired WiVRn
You can use WiVRn with a cable instead of Wi-Fi. Use a 5Gbps cable & port at the very least.
- Install adb on your system - usually the package is named `android-tools` or something similar.
- Connect the headset via USB.
- Run `adb devices` in your terminal.
- If you have never authorised USB debugging from this computer before, put the headset on shortly and select 'Always allow USB debugging from this computer'.
Then depending on your installation method, follow these steps:
Using the dashboard:
- The 'Connect via USB' button under the pairing toggle should have a list of devices - select any one to initiate a wired connection.
Using Envision:
- Click the `Start WiVRn Client (Wired)` button in Envision.
Manual steps: See the [README](https://github.com/WiVRn/WiVRn/blob/master/README.md?plain=1#L114).
## WiVRn + SlimeVR trackers
To use SlimeVR trackers through WiVRn, you currently must use the `solarxr-patches` fork of WiVRn. Follow one of the **below options first**, then don't forget to come back and sideload the [solarxr-patches WiVRn APK](https://nightly.link/notpeelz/WiVRn/workflows/Build/solarxr-patches/apk-Standard-Release).
### 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`
- XR Service Branch: `solarxr-patches`
- XR Service CMake Flags: Add `WIVRN_FEATURE_SOLARXR=ON`
Then save and clean build the profile.
### 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, ... }:
{
services.wivrn = {
enable = true;
defaultRuntime = true;
package = pkgs.wivrn.overrideAttrs (old: rec {
version = "[COMMIT HASH HERE]";
src = lib.fetchFromGitHub {
owner = "notpeelz";
repo = "WiVRn";
rev = version;
# This will throw an error when evaluating and give you the correct hash - put that here
hash = "";
};
cmakeFlags = old.cmakeFlags ++ [
(lib.cmakeBool "WIVRN_FEATURE_SOLARXR" true)
];
});
};
}
```
## WiVRn + Lighthouse driver
This section covers using WiVRn 0.19 and newer with any Lighthouse-tracked device (such as Index/Vive controllers, Vive/Tundra trackers, etc.)
You must have SteamVR installed (no need to run it).
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
- Fedora: Install `wivrn-dashboard` via DNF
- Gentoo: Emerge `wivrn` from Guru
Open the WiVRn dashboard and under advanced settings, tick `Enable SteamVR tracked devices support`, then stop/start the server.
Warning: distro-native packages are known to have issues with Flatpak Steam.
### Option B: Build using Envision
Set WiVRn Profile as such:
- XR Service CMake Flags:
- `WIVRN_FEATURE_STEAMVR_LIGHTHOUSE=ON`
- Environment Variables:
- `WIVRN_USE_STEAMVR_LH=1`
- `LH_DISCOVER_WAIT_MS=6000`
Perform a **Clean Build** after changing the CMake flags!
### Option C: NixOS
Override the `wivrn` package and launch wivrn-server with the required environment variables:
```nix
{
services.wivrn = {
enable = true;
defaultRuntime = true;
package = pkgs.wivrn.overrideAttrs (old: {
cmakeFlags = old.cmakeFlags ++ [
(lib.cmakeBool "WIVRN_FEATURE_STEAMVR_LIGHTHOUSE" true)
];
});
monadoEnvironment = {
WIVRN_USE_STEAMVR_LH = "1";
LH_DISCOVER_WAIT_MS = "6000";
};
};
}
```
### 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
Discovery happens only on first connection, so be sure to **have all Lighthouse devices powered on and in line-of-sight of your base stations before connecting the headset!** Once a device is discovered, you may power it off and on at-will.
You can use [Motoc](/docs/fossvr/motoc/) to calibrate the two tracking technologies to work together.
Once video appears in the headset, check `motoc monitor` to make sure your devices all show up.
If one or more devices are missing, try:
- Spread the devices out more; Lighthouse devices get discovered quicker if they're not piled up on each other. Simply strapping them on is good, too.
- Increase `LH_DISCOVER_WAIT_MS`, though this delays the client on first connection.
To re-discover devices, restart WiVRn server.
At this point, your Lighthouse devices will be randomly floating about somewhere. To calibrate them, follow the guide in the [Motoc README](https://github.com/galister/motoc/blob/main/README.md).

View File

@@ -1,5 +1,5 @@
--- ---
weight: 51 weight: 600
title: WlxOverlay-S title: WlxOverlay-S
--- ---
@@ -11,8 +11,22 @@ WlxOverlay-S is a tool that lets users interact with their X11 or Wayland deskto
It supports a vast variety of desktop environments, and comes with a fully customizable keyboard and watch. It supports a vast variety of desktop environments, and comes with a fully customizable keyboard and watch.
WlxOverlay-S also includes a playspace mover and can act like your home environment (void) when launched as the first app in Monado/WiVRn.
Please take a look at the GitHub Readme for a comprehensive guide. Please take a look at the GitHub Readme for a comprehensive guide.
## WayVR
WayVR acts as a bridge between Wayland applications and WlxOverlay-S panels, allowing you to display your applications within a VR environment. Internally, WayVR utilizes Smithay to run a Wayland compositor.
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 ## Support
Reach out in the `wlxoverlay` room in Discord or Matrix. Reach out in the `wlxoverlay` room in Discord or Matrix.

View File

@@ -0,0 +1,102 @@
---
title: WMR Lighthouse (No SteamVR)
weight: 2000
---
# WMR Lighthouse (No SteamVR)
This describes a WMR Lighthouse setup using the `steamvr_lh` driver.
It's different from [WMR Lighthouse](/docs/steamvr/wmr-lighthouse/)
This doesn't use steamvr to re-map the head from some lighthouse tracking device.
Instead it does this natively in monado, so SteamVR is only necessary for the proprietary `steamvr_lh` driver.
For now this is a hacky approach requiring a Monado fork, as Monado's builders don't support the functionality yet:
* https://gitlab.freedesktop.org/monado/monado/-/issues/459
* https://gitlab.freedesktop.org/monado/monado/-/issues/288
This is made for WMR based headsets and has been tested with a Reverb G2 & Vive1 (Vive1 used only for it's 2 watchman dongles needed for the lighthouse controllers).
You can easily adapt this for other headsets in a hacky way, until these issues are closed.
Tested working on Arch Linux with NVIDIA RTX 2060S.
## Setup:
Setup your lighthouse system on SteamVR Windows. The Linux SteamVR version does not work well. On windows: Update everything, pair everything & setup your room boundaries.
Linux Setup:
* install Steam
* Download SteamVR on Steam (try non beta version first)
* Configurations from Windows copied over
### How To Copy Your Windows Steam Configurations To Linux
* mount your windows drive (e.g. at `/mnt`)
* `cp -r "/mnt/Program Files (x86)/Steam/config" ~/.steam/steam/`
### Linux Only Setup
It may be possible to use SteamVR on Linux to setup your room boundaries, pair and update everything. This is untested, but try at least.
You may need playspace moving via Wlx to fine tune the floor if you don't have a Windows install.
## Build
### Manually
Use this fork of Monado
`git clone https://gitlab.freedesktop.org/Zuzka/monado`
(if it's too old for you, try to merge upstream into it and fix it)
Ensure you have all required dependencies installed beforehand (Envision or Monado docs might help)
* `cmake -G Ninja -B build -DCMAKE_INSTALL_PREFIX=/usr -DXRT_BUILD_DRIVER_SURVIVE=0 -DXRT_BUILD_DRIVER_VIVE=0 -DXRT_BUILD_DRIVER_STEAMVR_LIGHTHOUSE=1`
* `sudo ninja -C build install`
Set following environment variable in your e.g. bash_profile:
`export LH_DEVICE_SERIAL="{YourSerial}"`
Replace `{YourSerial}` with [your actual serial](#how-to-find-your-serial)
### Envision
In Envision, set Profile as such:
XR Service Repo:
```
https://gitlab.freedesktop.org/Zuzka/monado.git
```
XR Service CMake Flags:
```
XRT_BUILD_DRIVER_SURVIVE=0
XRT_BUILD_DRIVER_VIVE=0
XRT_BUILD_DRIVER_STEAMVR_LIGHTHOUSE=1
```
Environment Variables:
```
LH_DEVICE_SERIAL="{YourSerial}"
```
Replace `{YourSerial}` with [your actual serial](#how-to-find-your-serial)
Perform a Clean Build after changing the CMake flags!
## How To Find Your Serial
You can find out the actual tracking device serial by:
1. At monado startup look if you see anything starting with `LHR-` e.g. `LHR-FC2E9BC3`. Try a bunch to find the tracker attached to your headset.
2. running this command and trying a bunch: `ls ~/.steam/steam/config/lighthouse/ | tr '[:lower:]' '[:upper:]'`
3. Running `motoc show` in a terminal
## Notes
* Turn on all your trackers & controllers and ensure the light is green, before starting monado.
* If you decide to use another lighthouse tracker mount, you'd need to figure the new tracker offset math in the Monado source code.
* If you use a Vive 1 as controller connection dongles *only connect power and USB*.
* Fork works fine without a Vive 1 for dongles, usb dongles work aswell.
## Useful Resources:
* https://monado.freedesktop.org/getting-started.html#installation-from-source
* https://monado.freedesktop.org/valve-index-setup.html
* check the commits on the fork for more info https://gitlab.freedesktop.org/Zuzka/monado
* vive tracker 3.0 3d printable mount
* model: https://www.printables.com/model/107654-hp-reverb-g2-vive-tracker-mount

View File

@@ -0,0 +1,115 @@
---
weight: 1200
title: xrBinder
---
# xrBinder
- [xrBinder GitLab repository](https://gitlab.com/mittorn/xrBinder)
- [xrBinder example_configs](https://gitlab.com/mittorn/xrBinder/-/tree/master/example_configs)
> xrBinder is an OpenXR binding layer that is designed to manage key bindings for XR applications. It acts as a bridge between input actions and various VR/AR devices, providing a way to map specific hardware inputs to in-game actions. This is particularily useful for when the default mappings of an application may not align with your preferences or specific hardware capabilities.
{{% hint danger %}}
**Warning**
xrBinder is still considered alpha-quality and highly experimental.
Certain bindings may not work when they are hard coded to the application, such as the [Index Controller bindings in VRChat](https://docs.vrchat.com/docs/valve-index#binding-customization-notes) for `Jump`, `Mic Toggle`, `Gesture Toggle` and `Action Menu Left / Right`.
{{% /hint %}}
## Building from source
The project uses submodules to include dependencies such as imgui. They will need to be initialized and updated after cloning the repository.
```bash
git clone https://gitlab.com/mittorn/xrBinder.git
cd xrBinder
git submodule update --init --recursive
```
It is recommended to create a build subdirectory:
```bash
mkdir build
cd build
cmake ..
make
```
Once building is complete, the shared object (.so file) will be located in the `<build>/XR_APILAYER_NOVENDOR_xr_binder` directory, alongside a few binaries and a `manifest.json`.
## Importing as an implicit layer
The [API Layer Interaction documentation for OpenXR](https://github.com/KhronosGroup/OpenXR-SDK-Source/blob/main/specification/loader/api_layer.adoc) states that layers can be either implicit, where they are automatically enabled, and explicit, where they must be manually enabled. We will set this up as an implicit layer for convenience.
This gives us a choice of directories to copy the contents of the `<build>/XR_APILAYER_NOVENDOR_xr_binder` directory to, assuming the environment variable `XR_API_LAYER_PATH` is not set:
```
/usr/local/etc/openxr/1/api_layers/implicit.d
/usr/local/share/openxr/1/api_layers/implicit.d
/etc/openxr/1/api_layers/implicit.d
/usr/share/openxr/1/api_layers/implicit.d
$HOME/.local/share/openxr/1/api_layers/implicit.d
```
If the directory structure does not exist, it must be manually recreated.
Once the files are copied over to the implicit.d directory, make sure to double-check the manifest.json so that it matches the **API Layer Manifest File Format** in the OpenXR API Layer documentation.
### Example manifest.json
```json
{
"file_format_version": "1.0.0",
"api_layer": {
"name": "XR_APILAYER_NOVENDOR_xr_binder",
"disable_environment": "XR_APILAYER_NOVENDOR_xr_binder_DISABLE",
"api_version": "1.0",
"implementation_version": "1",
"description": "Advanced layer for binding actions'",
"library_path": "./libxrBinder_module.so"
}
}
```
## Configuration
xrBinder reads and stores its configuration in `$XDG_CONFIG_HOME/xrBinder` or `$HOME/.config/xrBinder`. If either directories do not exist, they must be manually created.
Copy the [example_configs directory](https://gitlab.com/mittorn/xrBinder/-/tree/master/example_configs) from the xrBinder gitlab repository and place it and its contents in the xrBinder config directory.
Depending on which controllers you use, pick the corresponding .ini template from the `source_templates` subdirectory and append its entire content into the `xrBinder.ini` file.
## Usage
To verify if the module was loaded, check your opencomposite logs or your system logs after you've launched your application. If xrBinder was loaded successfully, these two lines should be present as an example:
```
[2024-10-10 01:49:03.230] CreateOpenXRBackend:154 - Num layers available: 1
[2024-10-10 01:49:03.230] CreateOpenXRBackend:162 - Layer: XR_APILAYER_NOVENDOR_xr_binder
```
If this is the case, we can begin using xrBinder. You may have noticed these two lines in `xrBinder.ini` which come by default:
```bash
# UDP port for ipc
serverPort = 9011
# run ipc_server <port> and gui/cli client if set to bus mode or just client in server
ipcMode = bus
```
In this example, we are expected to run the `ipc_server` binary in the implicit.d directory we copied our files from the build into on port 9011 from the terminal.
```bash
./ipc_server 9011
```
With the server and the application where we want to edit our keybinds running in the Background, we can now use the xrBinder GUI by executing the `client_gui` binary.
![xrBinder GUI](/images/xrbinder_gui.png "Example usage of xrBinder to bind gesture_toggle to the left A button")
- Type in the port to connect to (9011 in our case) and hit Connect
- Under the "Windows" expander, click "Session". This will open a new window in the xrBinder GUI.
- Load the data in each tab of the session window
- Choose the action and source to dictate what action to bind the button to, then hit Apply.
- The binding should be applied immediately. You can hit "Update data" below to refresh the list of bindings that have been applied.

View File

@@ -0,0 +1,58 @@
---
weight: 400
title: xrizer
---
# xrizer
- [xrizer Git repository](https://github.com/Supreeeme/xrizer)
> xrizer is a reimplementation of OpenVR on top of OpenXR. This enables you to run OpenVR games through any OpenXR runtime without running SteamVR.
{{% hint warning %}}
**Application developers**: The OpenVR implementation is incomplete and contains only what's necessary to run most games for compatibility and may omit certain information - if you plan to implement software, utilize the [OpenXR API](https://registry.khronos.org/OpenXR/specs/1.0/html/xrspec.html).
{{% /hint %}}
## Using full body trackers
{{% hint warning %}}
**This branch is a work-in-progress!** Unexpected problems may occur while in use, if you encounter issues while using this fork you should not report it upstream unless reproducible on the `main` branch of 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, maintained by Mr-Zero88](https://github.com/Mr-Zero88-FBT/xrizer/tree/experimental2) with support while using Monado.
To use the above fork, follow these steps:
### Envision
- 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/Mr-Zero88-FBT/xrizer.git`
- OpenVR Compatibility Branch: `experimental2`
- Clean build your profile from the menu at the top right, or use the Ctrl+F5 keybind.
### NixOS
Apply an overlay over nixpkgs to override the xrizer src:
```nix
{
nixpkgs.overlays = [
(final: prev: {
xrizer = prev.xrizer.overrideAttrs {
src = final.fetchFromGitHub {
owner = "Mr-Zero88-FBT";
repo = "xrizer";
# IMPORTANT: Fill the below field with the latest commit hash from https://github.com/Mr-Zero88-FBT/xrizer/commits/experimental2 (click the Copy full SHA button on the right side)
rev = "";
# IMPORTANT: Replace the below field with the correct hash, the error when building with this empty will give you the expected hash.
hash = "";
};
};
})
];
}
```
## Rebinding controls
The process is mostly the same as [OpenComposite](/docs/fossvr/opencomposite/#rebinding-controls), but replace the `OpenComposite` directory name with `xrizer`.

View File

@@ -0,0 +1,12 @@
---
title: More VR Games
weight: 60
---
# Linux VR Adventure Database
- [Website](https://db.vronlinux.org/)
- [Git repository](https://github.com/Respuit/VRDB)
Here, you can find or report information about various VR games running on Linux. This website is a community-driven effort to provide an open database that helps users determine which games are compatible with Linux and potentially discover solutions or workarounds for specific issues.

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

@@ -0,0 +1,122 @@
---
title: Euro Truck Simulator 2 & American Truck Simulator
weight: 50
---
# Euro Truck Simulator 2 & American Truck Simulator
[Euro Truck Simulator 2](https://store.steampowered.com/app/227300/Euro_Truck_Simulator_2/) & [American Truck Simulator](https://store.steampowered.com/app/270880/American_Truck_Simulator/) run fine on their native version. However, the VR experimental branch (oculus branch) is Windows only.
As such, you will need to run them in Proton
In Steam, go into your game properties, and switch to the `oculus - Oculus+OpenVR+OpenXR` beta.
*If necessary, you can use `oculus_previous` or previous `oculus` branches to use an older version of the game for modding compatibility.*
Then, create the following launch option:
```
-openxr
```
## Keybindings
Once in the main menu, you will notice the game starting as it was before and no output in your VR headset. **Press F11 to switch to the VR view**. This actually switches the rendering of the menu from the desktop one to the VR one.
To reset your head position, **press F12 to reset your head to the center**.
## Settings
These commands can be modified in the game configuration file to adjust some specific settings
In Euro Truck Simulator 2, it is in
`<Steam-folder>\userdata\<user-id>\227300\remote\profiles\<user-id>\config.cfg`
In American Truck Simulator, it is in:
`<Steam-folder>\userdata\<user-id>\270880\remote\profiles\<user-id>\config.cfg`
|Commands|Description|
|-------|---------:|
r_manual_stereo_buffer_scale|Manually force the game rendering size past the 200% the game allows. Useful for supersampling. Render multiplied by the inputted value
r_manual_stereo_ui_mipmap |Manually deactivate the UI texture mipmaps. 0 to disable
r_manual_stereo_ui_lod_bias |Manually adjust the UI mipmaps. Values lower than zero increase sharpness. Alternative to disabling the mipmaps entirely
r_manual_stereo_mirror_mode|Choose the desktop mirror mode of the VR view. 1 is the default and shows right and left eye views. 0 Disable the desktop mirror mode. 2 zoom in the center of the eye area. 3 display the content of the left eye. **For streaming/recording the content of your game, I would suggest you use o_oculus_mirror_mode to 1 instead**.
r_manual_stereo_in_menu| Activate or deactivate the 3D menu. 1 is the VR menu.
r_manual_stereo_ui_fov| Manually control the 3D parameters of the plane on which the UI is shown. This one controls the view of all corners.
r_manual_stereo_ui_dist| This one controls the distance of the UI
r_manual_stereo_ui_x|This one controls the UI position on the X axis
r_manual_stereo_ui_y|This one controls the UI position on the Y axis
r_manual_stereo_ui_yaw|This one controls the UI yaw angle
r_manual_stereo_ui_pitch|This one controls the UI pitch angle
r_manual_stereo_ui_static_fov| Manually adjust the view of the static loading screen in 3D mode
r_manual_stereo_ui_radius| Adjust the curve of the UI view. At 0, the default, it is a pure planar view. Otherwise, the value represents a radius of the cylinder the view is displayed on
g_hmd_no_artifical_movement|Disable the window lookout animation when moving your head to 85 degrees. In the game, moving your view towards the window allows you to look manually behind the truck, in the dead corner
g_hmd_reduced_cabin_movement|Allow you to deactivate or decrease the applied cabin movement reduction in VR mode.
r_ipd_scale|Manually adjust your VR headset IPD scale
r_hmd_water_pixels_per_deg|Adjust the water reflection size in game. The game multiplies your VR headset FOV with this value
r_hmd_draw_controllers|Draw VR controllers if connected in-game. Note that the game doesn't natively support VR controllers. It is only useful for visualization, like where your steering wheel or desk is in-game
t_ignore_hmd_timing|Manually adjust the VR headset frame timing
o_openxr_force_symmetrical_fov|Switch from the default asymmetrical FOV to a symmetrical FOV for compatibility purposes
o_openxr_max_hor_fov_override|Reduce the maximum value of FOV in the horizontal direction
o_openxr_max_vert_fov_override|Reduce the maximum value of FOV in the vertical direction
o_openxr_left_left_override|Reduce the maximum render view of the left eye,left side view.
o_openxr_left_right_override|Reduce the maximum render view of the left eye, right side view.
o_openxr_left_top_override|Reduce the maximum render view of the left eye, top side view.
o_openxr_left_bottom_override|Reduce the maximum render view of the left eye, bottom view.
o_openxr_right_left_override|Reduce the maximum render view of the right eye,left side view.
o_openxr_right_right_override|Reduce the maximum render view of the right eye, right side view.
o_openxr_right_top_override|Reduce the maximum render view of the right eye, top side view.
o_openxr_right_bottom_override|Reduce the maximum render view of the right eye, bottom view.
o_openxr_threaded_submit|Disable the game second thread rendering of finished rendered frames
o_openxr_acquire_after_begin|Adjust the amount of time by which rendering can overlap into the next frame
o_openxr_async_wait|Experimental async rendering of the next frame
o_openxr_one_period_ahead|Modify the game timing calculation to show new frames to use time extrapolated by one refresh period ahead.
### Multiplayer
Convoy mode does work with the oculus branch and in VR. The main drawback is that it isn't backward compatible with the other game branches. As such, other players will have to also switch to the same `oculus` branch to connect to you.
Thankfully, desktop users can safely switch to the oculus branch and play as usual, as the game starts in desktop mode by default and only switches to VR mode via **F11**.
### Modding
The popular TruckersMP multiplayer mod [doesn't yet allow users to use the experimental VR mode on their servers](https://forum.truckersmp.com/index.php?/topic/111098-vr-support/).
However, most mods installed from the workshop or locally, in the Proton Prefix Documents folder, should work fine.
Some suggested VR mods would be an edited VR advisor that positions the advisor at a better angle in-game. Made by FatesOfNorns
[ETS2](https://steamcommunity.com/sharedfiles/filedetails/?id=2877653830)
[ATS](https://steamcommunity.com/sharedfiles/filedetails/?id=2562138763)
And on the opposite, for those wanting to play with the advisor UI, this mod helps users doing quick jobs by adding a portable GPS to all quick job trucks that don't have it (and would require the advisor GPS for smooth navigation). Made by Duke Leto
[ETS2](https://steamcommunity.com/sharedfiles/filedetails/?id=2780470092)
[ATS](https://steamcommunity.com/sharedfiles/filedetails/?id=2790522630)
### Notes
The games do have VR support officially added to official builds since version 1.55. However, they don't contain all the latest advancements of the oculus branch for virtual reality compatibility.
> Starting with 1.55 it is possible to enable VR support also in the normal builds however there are a few extra caveats to that:
>
Only OpenXR is supported in those builds.
When the build is not part of a experimental* or oculus* branch on Steam, you will need to specify additional command line parameter -experimental_vr to enable VR support.
The VR features in the normal build are likely to lag behind the VR build. VR improvements happening after release of the normal build will be frequently only included in the VR build until the next major update.
It is possible that some VR changes will be initially too big hacks/too experimental to include in the normal build so they will be only available in the VR build until they can be integrated properly.
To use it, on the stable version of the game :
In Steam, in the game properties, switch the compatibility layer to your preferred version of Proton.
This will force Steam to download and run the Windows version of the game, instead of the native Linux version.
Then, create the following launch option:
```
-openxr
```
#### Settings/Further Reading
[Official SCS Thread about the Virtual Reality experimental support](forum.scssoft.com/viewtopic.php?t=330624)
[American Truck Simulator Virtual Reality thread](https://steamcommunity.com/app/270880/discussions/0/1480982971179620062/)
[Euro Truck Simulator 2 Virtual Reality thread](https://steamcommunity.com/app/227300/discussions/0/648814844007204502/)
[ETS2/ATS VR guide](https://steamcommunity.com/sharedfiles/filedetails/?id=1193990367)

View File

@@ -0,0 +1,34 @@
---
title: Outer Wilds VR Mod
weight: 50
---
# Outer Wilds
[Outer Wilds](https://store.steampowered.com/app/753640/Outer_Wilds/) is a flat screen game by design. However, there is a VR mod available to bring greater immersion into the gameplay.
To play Outer Wilds in VR, you need to install [NomaiVR](https://github.com/Raicuparta/nomai-vr).
It is recommended to use the [Outer Wilds Mod Manager](https://outerwildsmods.com/mod-manager/) to install NomaiVR along with any additional mods you choose.
[XRizer](/docs/fossvr/xrizer/) is the preferred choice for this game if you do not want to use [SteamVR](/docs/steamvr/).
## Performance
Since Outer Wilds was not designed or optimized to be a VR game, performance will be degraded. Expect low framerates in most scenes.
Prepending `OXR_VIEWPORT_SCALE_PERCENTAGE=60` to the game's launch options can greatly benefit frametimes at the cost of resolution, experiment with the percentage amount to find a balance that suits your needs.
## Bugs
While in VR, if you have mods that add extra items in the main menu, they will be rotated at an odd angle as well as any UIs.
### Immediate crash with Proton 9+
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.
### 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)).
Simply create a directory called `xrizer` inside of the Outer Wilds game folder and place the bindings file in `xrizer`. This will override the default bindings and should provide a better gameplay experience.

View File

@@ -5,34 +5,39 @@ title: VR Gear & GPUs
# Hardware # Hardware
{{% hint warning %}}
**NVIDIA WIRED VR ISSUES**: Nvidia proprietary drivers currently have a number of critical issues with DRM lease causing substantial presentation latency for wired VR headsets, or making DRM lease impossible, resulting in discomfort or breakage. Wireless VR through WiVRn is entirely unaffected only direct display type wired headsets. Users with Nvidia GPUs should consider the **Nvidia Wired VR Workaround** footnotes of the GPU table below or switch to AMD for the best experience. For details and to report your experience, see [this forum thread](https://forums.developer.nvidia.com/t/substantial-drm-lease-presentation-latency-resulting-in-unusable-vr-hmd-experience/332386) and [this issue as well](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).
{{% /hint %}}
## GPU support matrix ## GPU support matrix
| Manufacturer | Driver | VR Support | Reprojection Support | Hybrid Graphics Support | Notes | | Manufacturer/ Hardware | Driver | VR Support | Reprojection Support | Hybrid Graphics Support | Notes |
|--------------|---------------------------|----------------|--------------------------------|-------------------------------|----------------------------------------------------------------------------------------------| |--------------|---------------------------|----------------|--------------------------------|-------------------------------|----------------------------------------------------------------------------------------------|
| Nvidia | Nvidia (Closed Source) | Excellent | Excellent | Supported | Requires an implicit [vulkan-layer](https://gitlab.freedesktop.org/monado/utilities/vulkan-layers) to not segfault: [*AUR*](https://aur.archlinux.org/packages/monado-vulkan-layers-git)・[*jammy*](https://gitlab.freedesktop.org/monado/utilities/vulkan-layers/-/jobs/55337949/artifacts/file/incoming/monado-vulkan-layers_0.9.0.29.git.ae43cdc-1~20240221ubuntu2204_amd64.deb)・[*focal*](https://gitlab.freedesktop.org/monado/utilities/vulkan-layers/-/jobs/55337948/artifacts/file/incoming/monado-vulkan-layers_0.9.0.29.git.ae43cdc-1~20240221ubuntu2004_amd64.deb)・[*bullseye*](https://gitlab.freedesktop.org/monado/utilities/vulkan-layers/-/jobs/55337947/artifacts/file/incoming/monado-vulkan-layers_0.9.0.29.git.ae43cdc-1~20240221bpo11_amd64.deb) | | 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 | Nouveau (Open Source) | Functional | Functional | Supported | Lacks DisplayPort audio. | | 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) |
| Intel | i915 (Open Source) | Functional | Unknown | Supported | Relatively old, most likely poor support for newer GPUs. | 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. |
| Intel | Intel/Xe (Open Source) | No wired HMDs | N/A / Unable to drive wired. | Supported | Lacks direct mode implementation in driver, unable to drive wired HMDs. | | AMD RDNA generation GPU | RADV (Open Source) | ✅ Excellent | ✅ Robust (RDNA+) | Supported | Recommended for wired VR. |
| AMD | RADV (Open Source) | Excellent | Robust (RDNA+) | Supported | RDNA generation and up supported with compute tunneling for reprojection. Lower than RDNA are not robust. | | 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 | AMDVLK (Open Source) | Use RADV | Use RADV | N/A | RADV preferred in all circumstances, unable to drive wired HMDs. Do not use. Do not seek support. | | 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 | AMDGPU PRO (Closed Source)| Use RADV | Use RADV | 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 | ✅ 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:** **Notes:**
- **VR Support**: Indicates how well supported the necessary Vulkan API components are. - **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.
- **Reprojection Support**: Describes the support and quality of reprojection features for VR. Poor support indicates that the driver is not able to properly handle Vulkan realtime shaders and it will present as visual stutter. Non-robust solutions will suffer stutter under very high GPU load. - 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/)
- **PRIME/ Hybrid GPU Support**: Compatibility with systems using multiple GPUs for render offload. Monado and all clients must be run on a single select GPU due to memory tiling requirements. - 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).
- For Nvidia proprietary drivers, the [vulkan-layer](https://gitlab.freedesktop.org/monado/utilities/vulkan-layers) is **required** not to crash. - Direct Display Mode doesn't work with HDMI-based HMDs.
- AMD GPUs lower than RDNA generation have functional but less robust reprojection capabilities, expected to be similar to Intel. - Xe driver currently doesn't support Direct Display Mode at all.
- 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) - 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).
- X11 configurations are discouraged but workable, please upgrade your system to Wayland if at all possible. - 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 ## XR Devices
A non-comprehensive table of various VR/XR devices and the drivers that support them. A non-comprehensive table of various VR/XR devices and the drivers that support them. Note that wired headset experiences with Nvidia GPUs will be affected by the [DRM lease presentation latency issue](https://forums.developer.nvidia.com/t/substantial-drm-lease-presentation-latency-resulting-in-unusable-vr-hmd-experience/332386).
| Device | [SteamVR](/docs/steamvr/) | [Monado](/docs/fossvr/monado/) | [WiVRn](/docs/fossvr/wivrn/) | | Device | [SteamVR](/docs/steamvr/) | [Monado](/docs/fossvr/monado/) | [WiVRn](/docs/fossvr/wivrn/) |
|----------------------|:-------------------------------------:|:------------------------------:|:----------------------------:| |----------------------|:-------------------------------------:|:------------------------------:|:----------------------------:|
@@ -40,22 +45,23 @@ A non-comprehensive table of various VR/XR devices and the drivers that support
| Valve Index | ✅ | ✅ | 🚧 (WiVRn PC-PC stream) | | Valve Index | ✅ | ✅ | 🚧 (WiVRn PC-PC stream) |
| HTC Vive | ✅ | ✅ | 🚧 (WiVRn PC-PC stream) | | HTC Vive | ✅ | ✅ | 🚧 (WiVRn PC-PC stream) |
| HTC Vive Pro | ✅ | ✅ | 🚧 (WiVRn PC-PC stream) | | HTC Vive Pro | ✅ | ✅ | 🚧 (WiVRn PC-PC stream) |
| HTC Vive Pro Eye | ✅ (No eyechip) | ✅ (No eyechip) | 🚧 (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) Doesn't work on Nvidia) | -- | | 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 patches](https://gist.githubusercontent.com/TayouVR/af8635a4b8e1d02d038be1be1d221c83/raw/3806a6ff0a03721904164277d7523d43f7ca383c/bigscreenBeyond.patch). Doesn't work on Nvidia) | ✅ (with [kernel patches](https://gist.githubusercontent.com/TayouVR/af8635a4b8e1d02d038be1be1d221c83/raw/3806a6ff0a03721904164277d7523d43f7ca383c/bigscreenBeyond.patch). Doesn't work on Nvidia) | -- | | Bigscreen Beyond | ✅ (with kernel patch for [<= 6.14](https://gist.github.com/galister/08cddf10ac18929647d5fb6308df3e4b/raw/0f6417b6cb069f19d6c28b730499c07de06ec413/combined-bsb-6-10.patch) or with two patches for >= 6.15 [1](bigscreen-beyond-kernel-6.17-1.patch) [2](bigscreen-beyond-kernel-6.17-2.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) or with two patches for >= 6.15 [1](bigscreen-beyond-kernel-6.17-1.patch) [2](bigscreen-beyond-kernel-6.17-2.patch), AMD GPUs or Nvidia driver 580+ open kernel modules.) | -- |
| Somnium VR1 | ? | ? | ? | | Bigscreen Beyond 2/e | ✅ (with kernel patch for [<= 6.14](https://gist.github.com/galister/08cddf10ac18929647d5fb6308df3e4b/raw/0f6417b6cb069f19d6c28b730499c07de06ec413/combined-bsb-6-10.patch) or with two patches for >= 6.15 [1](bigscreen-beyond-kernel-6.17-1.patch) [2](bigscreen-beyond-kernel-6.17-2.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) or with two patches for >= 6.15 [1](bigscreen-beyond-kernel-6.17-1.patch) [2](bigscreen-beyond-kernel-6.17-2.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 | ? | ? | ? | | VRgineers XTAL | ? | ? | ? |
| StarVR One | ? | ? | ? | | StarVR One | ? | ? | ? |
| Varjo VR-1 | ? | ? | ? | | Varjo VR-1 | ? | ? | ? |
| Varjo VR-2 | ? | ? | ? | | Varjo VR-2 | ? | ? | ? |
| Varjo VR-3 | ? | ? | ? | | Varjo VR-3 | ? | ? | ? |
| Pimax 4K | ❌ (Planned) | 🚧 (WIP, with [kernel patches](https://gist.githubusercontent.com/TayouVR/60e3ee5f95375827a66a8898bea02bec/raw/c85135c8d8821ebb2fa85629d837a41de57e12ef/pimax.patch)) | 🚧 (WiVRn PC-PC stream) | | Pimax 4K | ❌ (Planned) | 🚧 (WIP, with [kernel patches](https://gist.githubusercontent.com/TayouVR/60e3ee5f95375827a66a8898bea02bec/raw/c85135c8d8821ebb2fa85629d837a41de57e12ef/pimax.patch), Nvidia requires patching EDID.) | 🚧 (WiVRn PC-PC stream) |
| Pimax 5K Plus | ❌ (Planned) | ✅ (WIP, with [kernel patches](https://gist.githubusercontent.com/TayouVR/60e3ee5f95375827a66a8898bea02bec/raw/c85135c8d8821ebb2fa85629d837a41de57e12ef/pimax.patch)) | 🚧 (WiVRn PC-PC stream) | | Pimax 5K Plus | ❌ (Planned) | ✅ (WIP, with [kernel patches](https://gist.githubusercontent.com/TayouVR/60e3ee5f95375827a66a8898bea02bec/raw/c85135c8d8821ebb2fa85629d837a41de57e12ef/pimax.patch), Nvidia requires patching EDID.) | 🚧 (WiVRn PC-PC stream) |
| Pimax 5K XR | ❌ (Planned) | ✅ (WIP, with [kernel patches](https://gist.githubusercontent.com/TayouVR/60e3ee5f95375827a66a8898bea02bec/raw/c85135c8d8821ebb2fa85629d837a41de57e12ef/pimax.patch)) | 🚧 (WiVRn PC-PC stream) | | Pimax 5K XR | ❌ (Planned) | ✅ (WIP, with [kernel patches](https://gist.githubusercontent.com/TayouVR/60e3ee5f95375827a66a8898bea02bec/raw/c85135c8d8821ebb2fa85629d837a41de57e12ef/pimax.patch), Nvidia requires patching EDID.) | 🚧 (WiVRn PC-PC stream) |
| Pimax 5K SUPER | ❌ (Planned) | ✅ (WIP, with [kernel patches](https://gist.githubusercontent.com/TayouVR/60e3ee5f95375827a66a8898bea02bec/raw/c85135c8d8821ebb2fa85629d837a41de57e12ef/pimax.patch)) | 🚧 (WiVRn PC-PC stream) | | Pimax 5K SUPER | ❌ (Planned) | ✅ (WIP, with [kernel patches](https://gist.githubusercontent.com/TayouVR/60e3ee5f95375827a66a8898bea02bec/raw/c85135c8d8821ebb2fa85629d837a41de57e12ef/pimax.patch), Nvidia requires patching EDID.) | 🚧 (WiVRn PC-PC stream) |
| Pimax 8K | ❌ (Planned) | ✅ (WIP, with [kernel patches](https://gist.githubusercontent.com/TayouVR/60e3ee5f95375827a66a8898bea02bec/raw/c85135c8d8821ebb2fa85629d837a41de57e12ef/pimax.patch)) | 🚧 (WiVRn PC-PC stream) | | Pimax 8K | ❌ (Planned) | ✅ (WIP, with [kernel patches](https://gist.githubusercontent.com/TayouVR/60e3ee5f95375827a66a8898bea02bec/raw/c85135c8d8821ebb2fa85629d837a41de57e12ef/pimax.patch), Nvidia requires patching EDID.) | 🚧 (WiVRn PC-PC stream) |
| Pimax Vision 8K X | ❌ (Planned) | ✅ (WIP, with [kernel patches](https://gist.githubusercontent.com/TayouVR/60e3ee5f95375827a66a8898bea02bec/raw/c85135c8d8821ebb2fa85629d837a41de57e12ef/pimax.patch)) | 🚧 (WiVRn PC-PC stream) | | Pimax Vision 8K X | ❌ (Planned) | ✅ (WIP, with [kernel patches](https://gist.githubusercontent.com/TayouVR/60e3ee5f95375827a66a8898bea02bec/raw/c85135c8d8821ebb2fa85629d837a41de57e12ef/pimax.patch).) | 🚧 (WiVRn PC-PC stream) |
| Pimax Vision 8K PLUS | ❌ (Planned) | ✅ (WIP, with [kernel patches](https://gist.githubusercontent.com/TayouVR/60e3ee5f95375827a66a8898bea02bec/raw/c85135c8d8821ebb2fa85629d837a41de57e12ef/pimax.patch)) | 🚧 (WiVRn PC-PC stream) | | Pimax Vision 8K PLUS | ❌ (Planned) | ✅ (WIP, with [kernel patches](https://gist.githubusercontent.com/TayouVR/60e3ee5f95375827a66a8898bea02bec/raw/c85135c8d8821ebb2fa85629d837a41de57e12ef/pimax.patch), Nvidia requires patching EDID.) | 🚧 (WiVRn PC-PC stream) |
| Lenovo Explorer | ✅ (Monado SteamVR plugin) | ✅ (experimental 6dof controllers) | 🚧 (WiVRn PC-PC stream) | | Lenovo Explorer | ✅ (Monado SteamVR plugin) | ✅ (experimental 6dof controllers) | 🚧 (WiVRn PC-PC stream) |
| Acer AH101 | ✅ (Monado SteamVR plugin) | ✅ (experimental 6dof controllers) | 🚧 (WiVRn PC-PC stream) | | Acer AH101 | ✅ (Monado SteamVR plugin) | ✅ (experimental 6dof controllers) | 🚧 (WiVRn PC-PC stream) |
| Dell Visor | ✅ (Monado SteamVR plugin) | ✅ (experimental 6dof controllers) | 🚧 (WiVRn PC-PC stream) | | Dell Visor | ✅ (Monado SteamVR plugin) | ✅ (experimental 6dof controllers) | 🚧 (WiVRn PC-PC stream) |
@@ -63,10 +69,10 @@ A non-comprehensive table of various VR/XR devices and the drivers that support
| Samsung Odyssey | ✅ (Monado SteamVR plugin) | ✅ (experimental 6dof controllers) | 🚧 (WiVRn PC-PC stream) | | Samsung Odyssey | ✅ (Monado SteamVR plugin) | ✅ (experimental 6dof controllers) | 🚧 (WiVRn PC-PC stream) |
| Asus HC102 | ✅ (Monado SteamVR plugin) | ✅ (experimental 6dof controllers) | 🚧 (WiVRn PC-PC stream) | | Asus HC102 | ✅ (Monado SteamVR plugin) | ✅ (experimental 6dof controllers) | 🚧 (WiVRn PC-PC stream) |
| Samsung Odyssey+ | ✅ (Monado SteamVR plugin) | ✅ (experimental 6dof controllers) | 🚧 (WiVRn PC-PC stream) | | Samsung Odyssey+ | ✅ (Monado SteamVR plugin) | ✅ (experimental 6dof controllers) | 🚧 (WiVRn PC-PC stream) |
| HP Reverb | ✅ (Monado SteamVR plugin) | ✅ (experimental 6dof controllers) | 🚧 (WiVRn PC-PC stream) | | HP Reverb | ✅ (Monado SteamVR plugin, 60Hz only mode on Nvidia) | ✅ (experimental 6dof controllers, 60Hz only mode on Nvidia) | 🚧 (WiVRn PC-PC stream) |
| Acer OJO 500 | ✅ (Monado SteamVR plugin) | ✅ (experimental 6dof controllers) | 🚧 (WiVRn PC-PC stream) | | Acer OJO 500 | ✅ (Monado SteamVR plugin) | ✅ (experimental 6dof controllers) | 🚧 (WiVRn PC-PC stream) |
| HP Reverb G2 | ✅ (Monado SteamVR plugin) | ✅ (experimental 6dof controllers) | 🚧 (WiVRn PC-PC stream) | | HP Reverb G2 | ✅ (Monado SteamVR plugin) | ✅ (experimental 6dof controllers) | 🚧 (WiVRn PC-PC stream) |
| Oculus Rift CV1 | 🚧 (Monado SteamVR plugin) | 🚧 (ancient openhmd based support) | 🚧 (WiVRn PC-PC stream) | | Oculus Rift CV1 | (OpenHMD SteamVR plugin) | (OpenHMD plugin based support) | 🚧 (WiVRn PC-PC stream) |
| Oculus Rift S | ✅ (Monado SteamVR plugin) | ✅ (experimental 6dof controllers) | 🚧 (WiVRn PC-PC stream) | | Oculus Rift S | ✅ (Monado SteamVR plugin) | ✅ (experimental 6dof controllers) | 🚧 (WiVRn PC-PC stream) |
| **Standalone** | | | | | **Standalone** | | | |
| Quest | ✅ (via [ALVR](/docs/steamvr/alvr/)) | -- | ✅ | | Quest | ✅ (via [ALVR](/docs/steamvr/alvr/)) | -- | ✅ |
@@ -74,35 +80,51 @@ A non-comprehensive table of various VR/XR devices and the drivers that support
| Quest Pro | ✅ (via [ALVR](/docs/steamvr/alvr/)) | -- | ✅ | | Quest Pro | ✅ (via [ALVR](/docs/steamvr/alvr/)) | -- | ✅ |
| Quest 3 | ✅ (via [ALVR](/docs/steamvr/alvr/)) | -- | ✅ | | Quest 3 | ✅ (via [ALVR](/docs/steamvr/alvr/)) | -- | ✅ |
| Pico 4 | ✅ (via [ALVR](/docs/steamvr/alvr/)) | -- | ✅ | | Pico 4 | ✅ (via [ALVR](/docs/steamvr/alvr/)) | -- | ✅ |
| Pico Neo 3 | ✅ (via [ALVR](/docs/steamvr/alvr/)) | -- | ✅ | | Pico Neo 3 | ✅ (via [ALVR](/docs/steamvr/alvr/)) | -- | ✅ |
| HTC Vive Focus 3 | ✅ (via [ALVR](/docs/steamvr/alvr/)) | -- | ✅ | | HTC Vive Focus 3 | ✅ (via [ALVR](/docs/steamvr/alvr/)) | -- | ✅ |
| HTC Vive XR Elite | ✅ (via [ALVR](/docs/steamvr/alvr/)) | -- | ✅ | | HTC Vive XR Elite | ✅ (via [ALVR](/docs/steamvr/alvr/)) | -- | ✅ |
| Lynx R1 | ✅ (via [ALVR](/docs/steamvr/alvr/)) | -- | ✅ | | Lynx R1 | ✅ (via [ALVR](/docs/steamvr/alvr/)) | -- | ✅ |
| Apple Vision Pro | ✅ (via [ALVR](/docs/steamvr/alvr/)) | -- | ❌ | | Apple Vision Pro | ✅ (via [ALVR](/docs/steamvr/alvr/)) | -- | ❌ |
| **Trackers** | | | | | **Trackers** | | | |
| Vive/Tundra trackers | ✅ | ✅ | 🚧 (WIP) | | Vive/Tundra trackers | ✅ (native or spacecal) | ✅ (native or motoc) | (motoc) |
| SlimeVR trackers | ✅ | ✅ (OSC, driver WIP) | 🚧 (WIP) | | SlimeVR trackers | ✅ | ✅ (OSC + experimental driver) | ✅ |
| Project Babble | ✅ (oscavmgr) | ✅ (oscavmgr) | ✅ (oscavmgr) | | Project Babble | ✅ ([OscAvMgr](https://github.com/galister/oscavmgr) or [VRCFT.Avalonia](https://github.com/dfgHiatus/VRCFaceTracking.Avalonia)) | ✅ ([OscAvMgr](https://github.com/galister/oscavmgr) or [VRCFT.Avalonia](https://github.com/dfgHiatus/VRCFaceTracking.Avalonia)) | ✅ ([OscAvMgr](https://github.com/galister/oscavmgr) or [VRCFT.Avalonia](https://github.com/dfgHiatus/VRCFaceTracking.Avalonia)) |
| Eyetrack VR | ✅ | ✅ | ✅ | | Eyetrack VR | ✅ ([OscAvMgr](https://github.com/galister/oscavmgr) or [VRCFT.Avalonia](https://github.com/dfgHiatus/VRCFaceTracking.Avalonia)) | ✅ ([OscAvMgr](https://github.com/galister/oscavmgr) or [VRCFT.Avalonia](https://github.com/dfgHiatus/VRCFaceTracking.Avalonia)) | ✅ ([OscAvMgr](https://github.com/galister/oscavmgr) or [VRCFT.Avalonia](https://github.com/dfgHiatus/VRCFaceTracking.Avalonia)) |
| Mercury Handtrack | 🚧 (Monado SteamVR plugin, win only) | ✅ (survive driver only) | ❌ | | Mercury Handtrack | ❌ | ✅ (no steamvr_lh driver support) | ❌ |
| Ultraleap v1 | ? | ✅ (with `openxr-layer-ultraleap`) | ? |
| Lucid VR Gloves | ? | ✅ (survive driver only) | ❌ | | Lucid VR Gloves | ? | ✅ (survive driver only) | ❌ |
| Kinect FBT | ✅ | ✅ (experimental) | 🚧 |
| Standable FBT | ❌ | ❌ | ❌ | | Standable FBT | ❌ | ❌ | ❌ |
| Razer Hydra | ✅ (Monado SteamVR plugin) | ✅ | ❌ |
## Hardware note ## Hardware note
WiVRn PC XR to WiVRn PC client streaming remains mainly for debug use. - **Nvidia GPU users**: Due to the DRM lease presentation latency issue, wired VR headsets will experience a delayed viewport effect on Nvidia GPUs. This affects all driver versions since 550. Consider these workarounds:
- Use WiVRn or ALVR with standalone headsets for wireless VR (recommended)
- Try setting `U_PACING_COMP_MIN_TIME_MS=10` as an environment variable to slightly reduce the effect
- Consider switching to AMD GPUs for the best wired VR experience
- Monitor the [bug report thread](https://forums.developer.nvidia.com/t/substantial-drm-lease-presentation-latency-resulting-in-unusable-vr-hmd-experience/332386) for updates
- **AMD GPU users**: If using WiVRn, make sure you are using the RADV Vulkan driver. A green and broken video stream in WiVRn is a telltale sign that you're using the incompatible AMDVLK driver. Remove AMDVLK and install RADV as AMDVLK is known to be difficult to opt out of as a driver when installed on system.
- WiVRn PC XR to WiVRn PC client streaming remains mainly for debug use.
- **Vive Pro** microphones should be set to use 44.1khz sample rates as feeding in 48khz raises the pitch of the audio.
- **Vive Pro** creates HDMI Output Source after startup of SteamVR/Monado/etc. Use it instead of Vive Pro USB Audio Source, since the audio might appear distorted.
- **Valve Index** audio output should be set to 48khz or no audio will output.
- **Valve Index** first presentation to system each fresh boot or first runtime plug in will yield no display, resulting in VR refusing to start. Replug the barrel connector that provides power to the HMD to reset it to make it available.
- **Valve Index** may also exhibit unexpected activity with its microphone. If the microphone doesn't transmit at all during regular VR use, consider changing the DisplayPort slot the headset is currently plugged into. Also, as a reminder, the Index mic only works if the headset is actively being used to display something.
- **Vive Pro Eye** HMD functional, eye tracking functionality with [ReVision](https://github.com/Blue-Doggo/ReVision)
- **Pimax** initialization code WIP. Distortion matrix dump work in progress.
- 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).
- **Beyond 2e users**: to use eyetracking on your headset please follow the guide in the [Bigscreen Beyond](/docs/other/bigscreen-beyond/#bigscreen-beyond-2e-eyetracking-via-baballonia-under-linux) page
### Desktop hangs on start of SteamVR or Monado
Vive Pro microphones should be set to use 44.1khz sample rates as feeding in 48khz raises the pitch of the audio. 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).
Vive Pro creates HDMI Output Source after startup of SteamVR/Monado/etc. Use it instead of Vive Pro USB Audio Source, since the audio might appear distorted. 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).
Valve index audio output should be set to 48khz or no audio will output.
Vive Pro Eye HMD functional, eyechip WIP.
Pimax initialization code WIP. Distortion matrix dump work in progress.
Eyetrack VR and Project Babble will both be implemented through [oscavmgr](https://github.com/galister/oscavmgr) to emit proper unified flexes over OSC.
## Applying a kernel patch (for Vive Pro 2, Bigscreen Beyond, Pimax) ## Applying a kernel patch (for Vive Pro 2, Bigscreen Beyond, Pimax)
@@ -124,6 +146,38 @@ source=(
4. close `PKGBUILD`. (may not be necessary but i ran `updpkgsums`) -> `makepkg -s --skippgpcheck` (i didn't feel like fixing a pgp error) 4. close `PKGBUILD`. (may not be necessary but i ran `updpkgsums`) -> `makepkg -s --skippgpcheck` (i didn't feel like fixing a pgp error)
5. then section 4 of https://wiki.archlinux.org/title/Kernel/Arch_build_system#Installing and restart 5. then section 4 of https://wiki.archlinux.org/title/Kernel/Arch_build_system#Installing and restart
### Fedora
1. Prepare the kernel
```sh
git clone https://src.fedoraproject.org/rpms/kernel.git
cd kernel
# replace 41 with your fedora version
git switch f41
# install the build dependencies for the kernel, if you haven't already
sudo dnf builddep kernel.spec
# name this the 'bsb' build
sed -i 's/# define buildid .*/%define buildid .bsb/g' kernel.spec
```
2. Replace `linux-kernel-test.patch` with the actual patch file downloaded from the table above
3. Build RPMs:
```sh
fedpkg local
```
4. Install kernel:
```sh
sudo dnf install --nogpgcheck ./x86_64/kernel-*.rpm
```
5. Reboot and check that using `uname -a` that the `bsb` kernel is running.
Official guide: [Building a Kernel from the Fedora dist-git](https://docs.fedoraproject.org/en-US/quick-docs/kernel-build-custom/#_building_a_kernel_from_the_fedora_dist_git)
### NixOS ### NixOS
1. download the patch(es) 1. download the patch(es)

View File

@@ -0,0 +1,234 @@
From f8b7d3bad1225150c8909df309f8d10c365fdf3b Mon Sep 17 00:00:00 2001
From: Yaroslav Bolyukin <iam@lach.pw>
Date: Sun, 30 Oct 2022 18:59:15 +0100
Subject: [PATCH 1/2] drm/edid: parse DRM VESA dsc bpp target
As per DisplayID v2.0 Errata E9 spec "DSC pass-through timing support"
VESA vendor-specific data block may contain target DSC bits per pixel
fields
Signed-off-by: Yaroslav Bolyukin <iam@lach.pw>
Signed-off-by: Lach <iam@lach.pw>
---
drivers/gpu/drm/drm_displayid_internal.h | 8 ++++
drivers/gpu/drm/drm_edid.c | 61 ++++++++++++++++--------
include/drm/drm_connector.h | 6 +++
include/drm/drm_modes.h | 10 ++++
4 files changed, 64 insertions(+), 21 deletions(-)
diff --git a/drivers/gpu/drm/drm_displayid_internal.h b/drivers/gpu/drm/drm_displayid_internal.h
index 957dd0619f5c..d008a98994bb 100644
--- a/drivers/gpu/drm/drm_displayid_internal.h
+++ b/drivers/gpu/drm/drm_displayid_internal.h
@@ -97,6 +97,10 @@ struct displayid_header {
u8 ext_count;
} __packed;
+#define DISPLAYID_BLOCK_REV GENMASK(2, 0)
+#define DISPLAYID_BLOCK_PASSTHROUGH_TIMINGS_SUPPORT BIT(3)
+#define DISPLAYID_BLOCK_DESCRIPTOR_PAYLOAD_BYTES GENMASK(6, 4)
+
struct displayid_block {
u8 tag;
u8 rev;
@@ -144,12 +148,16 @@ struct displayid_formula_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/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c
index e2e85345aa9a..6e42e55b41f9 100644
--- a/drivers/gpu/drm/drm_edid.c
+++ b/drivers/gpu/drm/drm_edid.c
@@ -6524,8 +6524,8 @@ static void drm_get_monitor_range(struct drm_connector *connector,
info->monitor_range.min_vfreq, info->monitor_range.max_vfreq);
}
-static void drm_parse_vesa_mso_data(struct drm_connector *connector,
- const struct displayid_block *block)
+static void drm_parse_vesa_specific_block(struct drm_connector *connector,
+ const struct displayid_block *block)
{
struct displayid_vesa_vendor_specific_block *vesa =
(struct displayid_vesa_vendor_specific_block *)block;
@@ -6541,7 +6541,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);
@@ -6564,28 +6564,40 @@ 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;
- 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;
+ 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;
+ }
}
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);
+
+ 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) << 4 |
+ FIELD_GET(DISPLAYID_VESA_DSC_BPP_FRACT, vesa->dsc_bpp_fract);
+
+ drm_dbg_kms(connector->dev,
+ "[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,
- const struct drm_edid *drm_edid)
+static void drm_update_vesa_specific_block(struct drm_connector *connector,
+ const struct drm_edid *drm_edid)
{
const struct displayid_block *block;
struct displayid_iter iter;
@@ -6593,7 +6605,7 @@ static void drm_update_mso(struct drm_connector *connector,
displayid_iter_edid_begin(drm_edid, &iter);
displayid_iter_for_each(block, &iter) {
if (block->tag == DATA_BLOCK_2_VENDOR_SPECIFIC)
- drm_parse_vesa_mso_data(connector, block);
+ drm_parse_vesa_specific_block(connector, block);
}
displayid_iter_end(&iter);
}
@@ -6630,6 +6642,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;
@@ -6753,7 +6766,7 @@ static void update_display_info(struct drm_connector *connector,
if (edid->features & DRM_EDID_FEATURE_RGB_YCRCB422)
info->color_formats |= DRM_COLOR_FORMAT_YCBCR422;
- drm_update_mso(connector, drm_edid);
+ drm_update_vesa_specific_block(connector, drm_edid);
out:
if (drm_edid_has_internal_quirk(connector, EDID_QUIRK_NON_DESKTOP)) {
@@ -6784,7 +6797,8 @@ static void update_display_info(struct drm_connector *connector,
static struct drm_display_mode *drm_mode_displayid_detailed(struct drm_device *dev,
const struct displayid_detailed_timings_1 *timings,
- bool type_7)
+ bool type_7,
+ int rev)
{
struct drm_display_mode *mode;
unsigned int pixel_clock = (timings->pixel_clock[0] |
@@ -6805,6 +6819,10 @@ static struct drm_display_mode *drm_mode_displayid_detailed(struct drm_device *d
if (!mode)
return NULL;
+ if (type_7 && FIELD_GET(DISPLAYID_BLOCK_REV, rev) >= 1)
+ mode->dsc_passthrough_timings_support =
+ !!(rev & DISPLAYID_BLOCK_PASSTHROUGH_TIMINGS_SUPPORT);
+
/* resolution is kHz for type VII, and 10 kHz for type I */
mode->clock = type_7 ? pixel_clock : pixel_clock * 10;
mode->hdisplay = hactive;
@@ -6846,7 +6864,7 @@ static int add_displayid_detailed_1_modes(struct drm_connector *connector,
for (i = 0; i < num_timings; i++) {
struct displayid_detailed_timings_1 *timings = &det->timings[i];
- newmode = drm_mode_displayid_detailed(connector->dev, timings, type_7);
+ newmode = drm_mode_displayid_detailed(connector->dev, timings, type_7, block->rev);
if (!newmode)
continue;
@@ -6893,7 +6911,8 @@ static int add_displayid_formula_modes(struct drm_connector *connector,
struct drm_display_mode *newmode;
int num_modes = 0;
bool type_10 = block->tag == DATA_BLOCK_2_TYPE_10_FORMULA_TIMING;
- int timing_size = 6 + ((formula_block->base.rev & 0x70) >> 4);
+ int timing_size = 6 +
+ FIELD_GET(DISPLAYID_BLOCK_DESCRIPTOR_PAYLOAD_BYTES, formula_block->base.rev);
/* extended blocks are not supported yet */
if (timing_size != 6)
diff --git a/include/drm/drm_connector.h b/include/drm/drm_connector.h
index 8f34f4b8183d..01640fcf7464 100644
--- a/include/drm/drm_connector.h
+++ b/include/drm/drm_connector.h
@@ -837,6 +837,12 @@ struct drm_display_info {
*/
u32 max_dsc_bpp;
+ /**
+ * @dp_dsc_bpp: DP Display-Stream-Compression (DSC) timing's target
+ * DSC 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_modes.h b/include/drm/drm_modes.h
index b9bb92e4b029..312e5c03af9a 100644
--- a/include/drm/drm_modes.h
+++ b/include/drm/drm_modes.h
@@ -417,6 +417,16 @@ struct drm_display_mode {
*/
enum hdmi_picture_aspect picture_aspect_ratio;
+ /**
+ * @dsc_passthrough_timing_support:
+ *
+ * Indicates whether this mode timing descriptor is supported
+ * with specific target DSC bits per pixel only.
+ *
+ * VESA vendor-specific data block shall exist with the relevant
+ * DSC bits per pixel declaration when this flag is set to true.
+ */
+ bool dsc_passthrough_timings_support;
};
/**
--
2.51.0

View File

@@ -0,0 +1,46 @@
From 4374e685d46122ac59ccdd201c3be785e7f3558d Mon Sep 17 00:00:00 2001
From: Yaroslav Bolyukin <iam@lach.pw>
Date: Sun, 30 Oct 2022 19:04:26 +0100
Subject: [PATCH 2/2] 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>
Signed-off-by: Lach <iam@lach.pw>
---
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
index ef026143dc1c..d068c6db91ce 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
@@ -6430,6 +6430,11 @@ static void fill_stream_properties_from_drm_display_mode(
stream->output_color_space = get_output_color_space(timing_out, connector_state);
stream->content_type = get_output_content_type(connector_state);
+
+ /* DisplayID Type VII pass-through timings. */
+ if (mode_in->dsc_passthrough_timings_support && info->dp_dsc_bpp != 0) {
+ stream->timing.dsc_fixed_bits_per_pixel_x16 = info->dp_dsc_bpp;
+ }
}
static void fill_audio_info(struct audio_info *audio_info,
@@ -6976,6 +6981,13 @@ create_stream_for_sink(struct drm_connector *connector,
&mode, preferred_mode, scale);
preferred_refresh = drm_mode_vrefresh(preferred_mode);
+
+ /*
+ * HACK: In case of multiple supported modes, we should look at the matching mode to decide this flag.
+ * But what is matching mode, how should it be decided?
+ * Assuming that only preferred mode would have this flag.
+ */
+ mode.dsc_passthrough_timings_support = preferred_mode->dsc_passthrough_timings_support;
}
}
--
2.51.0

View File

@@ -7,5 +7,6 @@ title: Other
This category houses guides that are not specific to any other cagegory. This category houses guides that are not specific to any other cagegory.
- [Bigscreen Beyond](/docs/other/bigscreen-beyond/) for using the official configuration tool from Bigscreen for the BSB1/2/2e and setting up eye tracking for the 2e.
- [Dongles over IP](/docs/other/dongles-over-ip/) plug your Watchman dongles into another host on the same network - [Dongles over IP](/docs/other/dongles-over-ip/) plug your Watchman dongles into another host on the same network
- [SVC Voice Changer](/docs/other/svc/) for AMD and NVidia GPUs, also works on CPU - [SVC Voice Changer](/docs/other/svc/) for AMD and NVidia GPUs, also works on CPU

View File

@@ -0,0 +1,109 @@
---
weight: 300
title: Bigscreen Beyond
---
# [Bigscreen Beyond Driver](https://steamdb.info/app/2467050/)
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: 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 most of its features should be working fine after doing the above!
Note that currently eye camera firmware loading and updates do not work, but HMD firmware updates do 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
You can also swap modes more easily without using the "Bigscreen Beyond Driver" if your device is set to 75hz mode via `XRT_COMPOSITOR_DESIRED_MODE` for an Enivison profile.
1. `XRT_COMPOSITOR_DESIRED_MODE=0` is the 75hz mode
2. `XRT_COMPOSITOR_DESIRED_MODE=1` is the 90hz mode
You can verify which modes are which by using a tool like `xrandr` with the HMD plugged in. The top two modes are the relevant ones used here and are listed in order, starting at an index of 0.
## Bigscreen Beyond 1/2/2e `udev` Rules
You may need these udev rules (ie: in `/etc/udev/rules.d/`) for full functionality.
```udev
# Bigscreen Beyond
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="35bd", ATTRS{idProduct}=="0101", MODE="0660", TAG+="uaccess"
# Bigscreen Bigeye
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="35bd", ATTRS{idProduct}=="0202", MODE="0660", TAG+="uaccess"
# Bigscreen Beyond Audio Strap
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="35bd", ATTRS{idProduct}=="0105", MODE="0660", TAG+="uaccess"
# Bigscreen Beyond Firmware Mode?
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="35bd", ATTRS{idProduct}=="4004", MODE="0660", TAG+="uaccess"
```
## Bigscreen Beyond 2e Eyetracking via Baballonia under Linux
### Requirements:
* Windows 10/11 dual-boot availability or separate Windows 10/11 machine
* Some form of re-streaming the Bigeye camera to bypass broken `v4l`/`uvcvideo` default drivers; `libuvc` is known to work, as does `cameractls` for viewing the cameras as well
* ie: `go-bsb-cams` modified from `garymcbay/mjpeg` for this purpose by @lillia
To have functioning eyetracking while using a Bigscreen Beyond 2e under Linux, you will currently need to supplement the Baballonia portion of the software stack via Proton.
The full stack can be pictured as such:
{{% mermaid %}}
graph TB
E[Bigscreen Beyond 2e]-->F
F[Bigscreen Bigeye]-->A
E-->M[Monado]
M-->O[OpenComposite]
M-->X[XRizer]
O-->D
X-->D
A[go-bsb-cams using libuvc] --> B[Baballonia.Desktop.exe] --> C[VRCFT.Avalonia] --> D[VRChat/etc.]
subgraph Linux Native
A
C
E
F
M
O
X
end
subgraph Proton/Wine
B
D
end
{{% /mermaid %}}
`go-bsb-cams` can be found here: https://github.com/LilliaElaine/go-bsb-cams
`Baballonia` releases can be found here: https://github.com/Project-Babble/Baballonia/releases
`VRCFT.Avalonia` releases can be found here: https://github.com/dfgHiatus/VRCFaceTracking.Avalonia/releases
You will need to boot into Windows and use `Baballonia.Desktop` there in order to train any and all models as needed so that you can then transfer them over to your Linux filesystem. They are typically stored at `%APPDATA%/Roaming/ProjectBabble/Models` on Windows and can be loaded from wherever you like via the `Babbalonia.Desktop` GUI.
Then you can start `Baballonia.Desktop.exe` via `Proton` as a "non-steam game" and tell it to load your pre-trained model, the `Baballonia` setup executable can be run first and then you'll want to point the Steam Library entry to the proper `Baballonia.Desktop.exe` afterwards for future launches.
**NOTE:** If you're using an Nvidia GPU you'll need to disable `GPU Acceleration` for it to track the full volume as it seems to be weirdly clamped while `GPU Acceleration` is enabled under `Proton`.
`Baballonia.Desktop` can be given the `http://127.0.0.1:8080/stream` endpoints for each camera if you're using `go-bsb-cams` to load the cameras. You'll need to adjust cropping and brightness for the cameras as necessary, but it should allow you to easily select the whole left/right areas automatically for the Bigeye in particular.
Ensure `Baballonia.Desktop` is set to provide `Eye` or `Both` tracking to `VRCFT.Avalonia`, alongside the `Native OSC` option if desired, and then launch `VRCFT.Avalonia`. If successful, you should see some small transfers of data, assuming the `VRCFT-Babble` module is loaded in `VRCFT.Avalonia`.
Assuming all goes well, you should be able to see OSC data coming in with it enabled after launching VRChat under `Proton`. Avatar parameters should load into `VRCFT.Avalonia` and you should see both send/receive values for data rates at this point alongside live results within VRChat itself.

View File

@@ -13,15 +13,30 @@ Antialiasing should be avoided when possible and the compositor scale should be
AMD GPUs will attempt to power save in between rendering frames, for flatscreen games this is helpful, but for VR this is quite negatively impactful on the VR compositor's ability to timewarp frames so the user's viewport does not stutter or cause sickness. AMD GPUs will attempt to power save in between rendering frames, for flatscreen games this is helpful, but for VR this is quite negatively impactful on the VR compositor's ability to timewarp frames so the user's viewport does not stutter or cause sickness.
This is very important to avoid stuttering, do not skip this step if you use AMD. This is step is modestly important to avoid stutter on newer kernels, if you experience stutters under large graphical load please attempt to set this up.
### The simple way: Use CoreCtrl ### The simple way: Use CoreCtrl
{{% hint danger %}}
**BE CAREFUL**
CoreCtrl is an **overclocking** utility. Overclocking your GPU is potentially dangerous and if done without care it could **permanently damage your hardware**.
If you limit yourself to setting the power profile you should be fine, but don't just crank up the sliders.
{{% /hint %}}
- Install [CoreCtrl](https://gitlab.com/corectrl/corectrl) - Install [CoreCtrl](https://gitlab.com/corectrl/corectrl)
- Select your GPU on the top - Select your GPU on the top
- Set Performance mode to Advanced - Set Performance mode to Advanced
- Set Power profile to VR - Set Power profile to VR
- Set the GPU and Memory sliders to max
{{% hint danger %}}
Do note that corectrl version 1.4 was not able to separately adjust the GPU performance profile from the speeds.
Your GPU will downclock to absolute minimums after changing your power profile.
To set them back where they should be, adjust the core and memory sliders all the way to the right to obtain your default performance clocks.
If they present as minimums and maximums in a vertical fashion leave them alone, you are fine.
{{% /hint %}}
### Enable VR profile using a script ### Enable VR profile using a script

View File

@@ -5,54 +5,194 @@ weight: 50
# Resonite # Resonite
Resonite presents a decent base of usability for both native Linux and Proton verions, but suffers some issues under OpenComposite. The current recommended Proton variant is [**Proton GE**](https://github.com/GloriousEggroll/proton-ge-custom/releases/latest).
## Broken hands [XRizer](/docs/fossvr/xrizer/) should now provide a close-to-flawless experience on most controllers and when using hand tracking.
Resonite is currently playable through OpenComposite on Valve Index controllers alone. The SteamVR runtime normally generates synthetic hand models ("skeletal input") from the user's controller activity, but as OpenComposite doesn't currently support this across all controllers, this leads to null hands being provided to Resonite.
Valve Index Knuckles generate their own synthetic hand data in the Monado runtime and therefore function as expected. ## Mirrors look cross-eyed
## Sync Error (native-only issue) When playing Resonite under [Monado](/docs/fossvr/monado/) or [WiVRn](/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).
There is a bug that prevents cloud syncing. This only affects the native Linux client. To solve this, prepend `OXR_PARALLEL_VIEWS=1` to Resonite's launch options.
Symptom: The syncing status facet on your dash reads: ## Performance
> **Sync Error** &nbsp; Check log for details In August 2025, Resonite updated to run FrooxEngine as a native Linux process, with the renderer being run through Proton.
### Workaround 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.
```bash ## Clipboard
git clone "https://github.com/Yellow-Dog-Man/brotli.net"
wget "thepatch TODO"; git apply
cd Brotli.NET
dotnet restore
dotnet build Brotli.Core --configuration Release --no-restore
cp Brotli.Core/bin/Release/netstandard2.0/Brotli.Core.dll ~/.local/share/Steam/steamapps/common/Resonite/Resonite_Data/Managed/Brotli.Core.dll
cd ~/.local/share/Steam/steamapps/common/Resonite/
cp Resonite_Data/Plugins/brolib_x64.so Resonite_Data/Managed/
```
### Explanation As of the splittening release, Resonite only supports copy/pasting text, and does not work at all in Flatpak Steam with Wayland, [issue #5321](https://github.com/Yellow-Dog-Man/Resonite-Issues/issues/5321).
In short, Brotli.NET mistakenly determines it's on Windows, and thus tries and fails to load the Windows library `brolib_x64.dll`. Also, the correct Linux-native library _does_ ship with Resonite, but that isn't in Brotli.NET's search path. This mod provides full clipboard functionality, but only works on Wayland: [ResoniteLinuxClipboard](https://github.com/GrandtheUK/ResoniteLinuxClipboard)
See issue [Yellow-Dog-Man/brotli.net#3](https://github.com/Yellow-Dog-Man/brotli.net/issues/3). ## Audio issues
## Can't import models (native) Resonite uses SDL for audio on Linux, but the current implementation can be a bit flaky.
This bug in AssimpNet prevents importing models. This only affects the native Linux client. In particular, the WiVRn microphone [is known to be glitchy](https://github.com/Yellow-Dog-Man/Resonite-Issues/issues/5260).
AssimpNet on Linux loads the native plugin from the wrong directory. It is recommended that you use PipeWire as your system's audio service, including its PulseAudio and ALSA support.
### Workaround The game will default to the PipeWire API if it can, falling back to the PulseAudio API.
```bash ### Crackling microphone audio
cd ~/.local/share/Steam/steamapps/common/Resonite/
ln -s Resonite_Data/Plugins/libassimp.so .
```
## Z-fighting on facets and UI 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.
## Mirrors look messed up in VR 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.
### 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 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.
### 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.
### No microphone audio
Assuming you have the correct mic chosen in Resonite, this bug happens when SDL is set to ALSA and you restart Resonite while WiVRn is running. If you're using ALSA mode, you must restart WiVRn **every time** you restart Resonite.
**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.
## 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.
Currently there are 3 mod loaders:
- [ResoniteModLoader (RML)](https://github.com/resonite-modding-group/ResoniteModLoader)
- [Resolute](https://github.com/Gawdl3y/Resolute) is available for installing and managing RML mods
- [MonkeyLoader (ML)](https://github.com/ResoniteModdingGroup/MonkeyLoader.GamePacks.Resonite)
- ML mods require manual installation and updating for now
- [BepisLoader (BL)](https://thunderstore.io/c/resonite/p/ResoniteModding/BepisLoader/)
- Uses [Thunderstore](https://thunderstore.io/c/resonite/) for mod management
A more detailed comparison table between modloaders is available [here](https://modding.resonite.net/getting-started/installation/#mod-loader-comparison).
### Resonite randomly gets stuck on initial loading screen when using RML
The exact cause of this is currently unknown. Consider using a different modloader if you encounter such issues starting the game as it seems to not cause the same problem.
## Crashes
### Renderer issues
Resonite's renderer is known to randomly crash suddenly - this is currently tracked at [Issue #5325](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 [Issue #5246](https://github.com/Yellow-Dog-Man/Resonite-Issues/issues/5246).
During VR gameplay, the renderer may cause a full GPU Reset if you have an AMD graphics card that is heavily loaded. Check `dmesg` if this occurs.
### 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 [Issue #5152](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.
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](https://github.com/SpookySkeletons/proton-ge-rtsp/releases) 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.
Because controller hot-swapping is not yet implemented in Monado & OpenComposite, turning off a controller will freeze its state, including buttons pressed and analog stick input. Resonite will continue processing VR inputs even after switching to desktop.
The end result is that desktop controls can act strangely. For example, if you were holding the grab sensor as you turned off the VR controller, picking up items or inspector windows stops working with the mouse.

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) - [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 - 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 ## Installing SlimeVR Server
@@ -33,9 +33,10 @@ It's generally **highly recommended** to opt for the more expensive but higher q
## Selecting your variant ## Selecting your variant
There are currently two ways to use SlimeVR: There are currently three ways to use SlimeVR:
- Via SteamVR driver - Via SteamVR driver
- Via SolarXR driver for Monado
- Directly via VRChat OSC (Open Sound Control) - Directly via VRChat OSC (Open Sound Control)
## First method: SteamVR driver ## First method: SteamVR driver
@@ -47,12 +48,29 @@ Then you'll need to register the driver using the following command.
**Important**: make sure to **NOT** run this command twice, adding a driver twice will cause problems. **Important**: make sure to **NOT** run this command twice, adding a driver twice will cause problems.
```bash ```bash
$HOME/.steam/steam/steamapps/common/SteamVR/bin/linux64/vrpathreg.sh adddriver $HOME/.steam/steam/steamapps/common/SteamVR/drivers/slimevr $HOME/.steam/steam/steamapps/common/SteamVR/bin/vrpathreg.sh adddriver $HOME/.steam/steam/steamapps/common/SteamVR/drivers/slimevr
``` ```
Now the only thing you have to do is restart the SlimeVR server. Now the only thing you have to do is restart the SlimeVR server.
## Second method: VRChat OSC ## Second method: native SolarXR driver for Monado
This is a native approach to using Slime trackers within the open-source stack without relying on SteamVR, offering results comparable to those provided by the native SteamVR driver.
To use this method, you need to use SlimeVR v0.14.0 or newer and if not available from stable may be obtained via a testing build:
[Official stable builds](https://github.com/SlimeVR/SlimeVR-Server/releases)
[Unstable testing builds](https://github.com/SlimeVR/SlimeVR-Server/actions/workflows/gradle.yaml?query=branch%3Amain)
For Monado, you need compile this fork:
`https://gitlab.freedesktop.org/rcelyte/monado.git`, branch `solarxr-integration`. You can easily build Monado from this specific branch via [Envision](../fossvr/envision/), by modifying "XR Service Repo" and "XR Service Branch" in your build profile accordingly.
For WiVRn, you need to compile this fork: `https://github.com/notpeelz/WiVRn.git`, branch `solarxr-patches`. You also need the `WIVRN_FEATURE_SOLARXR` CMake flag set to `ON`.
**Important**: Make sure to launch SlimeVR first before launching Monado/Envision.
**Important note #1**: Do not stop the SlimeVR server during operation, as driver and tracker hot-plugging are not yet supported.
## Third method: VRChat OSC
**This method is only available in VRChat.** **This method is only available in VRChat.**

View File

View File

@@ -0,0 +1,30 @@
---
title: HaritoraX Trackers
weight: 50
---
# HaritoraX Trackers
{{% hint info %}}
For a better full-body experience on Linux, it is recommended to buy the Official SlimeVR Trackers. This article is not an endorsement and is intended for users who have already acquired the hardware and are looking for compatible software.
{{% /hint %}}
- [Product website](https://en.shiftall.net/our-products)
HaritoraX trackers are IMU-based positional trackers.
## SlimeTora
- [Project repo](https://github.com/OCSYT/SlimeTora)
- [Project Wiki](https://github.com/OCSYT/SlimeTora/wiki)
SlimeTora is a program that connects the HaritoraX trackers to the [SlimeVR server](https://docs.slimevr.dev/server/index.html), supporting both the HaritoraX Wireless and HaritoraX Wired (1.1b/1.1/1.0). Supports Bluetooth (low energy), Bluetooth (classic) (w/ COM), and the GX(6/2) communication dongles (w/ COM).
### HaritoraX Interpreter
- [Project repo](https://github.com/JovannMC/haritorax-interpreter)
- [NodeJS package](https://www.npmjs.com/package/haritorax-interpreter)
HaritoraX Interpreter is a Node.js package that enables communication with the HaritoraX FBT trackers to read/write data to the trackers. No HaritoraConfigurator/VR Manager software needed (mostly)!

View File

@@ -5,9 +5,9 @@ title: SteamVR
# SteamVR # SteamVR
- [Quick start guide](/docs/steamvr/quick-start) - [Quick start guide](/docs/steamvr/quick-start/)
The de facto standard for anything PCVR, SteamVR runs on Linux. The de facto standard for anything PCVR, SteamVR runs natively on Linux.
Unfortunately the Linux version is riddled with bugs, missing features and bad performace, so in general it can be a subpar experience. Unfortunately the Linux version is riddled with bugs, missing features and bad performace, so in general it can be a subpar experience.
@@ -17,15 +17,21 @@ If you want to use a standalone headset with SteamVR you can check out [ALVR](/d
## Room Setup ## Room Setup
The SteamVR room setup application is bug prone. It's possible to circumvent the room setup application using one of the following methods. The SteamVR room setup application is bug prone. It's possible to circumvent the room setup application using quick calibration.
### Quick Calibration ### Quick Calibration
Set the headset and controllers on the floor in the center of the playspace. Run the Quick Calibration utility under _Settings > Developer > Room and Tracking_. This will setup a standing play area for you to use. Set the headset and controllers on the floor in the center of the playspace.
Run the Quick Calibration utility from the SteamVR-Monitor (the desktop utility showing basestations, headset and controller icons) under _Settings > Developer > Room and Tracking_.
This will setup a standing play area for you to use.
## Reprojection ## Reprojection
SteamVR is fully incapable of stutter-free reprojection currently, efforts are ongoing to raise attention fix this. The issue can only be mitigated by not dropping below 1/2 of your HMD's rated refresh value, once under there is no other means to prevent the vision slitting, stuttering, or lagging from occuring. We recommend in all cases the use of [Envision](/docs/fossvr/envision/) as a suitable replacement for this software stack... Async Reprojection on SteamVR is currently hit-or-miss.
**On RADV** you can try the launch-option `RADV_DEBUG=nodcc %command%`.
If it is still broken, you can disable Reprojection either enabling "Legacy Reprojection" (per app) or in the settings-file `$HOME/.steam/steam/config/steamvr.vrsettings` by adding `"enableLinuxVulkanAsync" : false` to the "steamvr" section.
### Envision ### Envision

View File

@@ -0,0 +1,74 @@
---
weight: 200
title: Using Mod Managers
---
# Using Third-Party Mod Managers with Steam Games
This is a guide on how to install and integrate mod managers (like Vortex, MO2, etc.) for games running in Proton.
**Note:** Most of this stuff will break if you use Flatpak for any of the involved programs.
![skyrim_vr_vortex](/images/steam_launch_vortex.png "Example usage: Vortex Mod Manager integrated into Skyrim VR on Steam")
## Pre-Requisites
- https://github.com/Matoking/protontricks
- https://github.com/tralph3/Steam-Metadata-Editor
- Launch your game at least once before!
## Procedure
1. Download your mod manager installer (Vortex, MO2, etc.)
2. Run the installer with `Protontricks Launcher`, select your game prefix when prompted
3. Finish the installer and note the installation path
4. Symlink mod manager's installation path inside prefix into the game's install path. For example:
```
ln -s "/home/faith/.local/share/Steam/steamapps/compatdata/611670/pfx/drive_c/Program Files/Black Tree Gaming Ltd/Vo
rtex/" "/home/faith/.local/share/Steam/steamapps/common/SkyrimVR/Vortex"
```
5. **Close Steam!** Then open Steam Metadata Editor
6. Find your game in the list, then click `Edit launch menu`
7. Click `Add New Entry`
8. In Description, enter the display name (e.g., `Vortex Mod Manager`)
9. Click on the `...` button in the Executable field
10. File picker will appear, which should be inside the game's install directory. If it's not, try again, restart your computer, or perform some ritual because it sometimes doesn't work properly.
11. Choose the mod manager executable (e.g., `Vortex/Vortex.exe`)
12. Make sure a relative path appears in the Executable field, as above! It won't work otherwise. If you see a full path `/home/faith/.local/share/steam/.../`, try deleting the entry and restarting the metadata editor.
13. The working directory should fill in automatically
14. Close the modal window
15. Click `Save` button
16. Enjoy
## Important notes
* Steam might occasionally remove the custom launch entry, just follow the guide again from Step 5.
* You have to install mod managers and dependencies for each game separately.
* You can't use the Nexus Mods button `Mod Manager Download` via browser, you have to download and adds mods manually.
# Redirecting game executable from custom launchers
It is possible to "redirect" any executable that Steam runs and launch any other executable you specify instead. This can be useful for launching Script Extender loader without having to replace any files.
You need to set game's launch options to the following:
```
bash -c 'exec "${@/OriginalGame.exe/CustomLoader.exe}"' -- %command%
```
replacing `OriginalGame.exe` and `CustomLoader.exe` with game's executable name and your custom launcher respectively.
## Examples
Redirect Fallout 4 VR to [F4 Script Extender](https://f4se.silverlock.org/) with dll overrides needed for other mods to work:
```
WINEDLLOVERRIDES="WinHTTP.dll=n,b;x3daudio1_7.dll=n,b" bash -c 'exec "${@/Fallout4VR.exe/f4sevr_loader.exe}"' -- %command%
```
Redirect original Crysis (2007) executables to [Crysis VR](https://crysis.vrmods.eu/):
```
MANGOHUD=0 bash -c 'exec "${@/Crysis.exe/CrysisVR.exe}"' -- %command%
```
Put any environment variables before `bash`, put any launch arguments for the game after `%command%`.

View File

@@ -0,0 +1,101 @@
---
weight: 200
title: Pairing
---
# Pairing Lighthouse Controllers or Trackers
To pair lighthouse-tracked hardware such as the Valve Index "Knuckles" Controllers,
HTC Vive Wands, HTC Vive Pro controllers, Tundra Labs Trackers or VIVE Trackers you'll
need enough receivers (generally one for each device).
Receivers can be:
- Watchman dongles (plugged in your computer, preferably not on a USB hub)
- Tundra Labs "SW"-series dongles (now discontinued) can theoretically connect
3 or even 4 (depending on the version) devices. However stability leaves
much to be desired when connecting more than 2 (respectively 3) devices.
- If you have a lighthouse-tracked HMD (e.g. Valve Index, HTC Vive, Bigscreen Beyond),
two receivers (for the controllers) are already built in.
## Assigning Trackers
After pairing Trackers, you need to assign roles to each tracker.
This can be done through SteamVR _Settings > Controllers > Manage Trackers_
Alternatively you can also edit the settings-file `$HOME/.steam/steam/config/steamvr.vrsettings` by adding the following section:
```json
"trackers" : {
"/devices/lighthouse/LHR-xxx" : "TrackerRole_LeftShoulder",
"/devices/lighthouse/LHR-xxx" : "TrackerRole_RightShoulder",
"/devices/lighthouse/LHR-xxx" : "TrackerRole_Waist",
"/devices/lighthouse/LHR-xxx" : "TrackerRole_LeftFoot",
"/devices/lighthouse/LHR-xxx" : "TrackerRole_RightFoot"
}
```
Replace LHR-`xxx` with the Serialnumber of each tracker.
Serialnumbers can be obtained (after pairing) from `$HOME/.steam/steam/config/lighthouse/lhr-xxx`
TrackerRoles are formatted `TrackerRole_<yyy>` with `<yyy>` one of:
- None
- Handed
- LeftFoot
- RightFoot
- LeftShoulder
- RightShoulder
- LeftElbow
- RightElbow
- LeftKnee
- RightKnee
- Waist
- Chest
- Camera
- Keyboard
## Pairing via SteamVR
You can follow the normal pairing process by launching SteamVR, and opening the
pairing window (in the Devices menu).
If however for some reason this does not work (in particular, if the pairing window
[does not render](https://github.com/ValveSoftware/SteamVR-for-Linux/issues/531)),
you can work around it by doing the pairing process via `lighthouse_console`.
## Pairing via `lighthouse_console`
In a terminal, launch `lighthouse_console` by running
```
~/.steam/steam/steamapps/common/SteamVR/tools/lighthouse/bin/linux64/lighthouse_console
```
### Identifying available receivers
You'll be greeted by a shell which starts by listing the serial number of attached receivers (both
dongles and built-in, if your HMD is connected).
Selecting a receiver is done by running `serial <serialnumber>` in the opened shell.
When pairing new devices, you'll want to find a receiver that isn't paired with a device already.
After a receiver is selected, you can run `identifycontroller` to check if the receiver
is paired with a device (assuming the device is on).
In general, built-in HMD receivers will have longer serial numbers than dongle
ones.
If either you want to *replace* previously paired devices (e.g. when changing
controllers) or you're struggling to identify which receiver to use, run
`unpairall`. This will unpair all lighthouse devices!
### Pairing a device
Once you have selected an available receiver with `serial <serialnumber>`:
1. Turn on your device
2. Put it in pairing mode (e.g. hold System+B for Valve controllers), the LED
should be blinking blue
3. Run the `pair` command
After a few seconds, the LED should turn green, and the device is now paired.
Do this for each device you want to pair (remember to use a different receiver
for each device), and exit the shell by running `quit`.

View File

@@ -42,11 +42,11 @@ 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) **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) or two patches for >= 6.15 [1](../../hardware/bigscreen-beyond-kernel-6.17-1.patch) [2](../../hardware/bigscreen-beyond-kernel-6.17-2.patch)
If you use any of the above headsets with {{< icon name="nvidia" >}} Nvidia , you may get a smoother experience with Monado + OpenComposite (use Envision for easy setup), albeit this combo does not work with all VR titles. 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.
For many games, you might want experiment with "Legacy Reprojection" in the per-app video settings. For many games, the "Legacy Reprojection" option in the per-app video settings may provide a smoother experience.
**Quest 1/2/3/Pro, Pico 3/4, Vive Focus 3/XR Elite**: **Quest 1/2/3/Pro, Pico 3/4, Vive Focus 3/XR Elite**:
@@ -73,21 +73,21 @@ Extra steps when using with ALVR:
- Under `Installation` tab, register the ALVR driver - Under `Installation` tab, register the ALVR driver
- Under `Settings`, `Steamvr Launcher` section, set `Driver launch action` to `No action`. - Under `Settings`, `Steamvr Launcher` section, set `Driver launch action` to `No action`.
None: Cloud sync can get stuck and prevent SteamVR from launching. I recommend disabling cloud sync for SteamVR. Note: Cloud sync can get stuck and prevent SteamVR from launching. I recommend disabling cloud sync for SteamVR.
If you've installed Steam in a non-standard location, change the variable on the top of the script. If Steam is installed in a non-standard location, change the variable on the top of the script.
To use the script, simply launch it from a terminal. It will ask for sudo password in case your SteamVR has been freshly installed or updated and it needs to `setcap` the compositor. To use the script, simply launch it from a terminal. It will ask for sudo password in case your SteamVR has been freshly installed or updated and it needs to `setcap` the compositor.
ALVR-only: If you get a SteamVR error after this, Ctrl-C the script, open ALVR dashboard and launch SteamVR from there once. You then don't have to open ALVR until there's a SteamVR update. ALVR-only: In case a SteamVR error appears; Ctrl-C the script, open ALVR dashboard and launch SteamVR from there once. You then don't have to open ALVR until there's a SteamVR update.
If you need to restart SteamVR, simply exit it using your overlay and it'll be restarted for you. To really exit SteamVR, first Ctrl-C the script. When restarting SteamVR, simply exit it using your overlay and it'll be restarted for you. To really exit SteamVR, first Ctrl-C the script.
## Optional: Disable SteamVR dashboard ## Optional: Disable SteamVR dashboard
Since the SteamVR dashboard has some major issues with high CPU usage, occasional freezing and sometimes going completely unresponsive. The SteamVR dashboard has some major issues with high CPU usage, occasional freezing and sometimes going completely unresponsive.
Many choose to disable SteamVR dashboard and use something like WlxOverlay-S instead for desktop + game library access. Many choose to disable SteamVR dashboard and instead use something like WlxOverlay-S for desktop & game library access.
To do this, simply remove the execute permission from `vrwebhelper`: To do this, simply remove the execute permission from `vrwebhelper`:

View File

@@ -13,7 +13,7 @@ Current recommended Proton: [Proton-GE-RTSP](https://github.com/SpookySkeletons/
As opposed to the default setting, this Proton version enables more stable and feature rich video playback. Featuring a number of fixes and most prominently playback of livestreamed content, typically real time streaming protocol found at live events and often utilized by the VRCDN. As opposed to the default setting, this Proton version enables more stable and feature rich video playback. Featuring a number of fixes and most prominently playback of livestreamed content, typically real time streaming protocol found at live events and often utilized by the VRCDN.
As of the GE9-1-rtsp4 release, video content should be crash-free, please report any notable stability bugs to LVRA general chat or related issue tabs. As of the GE-Proton9-10-rtsp14 release, video content should be working correctly. Please report any notable stability bugs to LVRA general chat or by creating an issue on GitHub.
This tar file can be extracted to a ~/.steam/steam/compatibilitytools.d/ (create if it does not already exist) folder and steam restarted to set the game proton version to rtsp. This tar file can be extracted to a ~/.steam/steam/compatibilitytools.d/ (create if it does not already exist) folder and steam restarted to set the game proton version to rtsp.
@@ -23,9 +23,15 @@ If you utilize pipewire as your audio server, VRChat has a tendancy to drop mult
Similar tuning of pulseaudio can fix the issue if encountered there. Similar tuning of pulseaudio can fix the issue if encountered there.
Should the game prompt to exit the game upon an anticheat failure, simply try to load the game again until it works. [See EAC section](eac) Should the game prompt to exit the game upon an anticheat failure, simply try to load the game again until it works. [See EAC section](eac/)
Given a [few caveats](video_players) most video players will work. Given a [few caveats](video_players/) most video players will work.
## Privacy
VRChat drags quite a tangle of privacy concerns. VRChat drags quite a tangle of privacy concerns.
Please consider your opsec in relation to all VR API input including poses, all voice communication, unsandboxed code execution, the EAC anticheat system which occasionally probes system proc info and much more, and the game maintaining a memory buffered audio video recording of the window contents tied to the report system.
Please consider your opsec in relation to all VR API input including poses, all voice communication, unsandboxed code execution, the EAC (anticheat) system which occasionally probes the list of all system processes, the game maintaining a memory-buffered audio/video recording of the window contents tied to the report system, and much more.
In-game analytics can be blocked at the DNS level. These are often external services the game phones into to deliver usage statistics. Opt-out by blocking this domain list in your network or computer firewall/DNS service: https://github.com/Luois45/VRChatAnalyticsBlocklist

View File

@@ -1,16 +0,0 @@
---
weight: 100
title: Blocking Ads in VRChat
---
Ads are annoying, bloated, and wasteful of your time and attention.
They are found prominently in popular worlds, luckily the prefabs can be blocked by the end user with this handy git project:
![AdGoBye](https://raw.githubusercontent.com/AdGoBye/AdGoBye/main/Marketing/lsmbeforeafter.webp)
https://github.com/AdGoBye/AdGoBye
In-game analytics can also be blocked at the DNS level, these are often external services the game phones into to deliver usage statistics. Opt out by blocking this domain list in your network or computer firewall/ DNS service.
https://github.com/Luois45/VRChatAnalyticsBlocklist

View File

@@ -5,26 +5,58 @@ title: Easy Anti-Cheat
# Easy Anti-Cheat # Easy Anti-Cheat
Sometimes, seemingly randomly, you can get an EAC error during the VRChat startup/login screen. It looks like a message box, with the title "Anti-cheat Error", no actual message text, and a single button labeled "Quit". Running VRChat on Linux *used to be* prone to unwarranted EAC errors. Sometimes, seemingly randomly, you would get an EAC error during the VRChat startup/login screen. It looks like a message box, with the title "Anti-cheat Error", a message referring to a filepath that failed to validate integrity, and a single button labeled "Quit". This would trigger even when all files were unmodified.
## Recommended Workaround Thankfully, at some point in October or November 2024, **these EAC errors resolved themselves**. While it is still possible to get EAC errors for other reasons, the race condition that made it a coin-flip on startup no longer plagues us.
If you are running into EAC errors still, try these options:
- Trigger a reinstall of the EAC runtime by moving the [Proton prefix for VRChat](https://www.pcgamingwiki.com/wiki/VRChat#Configuration_file.28s.29_location) somewhere else, forcing Steam to regenerate it on next launch
- Make sure you are not blocking the EAC domains, such as `modules-cdn.eac-prod.on.epicgames.com`
- Do not set `SDL_VIDEODRIVER` env var anywhere - this breaks the splash screen
- Do not use the `VR_OVERRIDE` env var
The below workaround shouldn't be necessary anymore, but is kept here in case the issue comes back someday.
## Workaround
Wrapper script for starting VRChat: [startvrc.sh on GitHub](https://gist.github.com/galister/ca63a5795694e4c839a8e7f4bb8a35bc) Wrapper script for starting VRChat: [startvrc.sh on GitHub](https://gist.github.com/galister/ca63a5795694e4c839a8e7f4bb8a35bc)
Set startup options for VRChat: Set startup options for VRChat:
`/path/to/startvrc.sh %command%` `/path/to/startvrc.sh %command%`
If you're using extra env vars, they should go first: If you're using extra env vars, they should go first:
`PRESSURE_VESSEL_FILESYSTEMS_RW=/run/user/1000/monado_comp_ipc /path/to/startvrc.sh %command%` `PRESSURE_VESSEL_FILESYSTEMS_RW=/run/user/1000/monado_comp_ipc /path/to/startvrc.sh %command%`
<!--
## Root Cause ## Root Cause
We are still trying to determine the cause. We are still trying to determine the cause.
Here is what we know:
- The filepath in the message always refers to a file within `steamapps/common/VRChat`.
- EAC errors can trigger even when all these files are completely pristine.
- The triggering file can be different each time.
- EAC doesn't care about any of the files in `AppData/LocalLow/VRChat`. This means yt-dlp.exe, logs, the local cache, etc are not subject to integrity checks.
- Getting multiple EAC errors in a row is very possible.
- Some EAC info is also written to the VRChat log file.
- EAC errors can also happen on Steam Deck.
- EAC errors can happen regardless of Proton version, kernel version, distro.
- EAC errors can happen regardless of whether you're in in VR or desktop mode.
- The message box used to have no actual message text. The message returned in a VRChat update, possibly on the serverside and without a steam depot update, sometime between 2024-03-25 and 2024-03-28.
It is likely caused by a race condition. Closing unnecessary apps or otherwise **lowering your CPU usage** before starting VRChat seems to make the EAC error happen significantly less often. It is safe to crank the CPU usage back up after the home world has loaded. It is likely caused by a race condition. Closing unnecessary apps or otherwise **lowering your CPU usage** before starting VRChat seems to make the EAC error happen significantly less often. It is safe to crank the CPU usage back up after the home world has loaded.
Some approaches we haven't tried or fully documented:
- Is it tied to network speed? Slow down connection to EAC servers - DNS delay or traffic shaping
- Is it tied to filesystem? Compare between ext4, btrfs, etc
- Analyze EAC-related network traffic
- Blocking EAC servers
- Slowing down IO read speed
- Debugging with winedbg or bpftrace (because strace and gdb both trigger an immediate splash screen and disconnect)
- REing EAC itself
The following sections do not fix the issue, but are still kept on the wiki to dispel rumors and record research. The following sections do not fix the issue, but are still kept on the wiki to dispel rumors and record research.
## (Outdated) glibc dt_gnu_hash ## (Outdated) glibc dt_gnu_hash
@@ -44,3 +76,5 @@ As of 2024-02-09, Arch Linux no longer ships with this flag.
- Gentoo users could enable the fix using the `hash-sysv-compat` USE flag on `sys-libs/glibc`. - Gentoo users could enable the fix using the `hash-sysv-compat` USE flag on `sys-libs/glibc`.
To reiterate, this glibc flag does _not_ appear to fix VRChat's particular flavor of EAC failures. To reiterate, this glibc flag does _not_ appear to fix VRChat's particular flavor of EAC failures.
-->

View File

@@ -5,4 +5,4 @@ title: Face & Eye Tracking
# Face & Eye Tracking # Face & Eye Tracking
If you have a face and/or eye tracking solution and want to use it for social vr, one option is to use [OscAvMgr](https://github.com/galister/oscavmgr), which fills the same role as VRCFT does on Windows. If you have a face and/or eye tracking solution and want to use it for social vr, one option is to use [OscAvMgr](https://github.com/galister/oscavmgr). Another alternative is the cross-platform port of VRCFT, [VRCFaceTracking.Avalonia](https://github.com/dfgHiatus/VRCFaceTracking.Avalonia).

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

@@ -24,7 +24,8 @@ First, take a look at this page from [the official VRChat docs](https://creators
vrc-get is a native FOSS package manager written in Rust. Its GUI counterpart was formerly known as vrc-get-gui, but has been rebranded as ALCOM (***Al***ternative Creator ***Com***panion). vrc-get is a native FOSS package manager written in Rust. Its GUI counterpart was formerly known as vrc-get-gui, but has been rebranded as ALCOM (***Al***ternative Creator ***Com***panion).
1. Download the [AppImage from the latest "gui" release](https://github.com/vrc-get/vrc-get/releases). Pick the file named `alcom-<some version>-x86_64.AppImage`. 1. Download the [AppImage from the latest "gui" release\*](https://github.com/vrc-get/vrc-get/releases). Pick the file named `alcom-<some version>-x86_64.AppImage`.
- \*Some users say the v0.16.0 and v1.0.0 releases only show a blank white GUI. If you're affected by this bug, downgrade to [v0.1.15](https://github.com/vrc-get/vrc-get/releases/tag/gui-v0.1.15) AppImage for the time being.
1. Run the AppImage. 1. Run the AppImage.
1. In the settings tab, under Unity Hub Path, point it to your UnityHub.AppImage. 1. In the settings tab, under Unity Hub Path, point it to your UnityHub.AppImage.
1. Create a new project and open it. 1. Create a new project and open it.
@@ -57,13 +58,34 @@ exec flatpak run com.unity.UnityHub "$@"
--> -->
## World & Avatar SDK
Out of the box, Build & Test doesn't work, for both Avatars and Worlds. Thankfully, we maintain Linux-specific patches, which you can install with ALCOM like any other VCC package.
{{% hint info %}}
**Note**: Try to install the latest VRCSDK and the latest LinuxVRChatSDKPatch.
But if you _must_ use VRCSDK version 3.7.5 and below, install LinuxVRChatSDKPatch version 0.0.4.
{{% /hint %}}
> ⚠️ **WARNING** \
> This modifies the VRChat SDK using [Harmony](https://github.com/pardeike/Harmony) to properly work on Linux. \
> This is directly against the VRChat Terms of Service.
These patches for both the Worlds and Avatars SDK are available through this [LinuxVRChatSDKPatch VCC page](https://befuddledlabs.github.io/LinuxVRChatSDKPatch/), or the [source on GitHub](https://github.com/BefuddledLabs/LinuxVRChatSDKPatch)
## Troubleshooting ## Troubleshooting
### Worlds: AssetBundle was not built ### Unable to activate Unity license
This error is caused by VRCSDK build incorrectly expecting a mixed-case AssetBundle filename, while Unity outputs a lowercase filename, which fails a file existence check and causes the SDK to abort the build. If you are using a Fedora or RHEL-based distribution, this may be caused by an OpenSSL configuration option.
To fix this, import `WorldSDKPatcher.unitypackage`: https://github.com/thegu5/VRCSDKonLinux/releases To verify that this is the problem, check your `~/.config/unity3d/Unity/Unity.Licensing.Client.log`.
If you see the text `Interop+Crypto+OpenSslCryptographicException: error:03000098:digital envelope routines::invalid digest`, running the following command as root will re-enable SHA-1 cryptography and resolve the issue:
`update-crypto-policies --set DEFAULT:SHA1`
For more information, see the RHEL documentation on [security hardening](https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/9/html/security_hardening/using-the-system-wide-cryptographic-policies_security-hardening#proc_re-enabling-sha-1_using-the-system-wide-cryptographic-policies).
### Shaders fail to include some .cginc files ### Shaders fail to include some .cginc files
@@ -74,17 +96,18 @@ This can happen with Poiyomi. It's caused by case-sensitivity. You may need to e
Unity may open undocked panel windows (such as color pickers and unitypackage import dialogs) partially offscreen. Unity may open undocked panel windows (such as color pickers and unitypackage import dialogs) partially offscreen.
Some workarounds: Some workarounds:
- For KDE, hold the Meta key and click anywhere in the window to drag it back onscreen. - For KDE, hold the Meta (AKA Super, AKA WinKey) key and click anywhere in the window to drag it back onscreen.
- Alt-Tab to the specific window, then press Meta-Right to snap the window to the right side of the screen. - Alt-Tab to the specific window, then press Meta-Right to snap the window to the right side of the screen.
- For KDE, press ALT+F3 -> More Actions -> Move. - For KDE, press ALT+F3 -> More Actions -> Move.
### Drag-and-drop does not work ### Can't drag-and-drop files from external programs
Rather than using Assets -> Import New Asset or Import Package, it's normally possible to drag-and-drop a unitypackage or other asset from a file browser directly into Unity's Project pane, where it will be copied to the Assets folder. Rather than using Assets -> Import New Asset or Import Package, it's normally possible to drag-and-drop a unitypackage or other asset from a file browser directly into Unity's Project pane, where it will be copied to the Assets folder.
However, if your file browser is running on Wayland, this will show "Failed copying file" errors. However, if your file browser is running on Wayland, this will show "Failed copying file" errors.
See issue [flathub/com.unity.UnityHub#97](https://github.com/flathub/com.unity.UnityHub/issues/97). <!-- this issue got deleted for some reason -->
<!-- See issue [flathub/com.unity.UnityHub#97](https://github.com/flathub/com.unity.UnityHub/issues/97). -->
As a workaround, launch your file browser in Xwayland mode. Unity will accept the file as it should. As a workaround, launch your file browser in Xwayland mode. Unity will accept the file as it should.
@@ -92,6 +115,20 @@ As a workaround, launch your file browser in Xwayland mode. Unity will accept th
WAYLAND_DISPLAY="" dolphin WAYLAND_DISPLAY="" dolphin
``` ```
### When Unity is opened via ALCOM, it crashes when dragging a hierarchy object
{{% hint info %}}
**Note**: If you are on Nvidia, see the [Crashing frequently with Nvidia](#crashing-frequently-with-nvidia) section first.
{{% /hint %}}
An ALCOM-launched instance of Unity can crash after trying to drag-and-drop an item (within Unity, ie. not external programs).
This [issue #1346](https://github.com/vrc-get/vrc-get/issues/1346) was fixed by ALCOM v0.1.14, so just update.
Analysis: ALCOM has a different environment than the rest of your system, mostly by virtue of being an AppImage. This means the Unity subprocess that it spawns was implicitly inheriting its crummy vars. Unfun fact: This environment inheritance causes several other problems (such as ignoring the user's GTK theme for menubars and context menus, especially on a KDE system), but I'm not sure the cleanest way to unset those vars yet. A wrapper script around the Unity binary?
### VRCFury builds lock up the editor ### VRCFury builds lock up the editor
Maybe due to the windows offscreen issue mentioned above, when starting build or play mode, the VRCFury progress window may initially be invisible, or pop underneath, which gives the *appearance* that the build isn't doing anything and has locked up. Use the "Alt-tab to the specific window then Meta-Right" trick to get the VRCFury progress window to appear onscreen again. That window may also be solid black, but this doesn't necessarily mean the build has frozen. Maybe due to the windows offscreen issue mentioned above, when starting build or play mode, the VRCFury progress window may initially be invisible, or pop underneath, which gives the *appearance* that the build isn't doing anything and has locked up. Use the "Alt-tab to the specific window then Meta-Right" trick to get the VRCFury progress window to appear onscreen again. That window may also be solid black, but this doesn't necessarily mean the build has frozen.
@@ -106,14 +143,26 @@ 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. 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 ### Crashing frequently with Nvidia
On some systems running Nvidia graphis, the Unity Editor may crash frequently from common actions like importing a unitypackage, or dragging a file. On some systems running Nvidia graphics, the Unity Editor may crash frequently from common actions like importing a unitypackage or dragging a file.
To fix this, open Unity Hub and click the `...` icon to the right of your project. Then click "Add command line arguments", and add the argument `-force-vulkan-layers`. If you launch projects from ALCOM (v0.1.13 or newer): Open ALCOM, go to the "Default Unity Command-line Arguments" setting on the Settings page. Click "Edit", "Customize", "Reset", "+", then type in `-force-vulkan-layers` into the new box, then click "Save".
Note that this change will only work when launching from Unity Hub, and will not apply when launching from ALCOM If you launch projects from Unity Hub: Open Unity Hub, click the `...` icon to the right of your project, then click "Add command line arguments", and add the argument `-force-vulkan-layers`.
Alternatively, downgrading the Nvidia driver to version 545 may also fix the problem Alternatively, downgrading the Nvidia driver to version 545 may also fix the problem.
<!-- This fix is mentioned in https://discussions.unity.com/t/unity-editor-crashes-frequently-on-linux-vulkan-after-updating-gpu-drivers/941387/10, and appears to be a new issue as of driver version 550 --> <!-- This fix is mentioned in https://discussions.unity.com/t/unity-editor-crashes-frequently-on-linux-vulkan-after-updating-gpu-drivers/941387/10, and appears to be a new issue as of driver version 550 -->

View File

@@ -9,7 +9,7 @@ AVPro based video players have been notoriously buggy on Linux, knowing to have
We recommend using [Proton-GE-RTSP](https://github.com/SpookySkeletons/proton-ge-rtsp/releases) as it contains extra fixes for Wine's Windows Media Foundation implementation that AVPro uses. This will allow you to play regular videos, MPEG-TS and HLS streams, as well as RTSP streams. Sometimes RTSP streams will require 1 or more manual resyncs to start. We recommend using [Proton-GE-RTSP](https://github.com/SpookySkeletons/proton-ge-rtsp/releases) as it contains extra fixes for Wine's Windows Media Foundation implementation that AVPro uses. This will allow you to play regular videos, MPEG-TS and HLS streams, as well as RTSP streams. Sometimes RTSP streams will require 1 or more manual resyncs to start.
AVPro on GE is currently expected to be stable, with one excpetion of seeking in the video not currently being implemented, if you encounter game stability issues or other around video playback please report them as soon as possible at the [VRChat proton git issue](https://github.com/ValveSoftware/Proton/issues/1199) or our [community instant messaging](/docs/community/). AVPro on GE-RTSP is currently expected to be stable, if you encounter game stability issues or other around video playback please report them as soon as possible at the [VRChat proton git issue](https://github.com/ValveSoftware/Proton/issues/1199) or our [community instant messaging](/docs/community/).
## Stream from video player to ffplay/MPV ## Stream from video player to ffplay/MPV

View File

@@ -6,19 +6,7 @@ title: VRCX
# VRCX # VRCX
- [VRCX GitHub Repository](https://github.com/vrcx-team/VRCX) - [VRCX GitHub Repository](https://github.com/vrcx-team/VRCX)
VRCX is a tool for managing your VRChat friendships, as well as providing additional convenience functionalities. VRCX is a tool for managing your VRChat friendships, as well as providing additional convenience features.
# Installer Script VRCX now provides an official Linux port. Rather than duplicate that info here, please refer to the guide on their wiki:
[Running VRCX on Linux](https://github.com/vrcx-team/VRCX/wiki/Running-VRCX-on-Linux)
VRCX provides the [install-vrcx.sh](https://github.com/vrcx-team/VRCX/blob/master/Linux/install-vrcx.sh) script upstream, which does the steps of the manual installation for you.
You can run it per `curl -sSf https://raw.githubusercontent.com/vrcx-team/VRCX/master/Linux/install-vrcx.sh | bash`.
# Manual Installation
- Grab the latest .zip from here: [VRCX Official Releases](https://github.com/vrcx-team/VRCX/releases)
- Use a new or existing Wine prefix of Wine 9.2 or later. Recommend using a non-proton Wine build.
- `winetricks corefonts`
- Symlink your `drive_c/users/steamuser/AppData/LocalLow/VRChat/VRChat` folder from the VRChat Wine prefix to the VRCX Wine prefix
- Run `VRCX.exe` via Wine.

View File

@@ -8,16 +8,16 @@ enableGitInfo = true
disableKinds = ['taxonomy'] disableKinds = ['taxonomy']
[params] [params]
BookTheme = 'auto' BookTheme = 'auto'
# enable in single pages if they get too long # enable in single pages if they get too long
BookToC = false BookToC = false
BookLogo = '/logo.png' BookLogo = '/logo.webp'
BookSection = 'docs' BookSection = 'docs'
BookRepo = 'https://gitlab.com/lvra/lvra.gitlab.io' BookRepo = 'https://gitlab.com/lvra/lvra.gitlab.io'
BookCommitPath = '-/commit' BookCommitPath = '-/commit'
BookEditPath = '-/edit/main' BookEditPath = '-/edit/main'
BookDateFormat = 'Jan 2, 2006' BookDateFormat = 'Jan 2, 2006'
BookSearch = true BookSearch = true
BookComments = false BookComments = false
[markup.goldmark.renderer] [markup.goldmark.renderer]
unsafe = true unsafe = true

View File

@@ -1,7 +1,7 @@
<hr style="margin: 48px 0"> <hr style="margin: 48px 0">
<p> <p>
&copy; <a target="_blank" href="https://gitlab.com/LVRA/lvra.gitlab.io/-/project_members">The <em>Linux VR Adventures</em> community contributors</a> &mdash; &copy; <a target="_blank" href="https://gitlab.com/LVRA/lvra.gitlab.io/-/project_members">The <em>Linux VR Adventures</em> community contributors</a> &mdash;
This work is licensed under <a target="_blank" href="http://creativecommons.org/licenses/by-sa/4.0/">Attribution-ShareAlike 4.0 International</a>. This work is licensed under <a target="_blank" href="https://creativecommons.org/licenses/by-sa/4.0/">Attribution-ShareAlike 4.0 International</a>.
</p> </p>
<p>Made with <a target="_blank" href="https://gohugo.io/">Hugo</a> and the <a target="_blank" href="https://github.com/alex-shpak/hugo-book">Hugo Book Theme</a>. <p>Made with <a target="_blank" href="https://gohugo.io/">Hugo</a> and the <a target="_blank" href="https://github.com/alex-shpak/hugo-book">Hugo Book Theme</a>.

View File

@@ -3,4 +3,9 @@
max-width: 100%; max-width: 100%;
height: auto; height: auto;
} }
main aside nav h2 a img.book-icon {
filter: unset;
height: 2em;
width: 2em;
}
</style> </style>

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 182 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 587 KiB

BIN
static/logo.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

View File

@@ -1,33 +0,0 @@
#!/usr/bin/env python3
from pathlib import Path
import re
from typing import List
from os.path import exists
def get_all_markdown_files():
return Path("content").rglob("*.md")
def find_links(f: str) -> List[str]:
with open(f, "r") as fd:
content = fd.read()
return [
link.lstrip("]").strip("()") for link in re.findall(r"\]\(\/[\w\/]+\)", content)
]
def verify_link_exists(link: str) -> bool:
return exists(f"content{link}/_index.md") or exists(f'content{link.rstrip("/")}.md')
md_files = get_all_markdown_files()
res = 0
for f in md_files:
for link in find_links(f):
if not verify_link_exists(link):
print(f"E: {f}: {link} does not exist")
res = 1
exit(res)