
修复在Linux系统上阻碍VR体验的常见问题。包括基础设置、性能优化及其他改进内容。 前言 本指南汇集了各类问题、解释说明、修复方法和优化技巧,内容排序不分先后。 若您能提供任何遗漏或错误信息,请留言告知,希望能让Linux平台上的VR体验更加普及。 所需条件 一个正常运行的Linux系统 性能足够强大的硬件 一款VR头显: 原生支持SteamVR(所需软件最少): Valve Index HTC Vive 其他(支持可靠性较低): Oculus Quest Oculus Quest 2 Oculus Rift DK Oculus Rift CV Oculus Rift S PICO 4 未列出的头显型号不一定不兼容,若您成功使用了其他型号,请留言说明。基础设置 对于原生支持SteamVR的头显,以下步骤即可满足需求。其他设备请参考无线头显和其他VR/XR硬件部分。 1. 通过Steam安装SteamVR,并在连接头显的情况下启动它 2. 按照屏幕上的说明操作 3. 启动游戏 希望这能直接正常运行。 如果在获取root权限的对话框处遇到问题,请参考SteamVR首次启动时卡在获取root权限部分。 无线头显 对于Oculus Quest和Quest 2等无线头显,请使用Air Light VR(ALVR)。 请注意此方法存在以下问题: * 音频流无法工作,需要单独使用耳机 * H.265编码并非最佳选择 比特率高于200 MB/s会导致不稳定 可能的解决方案: 引用自k0lor:根据我使用Quest 2的有线体验,如果你使用pipewire,可以通过音频路由工具(如helvum、Carla)手动路由音频。 在ALVR nightly(已编译版本)中,将“游戏音频”设置为“系统默认”(出于某些原因,将麦克风设为默认会导致我的系统崩溃,但“jack”模式可以正常工作)。游戏运行时,打开音频路由工具,将游戏输出连接到创建的“Pipewire ALSA”输入。 如果需要连接麦克风,将创建的音频源(名称随机)连接到游戏输入。 我仅在VRChat中测试过此方法。每次进入地图或头显休眠后,你需要重新路由麦克风输入,因为音频源会消失。 其他VR/XR硬件: 对于SteamVR或ALVR默认不支持的头显,你可能需要使用Monado和/或OpenHMD。本指南暂未涵盖相关设置步骤。 NVIDIA:使用专有驱动 开源的nouveau驱动功能尚未完善,且性能表现欠佳(不过这一情况很快会有所改变)。部分发行版如Pop!_OS或Linux Mint允许你在初始安装过程中安装NVIDIA专有驱动。 基于Ubuntu的发行版说明: 使用以下命令列出兼容的驱动: ubuntu-drivers devices 安装最新可用的驱动(例如510): sudo apt install nvidia-driver-510 重启X服务或计算机 使用以下命令验证驱动是否正确安装: nvidia-smi AMD:使用替代Vulkan驱动 注意:如果使用RADV以外的Vulkan驱动,使用OpenGL的游戏可能无法正常运行,此时显示会出现混乱。 根据驱动不同,部分游戏可能在渲染前崩溃,部分游戏可能提升性能。建议针对每个游戏单独测试以找到最佳组合。 Vulkan驱动简要概述待办事项:再次测试RADV与AMDVLK,RADV在此期间似乎有显著进步 RADV SteamVR所需驱动
开源
ééMesa
通常表现更差 AMDVLK
开源
可能比RADV表现更好
如果选择Proton 8或更新版本,游戏可能会崩溃。AMDGPU-PRO
AMDVLK 的专有等效版本
可能比RADV表现更好 安装说明:安装AMDVLK驱动,也可选择安装AMDGPU-PRO驱动,但后者不应在系统范围内安装,而是使用amdgpu-pro-vulkan-only。 由于AMD_VULKAN_ICD会导致问题,需将以下条目添加到/etc/environment,使RADV成为默认驱动: DISABLE_LAYER_AMD_SWITCHABLE_GRAPHICS_1=1 VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/radeon_icd.i686.json:/usr/share/vulkan/icd.d/radeon_icd.x86_64.json 若要为游戏使用AMDVLK或AMDGPU-PRO Vulkan驱动,仅为游戏(而非SteamVR)设置这些变量,如果是Steam游戏启动参数,需附加%command%: AMDVLK: VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/amd_icd32.json:/usr/share/vulkan/icd.d/amd_icd64.jsonjson AMDGPU-PRO(取决于其安装位置): VK_ICD_FILENAMES=/opt/amdgpu-pro/etc/vulkan/icd.d/amd_icd64.json:/opt/amdgpu-pro/etc/vulkan/icd.d/amd_icd32.json 重投影 重投影是一项核心VR技术,它通过优先保证头部移动的流畅性而非原始游戏性能来减轻晕动症。它对游戏性能的影响最大,并且存在失效的情况。 传统重投影模式已禁用 该模式适用于性能较低或波动较大的游戏。依赖异步重投影。
即使在游戏性能较低的情况下,头部移动依然流畅
为提升帧率稳定性而采用激进的FPS限制(仅影响SteamVR 1.14版本)(AMD) 传统(交错式)重投影模式 对于未从禁用该模式的稳定性中获益的游戏,建议使用此模式
游戏性能优化
大型性能下降(CPU启动延迟)会影响头部移动(并非特定于Linux系统) 异步重投影在不导致性能问题的情况下为首选(可能取决于硬件或由旧驱动程序引起),默认启用 与传统重投影模式相比没有区别 如果超出显存,系统将无法跟上,导致极度卡顿
在较新版本的SteamVR上运行异常,会导致画面出现瑕疵或完全无法显示(AMD显卡),建议切换至旧版本的SteamVR。 需要设置cap_sys_nice权限;取消该设置本质上会禁用此功能。 若要全局禁用,请参考“手动编辑配置”部分。在“steamvr”部分下,将此设置的值设为false: "enableLinuxVulkanAsync" : false 运动平滑:额外的异步重投影功能
目前在Linux系统上,AMD和NVIDIA显卡均无法使用
进一步提升异步重投影的流畅度 提升VR性能 为避免高延迟并最大化性能,你需要调整GPU电源配置文件和CPU调控器。 注意:在启动游戏后进行此操作可能更有益(请测试)。 对于AMD显卡,还请参考【AMD:使用替代Vulkan驱动程序】部分。 CoreCtrl 启动应用程序并授予root权限 导航至全局配置文件 在GPU下,将性能模式设置为固定并选择高

