Ich habe mir eine Quest 3 geholt und wollte PC-VR unter Linux ohne SteamVR. Es funktioniert — besser als erwartet.
Der Stack
- WiVRn — Streaming-Server auf dem PC, Client-App auf der Quest. Läuft über WLAN oder USB-Kabel; ich nutze das Kabel.
- xrizer — übersetzt für Spiele, die OpenVR sprechen (die SteamVR-API), nach OpenXR. Spiele, die nativ OpenXR sprechen, brauchen es nicht und reden direkt mit WiVRn.
- Lutris + umu + Proton — wie bei meinen normalen Spielen.
Kein Steam, kein SteamVR, kein ALVR. Die Kette ist entweder
Spiel → Proton → xrizer → WiVRn → Headset oder, bei OpenXR-Spielen, Spiel → Proton → WiVRn → Headset.
Was läuft
| Spiel | API | Hinweise |
|---|---|---|
| Half-Life: Alyx | OpenVR → xrizer | Braucht das Startargument -vr. Texturspeicher eine Stufe unter Maximum, sonst geht der VRAM aus. |
| Vertigo 2 | OpenVR → xrizer | Das erste Spiel, das ich über das Lutris-Setup zum Laufen bekommen habe. |
| Gunman Contracts | OpenVR → xrizer | Läuft einfach. |
| Wanderer: The Fragments of Fate | OpenXR | Beim benutzerdefinierten Grafik-Preset bleiben — das höchste Preset lässt die GPU abstürzen. |
| Skydance’s BEHEMOTH | OpenXR | Braucht das Startargument -steam, sonst versucht es die Oculus-Lizenzprüfung und beendet sich. |
| Ghost Town VR | OpenXR | Der Ton muss einmal aufs Headset geleitet werden (siehe unten). |
| SpaceEngine | OpenVR → xrizer | VR ist eine Einstellung in der Config, kein Startargument. Das Arbeitsverzeichnis muss der Spielordner sein. |
| Resident Evil 7 | OpenXR (Mod) | Normales Spiel + REFramework-VR-Mod. Muss unter DX11 laufen. |
Normale Spiele in VR: Resident Evil 7
REFramework lädt sich als dinput8.dll, die das Spiel selbst lädt — kein Injector nötig. Unter
Linux braucht es dafür nur WINEDLLOVERRIDES=dinput8=n,b. Die openvr_api.dll der Mod löschen,
dann nutzt sie OpenXR direkt zu WiVRn.
Das Spiel auf DX11 umstellen. Und die Option “force anti-aliasing” der Mod ausschalten: Die RE Engine rendert manche Effekte in halber Auflösung als Dither-Muster und braucht TAA, um das zu glätten — ohne liegt über allem ein feines Schachbrettmuster.
Standalone auf der Quest
The Simpsons: Hit & Run — ein Fan-Port, der direkt auf der Quest läuft. Die eigenen Spieldateien kommen aufs Headset. Sie müssen unverändert sein: Ist ein Mod-Launcher vorinstalliert, muss der vorher raus.
Desktop im Headset
wayvr holt meinen Linux-Desktop als schwebende Fenster ins Headset, und WiVRn startet es automatisch. Praktisch, um kurz etwas nachzusehen, ohne das Headset abzunehmen.
Zuschauen auf der Leinwand
Im Wohnzimmer kann jeder mitschauen: Sunshine auf dem PC streamt den Desktop (mit dem Spiegelfenster des Spiels) an Moonlight auf dem Wohnzimmer-PC und den Beamer.
Der Haken ist der Ton. Sunshine macht beim Streamstart sein eigenes Audiogerät zum Standard, Spiele folgen dem Standard, und im Headset ist es still. Die Lösung: den Ton des Spiels an Headset und Stream gleichzeitig leiten — WirePlumber merkt sich das pro Spiel.
Was (noch) nicht läuft
- HITMAN 3 — braucht eine OpenVR-Funktion (
GetPosesForFrame), die xrizer, OpenComposite und VapoR alle nicht implementieren. Es gibt einen experimentellen xrizer-Branch; den im Auge behalten. - Hogwarts Legacy über UEVR — die Mod lädt, aber es kommt nie ein Bild im Headset an. DX12 ist die Mauer.
Die Einstellungen, die zählen
- Prüfen, welche API ein Spiel nutzt, bevor man es einrichtet:
openvr_api.dllim Spielordner heißt OpenVR (→ xrizer); eineopenxr_loader.dllund kein OpenVR heißt natives OpenXR (→ kein xrizer). - Den Encoder in WiVRn explizit auf
nvencstellen. Aufautohat er einen Software-Encoder gewählt, und alles war schwarz. gamescope: falsefür VR-Spiele in Lutris, sonst landet das Spiel in einem verschachtelten Compositor und kommt nie im Headset an.PRESSURE_VESSEL_IMPORT_OPENXR_1_RUNTIMES=1, damit das Spiel WiVRn aus Protons Container heraus sieht.XR_RUNTIME_JSONnicht auf einen Host-Pfad setzen.- Die echte exe starten. Unreal-Spiele haben oft einen kleinen Launcher im Hauptordner; Lutris
stattdessen auf
...-Win64-Shipping.exezeigen lassen. - Den Firewall-Port öffnen (9757) für WLAN. Das Headset findet den PC per mDNS und wartet dann ewig, wenn der Port blockiert ist. Über USB ist das egal.
- Kein Ton im Headset? Der Ton des Spiels ist auf dem Standardausgang gelandet. Einmal auf
wivrn.sinkverschieben (pactl move-sink-input), WirePlumber merkt es sich. - Auf den VRAM achten. Ein großes Spiel plus WiVRns Encoder plus der Desktop füllen die Grafikkarte schnell; das zeigt sich als Textur-Glitches und Ruckeln, nicht als Fehlermeldung.
- Automatisches Hand-Tracking ausschalten auf der Quest, sonst verschwinden die Hände, sobald sie von Controllern auf Hände umschaltet.
Auf der Liste
Blade & Sorcery, Red Matter 2, Into the Radius 2 und The Room VR sind installiert, aber noch nicht getestet.