SteamVR-for-Linux
SteamVR-for-Linux copied to clipboard
[BUG] No image in headset since 1.11.8
Describe the bug
SteamVR has stopped working since the latest beta update.
To Reproduce
Steps to reproduce the behavior:
- Start SteamVR
- See a new window showing both left-right eye that I've never seen before (separate from the "VR view", which is simultaneously visible.
- See green light on side of HTC Vive.
- See that headset display is not powered on (not even 'displaying black', but it's off)
Expected behavior
SteamVR to be happily working as it was yesterday :smile:
System Information (please complete the following information):
Distribution: Ubuntu 18.04.4
SteamVR version: beta 1.11.8
Steam client version: Apr 8 2020, at 20:52:25
Opted into Steam client beta?: Yes
Graphics driver version: nvidia 440.64
Gist for SteamVR System Information: I don't want to provide this right now. It's a Vive HTC.
Screenshots
There is a Headset Notice:
SteamVR has detected your headset running as a monitor. For best results, please switch to Direct Display Mode.
Clicking this button does not appear to have an effect. Subsequently clicking "Restart headset" causes the whole machine to hang.
I can report that unplugging the headset and plugging it into a different displayport socket on the GPU seems to have fixed things.
The behaviour of steamvr when following the instructions before I did this was unfortunate, so I guess this is a bug; but I understand if this is closed without further resolution.
Same problem on Ubuntu 19.10. System - intel nuc hades canyon NUC8i7HNK Intel(R) Core(TM) i7-8705G, Radeon RX Vega M GL 16Gb RAM. HTC Vive (first gen). Connected via HTMI. Detected as monitor on lock screen (and all ui rendered on Vive display). After login it goes black. No picture, tried to change slots, no luck. SteamVR on the same machine on windows10 works perfectly.
At least for me, I think the issue was that my cable was not seated properly. I encountered this again, and this time the reason was almost certainly that it the video cable was not plugged in all the way.
Same problem on Ubuntu 19.10. System - intel nuc hades canyon NUC8i7HNK Intel(R) Core(TM) i7-8705G, Radeon RX Vega M GL 16Gb RAM. HTC Vive (first gen). Connected via HTMI. Detected as monitor on lock screen (and all ui rendered on Vive display). After login it goes black. No picture, tried to change slots, no luck. SteamVR on the same machine on windows10 works perfectly.
A bit unrelated, but by any chance, have you tried it on Ubuntu 18.04 with NUC hades canyon? Is it producing similar behavior?
I think I'm hitting this same bug, although my hardware and software configuration is completely different:
Distribution: ArchLinux Desktop environment: KDE Headset: Valve Index (just unboxed and executed firmware update)
Steam client version: Aug 20 2020, at 22:45:24 Opted into Steam client beta?: Yes SteamVR version: 1.13.10, I guess? I see "vrstartup 1.13.10" in the console" but I don't see a version number anywhere else)
Linux kernel 5.8.3-arch1-1 mesa 20.1.6-1 vulkan-radeon 20.1.6-1 xf86-video-amdgpu 19.1.0-2
I see this warning, and clicking the "Enable Direct Display Mode" button restarts SteamVR, but nothing else happens:
One more thing: I see the headset in xrandr, but it's marked "disconnected":
Screen 0: minimum 320 x 200, current 3440 x 1440, maximum 16384 x 16384 DisplayPort-0 disconnected (normal left inverted right x axis y axis) 2880x1600 90.00 + 144.00 120.02 80.00 1920x1200 90.00 1920x1080 90.00 1600x1200 90.00 1680x1050 90.00 1280x1024 90.00 1440x900 90.00 1280x800 90.00 1280x720 90.00 1024x768 90.00 800x600 90.00 640x480 90.00 DisplayPort-1 connected primary 3440x1440+0+0 (normal left inverted right x axis y axis) 819mm x 346mm 3440x1440 59.97*+ 99.98 30.00 3840x2160 60.00 50.00 59.94 30.00 25.00 24.00 29.97 23.98 2560x1080 100.00 60.00 59.94 1920x1200 59.97 1920x1080 99.92 60.00 60.00 50.00 59.94 30.00 25.00 24.00 29.97 23.98 1600x1200 59.97 1680x1050 59.95 1600x900 60.00 1280x1024 75.02 60.02 1440x900 59.97 1280x800 59.81 1152x864 75.00 1280x720 60.00 50.00 59.94 1024x768 75.03 60.00 832x624 74.55 800x600 75.00 60.32 720x576 50.00 720x480 60.00 59.94 640x480 75.00 60.00 59.94 720x400 70.08 DisplayPort-2 disconnected (normal left inverted right x axis y axis) HDMI-A-0 disconnected (normal left inverted right x axis y axis) DisplayPort-1-3 disconnected (normal left inverted right x axis y axis) DisplayPort-1-4 disconnected (normal left inverted right x axis y axis) DisplayPort-1-5 disconnected (normal left inverted right x axis y axis) HDMI-A-1-1 disconnected (normal left inverted right x axis y axis)
If I set the headset output to desktop mode, the headset is recognized as a regular screen and can be configured as a second screen besides the primary one:
xrandr --output DisplayPort-0 --set non-desktop 0
This confirms that the headset and the cable are working properly, but there must be some software issue. I'll try installing the latest SteamVR beta as soon as I figure out how to opt-in.
I'm a Linux engineer. Happy to run any commands or collect any logs that might help debug this issue.
Hello @codewiz, you might be seeing the behavior I see on my VR test box when vrcompositor wrongly uses the Intel chipset to render instead of the AMD chipset that the HMD is attached to. As a quick test, you can check if you have intel_icd.x86_64.json
and move it aside with something like sudo mv /usr/share/vulkan/icd.d/intel_icd.x86_64.json /usr/share/vulkan/icd.d/intel_icd.x86_64.json.disabled
.
Thanks for the suggestion, @kisak-valve. I only have the radeon_icd:
% ll /usr/share/vulkan/icd.d/
.rw-r--r-- root root 149B Thu Aug 20 18:20:04 2020 radeon_icd.i686.json
.rw-r--r-- root root 147B Thu Aug 20 17:47:25 2020 radeon_icd.x86_64.json
However, perhaps crucially, this machine has two Radeon Vega 64 cards installed:
% lspci | grep AMD
01:00.0 PCI bridge: Advanced Micro Devices, Inc. [AMD] Vega 10 PCIe Bridge (rev c1)
02:00.0 PCI bridge: Advanced Micro Devices, Inc. [AMD] Vega 10 PCIe Bridge
03:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Vega 10 XL/XT [Radeon RX Vega 56/64] (rev c1)
03:00.1 Audio device: Advanced Micro Devices, Inc. [AMD/ATI] Vega 10 HDMI Audio [Radeon Vega 56/64]
04:00.0 PCI bridge: Advanced Micro Devices, Inc. [AMD] Vega 10 PCIe Bridge (rev c1)
05:00.0 PCI bridge: Advanced Micro Devices, Inc. [AMD] Vega 10 PCIe Bridge
06:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Vega 10 XL/XT [Radeon RX Vega 56/64] (rev c1)
06:00.1 Audio device: Advanced Micro Devices, Inc. [AMD/ATI] Vega 10 HDMI Audio [Radeon Vega 56/64]
Should I try unplugging (or powering off) the second one to see if it helps?
Physically unplugging the second card solved the issue. So it looks like SteamVR is picking the wrong card...
Everything else works fine when both cards are plugged, including vkcube and X-Plane with the Vulkan renderer.
Physically unplugging the second card solved the issue. So it looks like SteamVR is picking the wrong card...
Correction: I'm getting the same issue again today even with a single card. Looks like rebooting made things work once, but not reliably.
afaict, this is the log showing the problem:
Mon Aug 24 2020 14:52:29.499130 - Looking for direct display through RandR Mon Aug 24 2020 14:52:29.499143 - - Root 0x6d4 Mon Aug 24 2020 14:52:29.500559 - - Output 0x55 - 48 modes, 1 preferred Mon Aug 24 2020 14:52:29.500584 - - Mode 0 0x5a 3440x1440 (looking for 2880x1600) Mon Aug 24 2020 14:52:29.500615 - - Output 0x56 - 0 modes, 0 preferred Mon Aug 24 2020 14:52:29.500698 - - Output 0x57 - 0 modes, 0 preferred Mon Aug 24 2020 14:52:29.500734 - - Output 0x58 - 0 modes, 0 preferred Mon Aug 24 2020 14:52:29.500749 - Tried to find direct display through RandR: (nil) Mon Aug 24 2020 14:52:29.500759 - Looking for direct display through Vulkan WSI Mon Aug 24 2020 14:52:29.500772 - Tried to find direct display through Vulkan WSI: (nil) Mon Aug 24 2020 14:52:29.500781 - CHmdWindowSDL: Failed to create direct mode surface Mon Aug 24 2020 14:52:29.501011 - Requesting 10 device extensions: Mon Aug 24 2020 14:52:29.501022 - - VK_KHR_swapchain Mon Aug 24 2020 14:52:29.501030 - - VK_KHR_maintenance1 Mon Aug 24 2020 14:52:29.501038 - - VK_KHR_dedicated_allocation Mon Aug 24 2020 14:52:29.501045 - - VK_KHR_get_memory_requirements2 Mon Aug 24 2020 14:52:29.501052 - - VK_KHR_external_memory Mon Aug 24 2020 14:52:29.501060 - - VK_KHR_external_semaphore Mon Aug 24 2020 14:52:29.501067 - - VK_EXT_display_control Mon Aug 24 2020 14:52:29.501074 - - VK_KHR_external_memory_fd Mon Aug 24 2020 14:52:29.501081 - - VK_KHR_external_semaphore_fd Mon Aug 24 2020 14:52:29.501089 - - VK_EXT_global_priority Mon Aug 24 2020 14:52:29.501096 - Attempting to enable async support... Mon Aug 24 2020 14:52:29.501103 - Enabling async support! Mon Aug 24 2020 14:52:29.511162 - m_pVkInstance : 0x29ff1b0 Mon Aug 24 2020 14:52:29.511201 - m_pVkPhysicalDevice : 0x2baf930 Mon Aug 24 2020 14:52:29.511211 - m_pVkDevice : 0x2ba13c0 Mon Aug 24 2020 14:52:29.511219 - m_pVkGraphicsQueue : 0x28cb200 Mon Aug 24 2020 14:52:29.511227 - m_pVkComputeQueue : 0x2b676b0 Mon Aug 24 2020 14:52:29.515416 - HMD swapchain mode:1 count:4 Mon Aug 24 2020 14:52:29.530524 - Direct mode: disabled
Oh... this time the HMD did not show at all in the xrandr output. I just unplugged and re-plugged the DisplayPort connector, and now it works.
Could it be a bug or some sort of race-condition in the amdgpu connector hot-plug logic? Or in the HMD firmware?
I have observed that sometimes the LEDs on the headset will be red. If they are red, this problem manifests. If I unplug and replug the headset, typically the headset LEDs go blue. Then everything works (with a complete restart of steamvr and steam, breaking out pkill -9 if necessary).
I just got a brand new Valve Index and can reproduce this issue. Running Kubuntu 20.04 with the SteamVR and Mesa ppa's from Kisak enabled. No image in headset, Steam unwilling to actually turn on direct mode, and I can view whatever the display is supposed to see normally as a window on my desktop.
I guess for now I'll have to get a Windows installation from somewhere as my headset is unusable so far...
Hello @PureTryOut, do you have an Intel cpu + AMD gpu system? I've seen that behavior in the past if vrcompositor started up on the Intel GPU while the HMD is attached to the AMD GPU. As a test you can try sudo mv /usr/share/vulkan/icd.d/intel_icd.x86_64.json /usr/share/vulkan/icd.d/intel_icd.x86_64.json.disabled
which disables 64 bit vulkan on the Intel GPU. (from my legacy notes on https://launchpad.net/~kisak/+archive/ubuntu/steamvr)
No it's a Ryzen R7 1700 with a RX 580, no Intel components are present on this system.
It seems I can't even install Windows on this PC, missing drivers or something, idk. So I now have a useless €1000 headset :sob:
Is there anything I can do to help debug this further?
As mentioned, this is a full AMD system so Intel can't be an issue here. My system normally runs Alpine Linux on which Steam (sadly) doesn't run so I'm trying this in both a Debian chroot and on a Kubuntu 20.04 installation from an external hard disk (although that fact is irrelevant to this, I normally run it in Flatpak but that has different issues currently). Both methods cause the exact same behaviour: Steam realizes the headset is not in direct mode and offers to enable it, tries to restart SteamVR (which it often fails at and I have to manually launch it again, but not always) only to then realize again that the system is still not in direct mode. The image on the headset itself stays black all this time, I don't think it's even turned on. I can however move the headset around and see it move on the window on my normal monitors, so at least tracking is working normally.
Here is why the display shows as disconnected.
Option "AllowHMD" "string"
Most Virtual Reality Head Mounted Displays (HMDs), such as the HTC VIVE, require special image processing. This means it is usually undesirable to display the X11 desktop on an HMD. By default, the NVIDIA X driver will treat any detected HMDs as disconnected. To override this behavior, set the X configuration option "AllowHMD" to "yes", or explicitly list the HMDs to allow (any other HMDs will continue to be ignored).
Examples: Option "AllowHMD" "yes" Option "AllowHMD" "HDMI-0, HDMI-1"
In my case, steamVR chooses my main display instead of my valve Index.
Here is the log from ~/.steam/steam/logs/vrcompositor.txt .
Thu Oct 22 2020 22:24:53.138781 - HMD deviceUUID is dfd8168775644ebf
Thu Oct 22 2020 22:24:53.138838 - Looking for direct display through RandR
Thu Oct 22 2020 22:24:53.138857 - - Root 0x293
Thu Oct 22 2020 22:24:53.158667 - - Output 0x27d - 0 modes, 0 preferred
Thu Oct 22 2020 22:24:53.158754 - - Output 0x27e - 12 modes, 1 preferred
Thu Oct 22 2020 22:24:53.158772 - - Mode 0 0x27f 1600x900 (looking for 2880x1600)
Thu Oct 22 2020 22:24:53.158829 - - Output 0x28b - 0 modes, 0 preferred
Thu Oct 22 2020 22:24:53.158881 - - Output 0x28c - 0 modes, 0 preferred
Thu Oct 22 2020 22:24:53.158935 - - Output 0x28d - 0 modes, 0 preferred
Thu Oct 22 2020 22:24:53.158975 - - Output 0x28e - 0 modes, 0 preferred
Thu Oct 22 2020 22:24:53.158999 - Tried to find direct display through RandR: (nil)
Thu Oct 22 2020 22:24:53.159018 - Looking for direct display through Vulkan WSI
Thu Oct 22 2020 22:24:53.180064 - - Vulkan output 0: 1600x900 resolution, 440x250 dimensions - BenQ G2025HD (DVI-I-1)
Thu Oct 22 2020 22:24:53.180132 - Tried to find direct display through Vulkan WSI: (nil)
Thu Oct 22 2020 22:24:53.180154 - CHmdWindowSDL: Failed to create direct mode surface
The "AllowHMD" option is clearly meant to remove the HMD from xrandr. Even when enabled with nvidia-xconfig --allow-hmd=yes
, it shows as connected but has still no modes.
So, I expect that the HMD is supposed to be found through Vulkan WSI, but it is not.
Just to be sure, have you tried the "Restart headset" menu entry in SteamVR? Sometimes I'm seeing the same behavior you are describing here on Fedora 32 on my Index when starting SteamVR directly after powering the headset. The display stays off, but Motion tracking works, the Index led's on the front are red indicating an initialization error. When that happens I’m using the "Restart headset" menu entry and everything starts fine after that.
(Sorry if you have already tried this, which i guess you have, I just wanted to mention this to be sure)
Yes I have, nothing helps. Note that although the Index's display stays off, the image that's supposed to appear on there shows up on the desktop instead. And no that's not the view mirroring feature.
Yes I have, nothing helps. Note that although the Index's display stays off, the image that's supposed to appear on there shows up on the desktop instead. And no that's not the view mirroring feature.
Yeah I know which window you mean. I’m seeing that too once in a while next to the mirror. Though as stated, restarting the headset resolves it for me. Sorry that I couldn’t really contribute to your actual issue.
I've been messing around with VR more, and at least OpenXR in combination with the Monado runtime works fine. SteamVR Beta (so also an OpenXR implementation) however has the same bug as the OpenVR version.
Whatever it is, switching SteamVR from OpenVR to OpenXR doesn't fix it. Hopefully at some point Steam will support Monado as the official OpenXR runtime, at least on Linux.
I have also tried to "Reset Headset" without success. I also have the valve display off and a window on my main screen, showing what should be in the headset. The lights on the Index are blue.
Problem solved here. You can have more X logs with startx -- -logverbose 6
.
Then, check your logs (less /var/log/Xorg.0.log
).
Look for a line with "Building ModePool for <your headset>".
In my case, I get
[ 27734.618] (II) NVIDIA(GPU-0): --- Building ModePool for Valve Corporation Index HMD (DFP-4)
[ 27734.618] (II) NVIDIA(GPU-0): ---
[ 27734.618] (**) NVIDIA(GPU-0): Mode Validation Overrides for Valve Corporation Index HMD
[ 27734.618] (**) NVIDIA(GPU-0): (DFP-4):
[ 27734.618] (**) NVIDIA(GPU-0): AllowNonEdidModes
[ 27734.618] (WW) NVIDIA(GPU-0): Validating Mode "2880x1600_90":
[ 27734.618] (WW) NVIDIA(GPU-0): Mode Source: EDID
[ 27734.618] (WW) NVIDIA(GPU-0): 2880 x 1600 @ 90 Hz
[ 27734.618] (WW) NVIDIA(GPU-0): Pixel Clock : 686.00 MHz
[ 27734.618] (WW) NVIDIA(GPU-0): HRes, HSyncStart : 2880, 2888
[ 27734.618] (WW) NVIDIA(GPU-0): HSyncEnd, HTotal : 2920, 2960
[ 27734.618] (WW) NVIDIA(GPU-0): VRes, VSyncStart : 1600, 2565
[ 27734.618] (WW) NVIDIA(GPU-0): VSyncEnd, VTotal : 2571, 2575
[ 27734.618] (WW) NVIDIA(GPU-0): Sync Polarity : -H -V
[ 27734.618] (WW) NVIDIA(GPU-0): ViewPort 2880x1600 exceeds hardware capabilities.
[ 27734.618] (WW) NVIDIA(GPU-0): Mode is rejected: GPU extended capability check failed.
[ 27734.618] (WW) NVIDIA(GPU-0): GPU extended capability check failed.
[ 27734.618] (WW) NVIDIA(GPU-0): Mode "2880x1600_90" is invalid.
[ 27734.618] (WW) NVIDIA(GPU-0):
...
The headset is actually detected, and the supported modes are detected as well, but my GPU does not support the high resolution. I have received the headset before my new GPU and I have been trying with my old GPU.
If xrandr
doesn't show any modes for your headset, check those logs as well to see why.
I doubt that is the issue for me (I can't check currently, will do tomorrow), as the same setup works fine for me on Windows (3x 1080p monitor and the Valve Index), literally just not on Linux. Also, you use NVIDIA while myself and the others here seem to use AMD, that might be a cause for the issue as well.
Can any Valve employee mention something here about the status of this bug? I've payed €1079 for this headset but it's a paper weight on Linux. Should I contact support directly to get some employees on this bug actively?
If the display works in monado this will be some sort of SteamVR issue. If you can create a SteamVR system report (SteamVR menu -> Create System Report), that could give a hint. (it will include ~/.local/share/Steam/logs/vrcompositor.txt where the most relevant output should be).
btw: The "Enable Direct Mode" button doesn't do anything on Linux. If the Vulkan direct mode extension can be successfully used, you get direct mode, if it fails, you get extended mode.