在CPU设置下,将频率调节模式设为性能模式

点击右上角的【应用】按钮 命令行界面方法 AMD显卡电源模式 以管理员权限运行以下所有命令。以下是确定您的GPU对应的DRM编号的步骤: 1. 执行命令:ls /sys/class/drm 2. 获取电源配置文件模式,查找与【VR】对应的编号:cat /sys/class/drm/card#/device/pp_power_profile_mode 3. 将性能级别设置为【手动】:echo "manual" > /sys/class/drm/card#/device/power_dpm_force_performance_level 4. 切换到【VR】电源配置文件,本例中为【4】:echo "4" > /sys/class/drm/card#/device/pp_power_profile_mode 5. 恢复更改:echo "auto" > /sys/class/drm/card#/device/power_dpm_force_performance_level CPU调控器(自动):只需使用Feral GameMode启动SteamVR和游戏:gamemoderun %command% CPU调控器(手动):以root身份运行以下命令。获取当前调控器: cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor 将其设置为“性能”模式: cpupower frequency-set --governor performance 恢复为之前的调控器: cpupower frequency-set --governor <previous_governor> 基站电源管理 注意:目前尚无法更新基站固件。如果尝试更新,该过程会提前结束,但截至撰写时不会导致基站变砖。 警告:如果每天使用VR,仅在较长时间休息时关闭基站,因为频繁启停电机会加速其磨损。 灯塔v2(Valve Index基站)通过蓝牙进行基站电源管理的问题已在最新版本的SteamVR中修复。不过,如果你使用较旧的基站型号,主要使用较旧的SteamVR版本或频繁更换版本,这可能会派上用场。以下是一张图表,可用于查找最佳方法:

选项A 安卓系统 使用灯塔电源管理安卓应用。可在F-Droid或Google Play获取。 Ubuntu Touch系统 使用灯塔控制Ubuntu Touch应用。可在OpenStore获取。 选项B 使用以下脚本之一(若主板缺少蓝牙功能,需使用蓝牙适配器): 基站v1:lhctrl 基站v2:lh2ctrl或biechl's script 选项C 你需要拔掉基站的电源。如果你的插头没有开关,或者你不想每次都手动拔插,智能插排是一个选择。 运行Windows游戏 大多数游戏没有原生Linux版本,有时Linux版本也缺乏维护。若要运行Windows游戏版本,请使用Proton。启用Steam Play/Proton: 1. 打开Steam,进入设置 2. 前往兼容性选项卡 3. 勾选【为支持的游戏启用Steam Play】和【为所有其他游戏启用Steam Play】

Switch Proton版本/强制使用游戏的Linux版本: 右键点击Steam中的游戏 选择属性... 进入兼容性选项卡 勾选强制使用特定Steam Play兼容性工具 从列表中选择要使用的Proton版本,若游戏有Linux版本则选择Steam Linux Runtime 要查看当前使用的Proton版本,在对应游戏页面点击信息按钮。兼容性设置会显示在该部分的底部。如果该部分底部没有文字,则表示正在使用原生版本。 要检查游戏兼容性,可以使用ProtonDB,用户会在那里留下兼容性报告以及修复无法直接运行游戏的方法。即使是有原生Linux版本的游戏,这也是一个有用的资源。手动编辑配置 注意:请使用正确的JSON格式!最重要的规则是,每个设置后必须跟一个逗号,除非它是该部分的最后一个设置。 如果SteamVR仪表盘/覆盖层因任何原因出现故障,可能需要编辑配置文件。此外,有些设置无法在用户界面内调整。 这是主要配置文件: ~/.steam/steam/config/steamvr.vrsettings 每个应用程序都有一个ID,格式如下:steam.app.<应用ID>、steam.overlay.<应用ID>、system.generated.<名称>、openvr.component.<名称>、openvr.tool.<名称>或自定义ID。 查找Steam游戏的应用ID: 右键点击Steam中的游戏 选择属性...前往更新标签页 记录下【应用ID】数字 部分可用设置及示例值: 【主导手】:2 【禁用异步】:false 【额外预测帧数】:0 【限制帧数】:0 【视场缩放】:100 【运动平滑覆盖】:0 【分辨率缩放】:60 【世界缩放】:1 全局设置 大多数设置应已存在于文件中。但以下设置需手动添加。 【steamvr】部分 【启用Linux Vulkan异步】:false 切换至旧版SteamVR SteamVR更新频繁,常引入重大问题。因此,使用旧版本可能更有利。 SteamVR版本对比 1.14.16 / linux_v1.14 / 1600466902
全面实现无瑕疵的异步重投影(AMD)
不支持异步重投影(NVIDIA)(已在1.18版本中实现)
如果所选的Proton版本高于5.13,许多游戏会在启动时崩溃,请参考【SteamVR 1.14版Windows游戏崩溃】部分。
在Wayland系统上似乎无法运行。请参考相关问题评论以修复vrwebhelper(UI后端)1.27.5/temp_v1.27.5/1693508082。
游戏内异步重投影功能(AMD)运行正常
由SteamVR渲染的任何内容(覆盖层:仪表盘、性能图表、加载屏幕等)均无法正确重投影,并会导致严重的视觉失真,详情请参考【SteamVR渲染失真(AMD)2.0+ / public/beta】部分。
包含全新用户界面
异步重投影导致无内容渲染,从而产生永恒黑暗(AMD)
在VR模式下进行游戏内视频设置和控制器绑定界面操作时性能表现不佳,请参考【控制器绑定界面在2.6.2+版本/公开测试版/1716600417版本中运行极其缓慢】章节。
异步重投影渲染正常(AMD) 待办事项 切换版本:右键点击Steam中的SteamVR 选择属性... 进入测试版标签页 在测试版参与部分,选择所需的SteamVR版本,本示例中为1.14

SteamVR首次启动时卡在获取root权限 SteamVR首次启动时,应该会弹出一个请求root权限的窗口。如果此步骤失败,请打开终端并输入以下命令: cd /path/to/SteamVR sudo setcap CAP_SYS_NICE=eip bin/linux64/vrcompositor-launcher 或者,只需在此文件中用sudo替换所有pkexec实例(前提是/etc/sudoers中的用户已设置NOPASSWD): ~/.local/share/Steam/steamapps/common/SteamVR/bin/vrstartup.sh 启动任何VR游戏均失败 如果安装并运行了SteamVR,最新版本的Steam客户端可能会出现异常。具体表现为:点击开始后立即失败,且在Steam控制台(-console -dev)中显示: LaunchApp failed with WaitingOpenVRAppQuit with "111" 修复方法很简单。目前,请不要通过Steam启动SteamVR,而是直接使用vrstartup.sh或vrstartup-helper.sh。 查找脚本的方法: 1. 在Steam中右键点击SteamVR 2. 依次选择管理 > 浏览本地文件 3. 进入bin目录 4. 为vrstartup.sh或vrstartup-helper.sh创建快捷方式以便快速访问,暂时使用此快捷方式启动SteamVR 控制器绑定界面运行极其缓慢 如果发现SteamVR控制器绑定界面运行缓慢且无响应,请改用浏览器打开。使用网址【127.0.0.1】访问该界面。 SteamVR渲染异常 此问题似乎与重投影直接相关。对于较新版本,可尝试以下方法: 1. 减少画面 artifacts(消除彩色线条):在启动选项前添加以下内容:RADV_DEBUG=nodcc 2. 全局禁用异步重投影:参考“手动编辑配置”部分。在“steamvr”部分下,将此设置的值设为 false:"enableLinuxVulkanAsync" : false 3. 重新安装 SteamVR,并每次都拒绝 root 访问 4. 优化脚本(根据版本不同,可能是 bin/vrstartup.sh 或 bin/vrsetup.sh):仅在使用 SteamVR 1.14 时才使用 setcap,这样还能更方便地切换版本 # 将 `function SteamVRLauncherSetup()` 的内容替换为以下内容 if [[ "$(cat $VRBINDIR/version.txt)" == *"1600466902"* && "$(getcap $STEAMVR_TOOLSDIR/bin/linux64/vrcompositor-launcher)" != *"cap_sys_nice"* ]] # v1.显示乱码 如果存在两个支持Vulkan的GPU,可能会出现此问题。 辅助GPU在VR方面可能表现更好,但在大多数游戏中选择特定GPU可能无法生效(请验证)。 修复方法: 安装Vulkan设备选择器将以下内容添加到SteamVR和你想要启动的游戏的启动选项中: ENABLE_DEVICE_CHOOSER_LAYER=1 VULKAN_DEVICE_INDEX=<设备索引> %command% 将<设备索引>替换为你的GPU的设备索引,你可以通过使用以下命令找到该索引: vulkaninfo --summary 无音频 问题在于当SteamVR启动时,头显扬声器/麦克风不会自动被设置为默认音频输入/输出,因为Linux版SteamVR目前没有音频设备或音量控制功能。 解决方法是将头显的音频输入和输出设置为默认音频设备。 KDE Plasma示例:

