Skip to content

Instantly share code, notes, and snippets.

@Chuyo2022
Last active January 30, 2026 18:31
Show Gist options
  • Select an option

  • Save Chuyo2022/09dc4d8404c2e8d638b20d3d2ccd0643 to your computer and use it in GitHub Desktop.

Select an option

Save Chuyo2022/09dc4d8404c2e8d638b20d3d2ccd0643 to your computer and use it in GitHub Desktop.
Bigscreen Beyond VR Setup Guide for Arch Linux (AMD Ryzen 9 7950X3D + RX 7900 XTX)

Bigscreen Beyond on Arch + Hyprland (AMD) — Persistent Setup & Troubleshooting Guide

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)

  1. Install missing runtimes (OpenXR/OpenVR + multilib pairs). Optional: gamescope, gamemode; optional: Monado, AMDVLK.
  2. In Steam, set Bigscreen Beyond Driver to Proton Experimental (or Proton ≥ 10) with PROTON_ENABLE_HIDRAW.
  3. If the driver can’t see the HMD, add a udev rule (35bd:0101), reload rules, replug HMD.
  4. Launch SteamVR; if lease/direct-mode issues occur, restart XWayland/compositor and retry.
  5. If double vision when moving: use Legacy Reprojection or set enableLinuxVulkanAsync=false.
  6. Verify 90 Hz; if using Monado/Envision, use XRT_COMPOSITOR_DESIRED_MODE=1.
  7. 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:

  1. Snapshot (snapper) before any kernel change; verify rEFInd snapshot boot entries exist.
  2. Build/install a kernel (linux or linux-zen) with LVRA’s EDID quirk patch adding NON_DESKTOP for the Bigscreen Beyond’s EDID.
  3. Keep current kernel installed as fallback. Boot the patched kernel only for VR testing.
  4. Validate that DRM lease works and windows no longer map to the HMD.
  5. 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)

  1. Hardware: DP cable to HMD; USB directly to motherboard; base stations powered.
  2. Software: Open Steam; ensure Beyond Driver is set to Proton Experimental; Launch Options include PROTON_ENABLE_HIDRAW=0x35BD/0x0101.
  3. Launch the Bigscreen Beyond Driver. Confirm device detection.
  4. Start SteamVR. Confirm HMD activates and head tracking responds.
  5. Test a lightweight VR app first; verify stable frame pacing and no double vision.
  6. Validate refresh rate (90 Hz preferred; 75 Hz fallback if needed). If using Monado/Envision, set XRT_COMPOSITOR_DESIRED_MODE accordingly and verify.
  7. 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

  1. Steam launch options for the Bigscreen Beyond Driver: PROTON_ENABLE_HIDRAW=0x35BD/0x0101 %command%

  2. Example udev rule (uaccess): ACTION=="add", KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="35bd", ATTRS{idProduct}=="0101", TAG+="uaccess", MODE="0660"

  3. SteamVR async reprojection mitigation (steamvr.vrsettings): { "steamvr": { "enableLinuxVulkanAsync": false } }

  4. Monado refreshrate selection (optional): XRT_COMPOSITOR_DESIRED_MODE=1 # 0=75 Hz, 1=90 Hz

  5. Per-title AMDVLK test (replace with actual JSON path as installed): VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/amd_icd64.json %command%

  6. Complete SteamVR tracker udev rules (/etc/udev/rules.d/60-steamvr.rules):

    SteamVR udev rules for proper VR hardware access

    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"

  7. 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 } }

  8. 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:

    Valve Vive controllers and trackers (Watchman dongles)

    SUBSYSTEM=="usb", ATTRS{idVendor}=="28de", ATTRS{idProduct}=="2101", MODE="0660", TAG+="uaccess"

    Valve VR Radio

    SUBSYSTEM=="usb", ATTRS{idVendor}=="28de", ATTRS{idProduct}=="2102", MODE="0660", TAG+="uaccess"

    Tundra tracker dongles

    SUBSYSTEM=="usb", ATTRS{idVendor}=="28de", ATTRS{idProduct}=="2300", MODE="0660", TAG+="uaccess"

    Generic Valve VR hardware

    SUBSYSTEM=="usb", ATTRS{idVendor}=="28de", MODE="0660", TAG+="uaccess"

    Ensure proper hidraw access

    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) ⚠️ KNOWN LIMITATION - NO RELIABLE FIX AVAILABLE

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) ⚠️ PROBLEMATIC - INCONSISTENT RESULTS

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):

  1. 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/
  2. Change runtime section from: "runtime": ["C:\vrclient\", "C:\vrclient"] to: "runtime": ["\??\unix/home/chuyo/.local/share/Steam/steamapps/common/SteamVR"]

  3. 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

⚠️ Known Issues:

  • 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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment