Created: 2025-08-21 Updated: 2025-08-22 (Added VR Tracker support, SteamVR stereo fixes, OVR Toolkit/Advanced Settings Proton fixes) System: AMD Ryzen 9 7950X3D + RX 7900 XT (RDNA3), Arch Linux, Hyprland/Wayland, SDDM Kernel (current): 6.16.2-arch1 Authoring scope: Planning-only document. No changes are made by this guide itself.
Summary and confidence (no custom kernel)
- Recognize HMD in Beyond Driver via Proton (with HIDRAW): moderate-high (~70%).
- Enter SteamVR with tracking and display: moderate (~60–70%).
- Stable 90 Hz across titles without further tweaks: moderate (~50–60%).
- If user-space mitigations fail and we allow EDID non-desktop kernel quirk patch: overall success rises to ~80–85%.
- Practical takeaway: High likelihood of achieving “first light” without a custom kernel. Kernel patch is a fallback only if direct-mode/lease keeps misbehaving.
Guiding principles (apply throughout)
- Edit ACTIVE configs first (in ~/.config/), not the dotfiles backup; sync to dotfiles only after success.
- Prefer non-disruptive steps; if a restart of compositor or system is required, create a session log first.
- Always make backups before editing configs; provide rollback steps.
- Keep everything compatible with AMD + Wayland; avoid NVIDIA/X11-only suggestions.
Quick checklist (first-light path)
- Install missing runtimes (OpenXR/OpenVR + multilib pairs). Optional: gamescope, gamemode; optional: Monado, AMDVLK.
- In Steam, set Bigscreen Beyond Driver to Proton Experimental (or Proton ≥ 10) with PROTON_ENABLE_HIDRAW.
- If the driver can’t see the HMD, add a udev rule (35bd:0101), reload rules, replug HMD.
- Launch SteamVR; if lease/direct-mode issues occur, restart XWayland/compositor and retry.
- If double vision when moving: use Legacy Reprojection or set enableLinuxVulkanAsync=false.
- Verify 90 Hz; if using Monado/Envision, use XRT_COMPOSITOR_DESIRED_MODE=1.
- Only if above fails repeatedly: consider EDID NON_DESKTOP kernel quirk patch.
Section 1 — Package prerequisites (non-invasive) Packages (install if missing):
- Required: openxr-loader, lib32-openxr-loader, openvr, lib32-openvr
- Helpful: gamescope, gamemode, lib32-gamemode
- Optional driver alternative: amdvlk, lib32-amdvlk
- Optional OpenXR runtime: monado, xr-hardware
Verification: pacman -Q If installing, prefer official repos; use yay only for AUR if needed.
Section 2 — Steam + Bigscreen Beyond Driver (Proton)
- Install the Bigscreen Beyond Driver from Steam.
- In Steam → Library → Bigscreen Beyond Driver → Properties:
- Force Proton Experimental (bleeding-edge) or Proton ≥ 10.
- Launch options (HIDRAW pass-through): PROTON_ENABLE_HIDRAW=0x35BD/0x0101 %command%
- Optional (per LVRA): If the app needs a Windows SteamVR inside its prefix for all features:
- Prefix path (appid 2467050): ~/.local/share/Steam/steamapps/compatdata/2467050/pfx
- Copy your Windows SteamVR into C:\ (inside the prefix), then in the driver UI set SteamVR path to that folder.
Sanity checks:
- HMD plugged on DisplayPort (no adapters), USB direct to motherboard.
- lsusb shows 35bd:0101 when plugged.
- Driver UI detects the device; if not, see Section 3.
Section 3 — HIDRAW permissions (common blocker) If the driver can’t access the Beyond over HIDRAW: A) Create udev rule (recommended: uaccess)
- File: /etc/udev/rules.d/99-bigscreen-beyond.rules
- Content (variant 1 — uaccess): ACTION=="add", KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="35bd", ATTRS{idProduct}=="0101", TAG+="uaccess", MODE="0660"
- Content (variant 2 — group input): ACTION=="add", KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="35bd", ATTRS{idProduct}=="0101", GROUP="input", MODE="0660" (Ensure your user is in the input group; log out/in afterwards.)
- Apply: udevadm control --reload; replug the HMD.
B) Verify
- lsusb -d 35bd:0101
- ls -l /dev/hidraw*
- dmesg -w while replugging (see permission/attach logs)
Section 4 — Direct mode / DRM lease under Wayland Symptoms: The HMD shows up in xrandr and SteamVR won’t grab it or windows spill onto the HMD display. Mitigations:
- Restart XWayland or your compositor (Hyprland). This often clears leasing conflicts.
- Try again with SteamVR launching after the Beyond Driver.
- Ensure no window rules force apps onto the HMD output.
Safety note: Restarting the compositor disrupts the session. Before doing that, create a warpchat log with timestamp (and next steps) so we can resume cleanly after.
Section 5 — Reprojection and double-vision (SteamVR > 1.14) If you see double vision when moving:
- Option 1: Enable Legacy Reprojection per game in SteamVR; reduce resolution until stable.
- Option 2: Edit ~/.steam/steam/config/steamvr.vrsettings and set: "steamvr": { "enableLinuxVulkanAsync": false }
Backup and rollback:
- Backup: copy steamvr.vrsettings to steamvr.vrsettings.backup
- Rollback: restore the backup if behavior worsens.
Section 6 — 75 Hz vs 90 Hz (Monado/Envision optional)
- If using Monado with an Envision profile, set: XRT_COMPOSITOR_DESIRED_MODE=0 # 75 Hz XRT_COMPOSITOR_DESIRED_MODE=1 # 90 Hz
- Verify with xrandr (with HMD connected): the top two modes correspond to these indices.
Section 7 — Controllers and Lighthouse
- Pair controllers in SteamVR.
- Ensure base station channels are 1/2 (avoid conflicts with neighbors).
- If tracking fails: verify HIDRAW permissions and that the Beyond Driver is running under Proton with HID access.
Section 8 — Audio (PipeWire)
- Use pavucontrol to set output to the desired device during testing.
- If mic isn’t present on the HMD, select an alternate microphone.
Section 9 — Performance helpers (optional but practical)
- gamescope for consistent frame pacing (wrap game launch) and gamemode for CPU/GPU scheduling hints.
- Per-title Vulkan driver testing:
- Default: RADV (Mesa) works well with SteamVR.
- Alternate: AMDVLK may reduce artifacts in some games; set per title via VK_ICD_FILENAMES to its JSON path.
- Avoid AMD_VULKAN_ICD global overrides (they can cause issues); use explicit VK_ICD_FILENAMES per app if needed.
Section 10 — Troubleshooting flow A) Beyond Driver can’t see HMD
- Confirm PROTON_ENABLE_HIDRAW=0x35BD/0x0101 is set for the app.
- Add the udev rule (Section 3), reload, replug, verify /dev/hidraw node.
- Try a different USB port (motherboard direct).
B) SteamVR doesn’t engage HMD / behaves like desktop monitor
- Restart XWayland/compositor and re-try launching the driver then SteamVR.
- If repeatedly failing: consider EDID non-desktop kernel quirk (Section 11).
C) Double vision on movement
- Use Legacy Reprojection or set enableLinuxVulkanAsync=false.
- Reduce resolution; validate with a low-load scene first.
D) Vulkan driver issues
- Baseline with RADV; test AMDVLK per game via VK_ICD_FILENAMES.
- Validate with vulkaninfo if needed.
E) USB/HID flakiness
- Replug HMD; watch dmesg for errors.
- Try alternate USB ports; avoid hubs; disable selective suspend temporarily if needed.
Section 11 — EDID non-desktop kernel quirk (fallback plan) Only if user-space steps fail and the HMD persistently acts like a desktop monitor with lease failures. Plan:
- Snapshot (snapper) before any kernel change; verify rEFInd snapshot boot entries exist.
- Build/install a kernel (linux or linux-zen) with LVRA’s EDID quirk patch adding NON_DESKTOP for the Bigscreen Beyond’s EDID.
- Keep current kernel installed as fallback. Boot the patched kernel only for VR testing.
- Validate that DRM lease works and windows no longer map to the HMD.
- If regressions appear, boot back to the prior kernel; remove the patched kernel.
Risk: Kernel building adds maintenance overhead and potential regressions. Use only if necessary.
Section 12 — First-light validation (step-by-step)
- Hardware: DP cable to HMD; USB directly to motherboard; base stations powered.
- Software: Open Steam; ensure Beyond Driver is set to Proton Experimental; Launch Options include PROTON_ENABLE_HIDRAW=0x35BD/0x0101.
- Launch the Bigscreen Beyond Driver. Confirm device detection.
- Start SteamVR. Confirm HMD activates and head tracking responds.
- Test a lightweight VR app first; verify stable frame pacing and no double vision.
- Validate refresh rate (90 Hz preferred; 75 Hz fallback if needed). If using Monado/Envision, set XRT_COMPOSITOR_DESIRED_MODE accordingly and verify.
- If any step fails, follow the Troubleshooting flow in Section 10.
Section 13 — Safety & rollback templates
- Before editing configs: cp ~/.steam/steam/config/steamvr.vrsettings ~/.steam/steam/config/steamvr.vrsettings.backup
- If a compositor restart is required, create a warpchat log with timestamp including planned next steps; restart; then continue from the log.
- If we ever test a kernel change, snapshot via snapper first; confirm rEFInd can boot snapshots.
Section 14 — Dotfiles sync policy
- Only after successfully validating changes in ~/.config/ (or app-specific config dirs), copy to ~/dotfiles/ and run your dotfiles sync script.
- Skip syncing machine-specific tweaks (USB port quirks, etc.).
Appendix A — Example snippets
-
Steam launch options for the Bigscreen Beyond Driver: PROTON_ENABLE_HIDRAW=0x35BD/0x0101 %command%
-
Example udev rule (uaccess): ACTION=="add", KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="35bd", ATTRS{idProduct}=="0101", TAG+="uaccess", MODE="0660"
-
SteamVR async reprojection mitigation (steamvr.vrsettings): { "steamvr": { "enableLinuxVulkanAsync": false } }
-
Monado refreshrate selection (optional): XRT_COMPOSITOR_DESIRED_MODE=1 # 0=75 Hz, 1=90 Hz
-
Per-title AMDVLK test (replace with actual JSON path as installed): VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/amd_icd64.json %command%
-
Complete SteamVR tracker udev rules (/etc/udev/rules.d/60-steamvr.rules):
SUBSYSTEM=="usb", ATTRS{idVendor}=="28de", ATTRS{idProduct}=="2101", MODE="0660", TAG+="uaccess" SUBSYSTEM=="usb", ATTRS{idVendor}=="28de", ATTRS{idProduct}=="2102", MODE="0660", TAG+="uaccess" SUBSYSTEM=="usb", ATTRS{idVendor}=="28de", ATTRS{idProduct}=="2300", MODE="0660", TAG+="uaccess" SUBSYSTEM=="usb", ATTRS{idVendor}=="28de", MODE="0660", TAG+="uaccess" SUBSYSTEM=="hidraw", ATTRS{idVendor}=="28de", MODE="0660", TAG+="uaccess"
-
SteamVR stereo fix configuration (steamvr.vrsettings): { "compositor" : { "disableAsync" : true, "enableLinuxVulkanAsync" : false, "forceFadeOnBadTracking" : false }, "steamvr" : { "allowDisplayPortModeSwitch" : false, "allowDisplayPortTraining" : false, "enableLinuxVulkanAsync" : false, "motionSmoothing" : false, "renderTargetMultiplier" : 1.0 } }
-
Proton OpenVR fix (openvrpaths.vrpath in each app's prefix): { "runtime": [ "\??\unix/home/chuyo/.local/share/Steam/steamapps/common/SteamVR" ] }
Section 15 — VR Tracker Support (NEW 2025-08-22) For Vive Trackers with SteamVR on Linux:
A) Install SteamVR udev rules for tracker dongles:
-
File: /etc/udev/rules.d/60-steamvr.rules
-
Content:
SUBSYSTEM=="usb", ATTRS{idVendor}=="28de", ATTRS{idProduct}=="2101", MODE="0660", TAG+="uaccess"
SUBSYSTEM=="usb", ATTRS{idVendor}=="28de", ATTRS{idProduct}=="2102", MODE="0660", TAG+="uaccess"
SUBSYSTEM=="usb", ATTRS{idVendor}=="28de", ATTRS{idProduct}=="2300", MODE="0660", TAG+="uaccess"
SUBSYSTEM=="usb", ATTRS{idVendor}=="28de", MODE="0660", TAG+="uaccess"
SUBSYSTEM=="hidraw", ATTRS{idVendor}=="28de", MODE="0660", TAG+="uaccess"
-
Apply: sudo udevadm control --reload-rules && sudo udevadm trigger
-
Verify: ls -la /dev/bus/usb//** (check for + at end indicating ACL set)
-
Test: Restart SteamVR after applying rules
Section 16 — Known Issue: SteamVR Dashboard Stereo Offset (UPDATED 2025-08-22)
Symptom: SteamVR dashboard appears with vertical stereo offset (~30px, approximately title bar height)
- Left eye view appears higher than right eye view in SteamVR menu ONLY
- VR world and all games render perfectly - this affects ONLY the SteamVR dashboard
- Issue is specific to Bigscreen Beyond + Linux combination
Tested Solutions (All UNSUCCESSFUL):
❌ Compositor async settings modifications
❌ Dashboard-specific overlay configurations
❌ SteamVR beta channel
❌ IPD adjustments (Beyond has fixed IPD anyway)
❌ Waybar/UI interaction fixes
❌ Various steamvr.vrsettings modifications
Community Status:
- Documented across r/BigscreenVR, r/SteamVR, Linux VR forums
- No consistent fix found by community members
- Affects Beyond + Linux users specifically
- Windows Beyond users do not report this issue
Recommendation: ✅ Accept as cosmetic limitation - VR gaming experience is unaffected ✅ Monitor for future driver/SteamVR updates that might address it ❌ Do NOT modify compositor settings - risks breaking the perfectly working VR world rendering
💡 Workaround: Minimize time in SteamVR dashboard - use SteamVR binding/shortcut keys for quick access to settings
Section 17 — OVR Toolkit & OVR Advanced Settings Proton Issues (UPDATED 2025-08-22)
Issue: OVR apps show "Failed to connect to SteamVR" under Proton due to OpenVR path conflicts
Attempted Solutions: A) OpenVR Path Fixes (Temporary success, often reverts):
-
Edit openvrpaths.vrpath in each Proton prefix:
- OVR Toolkit: /mnt/steam-drive/SteamLibrary/steamapps/compatdata/1068820/pfx/drive_c/users/steamuser/AppData/Local/openvr/
- OVR Advanced Settings: /mnt/steam-drive/SteamLibrary/steamapps/compatdata/1009850/pfx/drive_c/users/steamuser/AppData/Local/openvr/
-
Change runtime section from: "runtime": ["C:\vrclient\", "C:\vrclient"] to: "runtime": ["\??\unix/home/chuyo/.local/share/Steam/steamapps/common/SteamVR"]
-
Create OpenVR API symlinks in both system32/ and syswow64/: ln -sf openvr_api_dxvk.dll openvr_api.dll
B) Persistence Script: /home/chuyo/warpchat/vr-fixes-script.sh
- Re-applies fixes when Steam overwrites them
- Run after each SteamVR restart if apps fail to connect
- Steam/Proton frequently overwrites openvrpaths.vrpath files
- Fixes may work initially but break after SteamVR restarts
- No permanent solution found for Proton + native SteamVR communication
📝 Status: Use script as needed, expect intermittent connectivity issues
Section 18 — Bigscreen Beyond Driver SteamVR Path Fix (NEW 2025-08-22) If Bigscreen Beyond driver shows "Invalid SteamVR folder":
A) Create symlink in accessible location: ln -sf "/home/chuyo/.local/share/Steam/steamapps/common/SteamVR" "/mnt/steam-drive/New folder/SteamVR"
B) In Beyond driver settings, update SteamVR path to: Z:\New folder\SteamVR
This creates a Windows-accessible path to your Linux SteamVR installation.
Open questions to capture during execution
- Controllers in use (Index vs others)?
- Titles you want to test first (to prepare per-game launch options)?
- Preferred udev approach: uaccess vs input group?
- Whether to set up Monado/Envision for OpenXR-native apps now or later.
End of guide.