如果仍然无法正常运行: 获取pavucontrol并启动它 进入配置选项卡 将声卡(显卡)的配置文件设置为正确的DisplayPort/HDMI输出。在此示例中,选择HDMI 3。

注意:根据头显型号不同,可能只有在SteamVR运行时才能连接输入/输出设备。 如果你希望通过运行简短命令快速切换,可以将以下脚本添加到$PATH中的任意路径: #!/bin/bash # asw.sh - 音频切换器 # 使用方法:输入`asw h`切换至头显,输入`asw i`切换至Index # 可通过运行以下命令查找接收器和源名称: # pw-cli list-objects Node if [[ $1 = 'h' ]] # 头显或扬声器 then pactl set-default-sink "alsa_output.pci-XXXX_XX_XX.X.analog-stereo" pactl set-default-source "alsa_input.pci-XXXX_XX_XX.X.analog-stereo" elif [[ $1 = 'i' ]] # Index then pactl set-default-sink "alsa_output.pci-XXXX_XX_XX.X.hdmi-stereo-extra4" pactl set-default-source "alsa_input.usb-Valve_Corporation_Valve_VR_Radio___HMD_Mic_XXXXXXXXXX-LYM-01.mono-fallback" else echo "输入`asw h`选择头显,输入`asw i`选择Index" fi 你需要根据输出/输入设备ID替换你的设备ID,然后可以通过输入asw h选择头显/扬声器或asw i选择Index来运行脚本。 无麦克风输入 此问题在Valve Index上被发现,可能也会影响其他头显。 如果你使用PulseAudio,请将默认采样率设置为48 kHz: 编辑此文件: ~/.config/pulse/daemon.conf 添加此行: default-sample-rate = 48000 重启PulseAudio: pulseaudio -k 如果这样还不够,请根据相关页面编辑udev规则。 如果仍然无法解决,请参考【无音频】部分。 SteamVR 1.14版本下Windows游戏崩溃 如果选择Proton 5.13以上版本,部分Windows游戏,尤其是Unity OpenVR游戏会崩溃:

对于每个运行异常且你希望在当前SteamVR版本下游玩的Windows游戏,请选择Proton 5.13。

非特定于Linux体验的问题 本部分专门针对并非特定于Linux体验且未在指南其他部分提及的硬件或软件问题。 HDMI连接不稳定 如果您的头显通过HDMI连接,需要确保线缆与头显兼容。 如果发现仅在使用当前线缆后才开始出现问题,请尝试更换为原装线缆。以HTC Vive为例,以下是经确认可正常工作的线缆列表。 禁用传统重投影模式后出现严重卡顿 检查显存使用率。如果显存使用率接近100%,请降低游戏内设置,例如纹理分辨率和/或降低屏幕分辨率。就像游戏一样,异步重投影(asynchronous reprojection)运行时需要显存(VRAM),如果显存不足,所有内容都会严重卡顿。 已知问题及解决方案: - Valve Index摄像头在SteamVR中无法使用,尽管其他软件可以像访问普通网络摄像头一样访问它。 相关指南: - Linux平台VR指南:内容详尽且包含众多游戏专属条目 - Beat Saber模组 - VRChat优化调整 - 半衰期:爱莉克斯创意工坊工具 - Boneworks在Linux平台上的相关内容【致谢】 指南编辑: gibarel1 sit_up_straight plz uninstall (* ̄m ̄) RamsomOfThulcandra KCGD_r k0lor
2026-03-27 04:00:21 发布在
SteamVR
说点好听的...
收藏
0
0
