Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[BUG] No image in headset since 1.11.8 #334

Open
pwaller opened this issue Apr 11, 2020 · 72 comments
Open

[BUG] No image in headset since 1.11.8 #334

pwaller opened this issue Apr 11, 2020 · 72 comments
Labels

Comments

@pwaller
Copy link

pwaller commented Apr 11, 2020

Describe the bug

SteamVR has stopped working since the latest beta update.

To Reproduce

Steps to reproduce the behavior:

  1. Start SteamVR
  2. See a new window showing both left-right eye that I've never seen before (separate from the "VR view", which is simultaneously visible.
  3. See green light on side of HTC Vive.
  4. 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 😄

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.

Screenshot from 2020-04-11 21-15-59

Clicking this button does not appear to have an effect. Subsequently clicking "Restart headset" causes the whole machine to hang.

@pwaller pwaller added the bug label Apr 11, 2020
@pwaller
Copy link
Author

pwaller commented Apr 11, 2020

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.

@kolombet
Copy link

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.

@pwaller
Copy link
Author

pwaller commented Apr 27, 2020

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.

@fajarnugroho93
Copy link

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?

@codewiz
Copy link

codewiz commented Aug 23, 2020

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:

image

@codewiz
Copy link

codewiz commented Aug 23, 2020

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)

@codewiz
Copy link

codewiz commented Aug 23, 2020

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.

@kisak-valve
Copy link
Member

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.

@codewiz
Copy link

codewiz commented Aug 23, 2020

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?

@codewiz
Copy link

codewiz commented Aug 23, 2020

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.

@codewiz
Copy link

codewiz commented Aug 24, 2020

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.

@codewiz
Copy link

codewiz commented Aug 24, 2020

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

@codewiz
Copy link

codewiz commented Aug 24, 2020

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?

@pwaller
Copy link
Author

pwaller commented Aug 31, 2020

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

@PureTryOut
Copy link

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

@kisak-valve
Copy link
Member

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)

@PureTryOut
Copy link

No it's a Ryzen R7 1700 with a RX 580, no Intel components are present on this system.

@PureTryOut
Copy link

It seems I can't even install Windows on this PC, missing drivers or something, idk. So I now have a useless €1000 headset 😭

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.

@godefv
Copy link

godefv commented Oct 22, 2020

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"

@godefv
Copy link

godefv commented Oct 22, 2020

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.

@jp7677
Copy link

jp7677 commented Oct 23, 2020

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)

@PureTryOut
Copy link

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.

@jp7677
Copy link

jp7677 commented Oct 23, 2020

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.

@PureTryOut
Copy link

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.

@godefv
Copy link

godefv commented Oct 23, 2020

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.

@godefv
Copy link

godefv commented Oct 25, 2020

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.

@PureTryOut
Copy link

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.

@PureTryOut
Copy link

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?

@ChristophHaag
Copy link
Contributor

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.

@fred-aero
Copy link

Oddly, I've only started experiencing this issue in the past couple of weeks or so, but I have found that I don't have this problem if the index is plugged in at system boot. Also, as far as audio (I think this is specific to Ubuntu 20.04), I've found that, If I open SteamVR, set the audio out device to the headset, close steamvr and restart, audio works as desired. I suspect the culprit of audio issues to either be pulseaudio or alsa, because I've had issues with audio devices in Ubuntu 20.04 in general outside of SteamVR.

@Atemu
Copy link

Atemu commented Feb 28, 2021

I don't have this problem if the index is plugged in at system boot

Mine is plugged in at boot aswell.

I've got mine in a 3.1 port though because its controller is in a separate iommu group which makes passthrough to the VM simpler. Maybe that makes a difference? Shouldn't though.

If I open SteamVR, set the audio out device to the headset, close steamvr and restart, audio works as desired.

Well yeah, setting the audio device manually obviously works around the problem of SteamVR not switching it automatically.

@kivoli
Copy link

kivoli commented Apr 2, 2021

Alternative work-around instead of re-plugging or rebooting: Standby.

I've been having this issue from the beginning (March 2020) as well but figured out quickly that this mostly happens after my computer has run for some time but not after when freshly booted or resumed from stand-by — with the Index permanently plugged in, that is.

For me this is reminiscent of the missing GPU function level reset issues I had with VFIO passthrough in the past where one could trigger a GPU reset by going to stand-by and resuming. I have no idea if this is somehow related though and it also does not work every time.

My system consists of AMD a Ryzen 7 3700X and a Vega 56 using AMDGPU and X11 on Arch Linux.

@PureTryOut
Copy link

Nope, for me it happens right after bootup too, it doesn't matter how long my PC has been running.

@Atemu
Copy link

Atemu commented Apr 7, 2021

I suspend my PC very often and this is still an issue.

Sometimes it just works for seemingly no reason but I haven't found a reliable way to force that to happen yet.

Also, my GPU doesn't have the reset bug.

@PureTryOut
Copy link

@Atemu After putting the refreshrate lines in the xorg.conf, you mentioned SteamVR add it's own resolutions on top of that? For me that doesn't happen and instead it starts rendering to a window on my desktop again rather than to the headset. That is, after restarting a few times to get around the SteamVR 303 error 😒 Reverting back to the single line you reported earlier makes it work again, but with the 90hz problem again. It makes me physically sick to use that way, so I count it as unusable.

@kisak-valve could you please give an update on this issue? Is Valve looking for a fix at all? A full year plus 3 months after OP reporting the issue and 3 quarters of a year after me buying this very expensive headset I still can't properly use it on Linux and to use it at all we have to apply nasty workarounds that don't work well either.

@kisak-valve
Copy link
Member

Hello @PureTryOut, friendly reminder that I'm a moderator for Valve's issue trackers on Github, and not a Valve developer myself. We'll need to hear from a SteamVR dev regarding this issue.

@PureTryOut
Copy link

Ah I did not know that, sorry. I'm just getting tired of this issue, it isn't a cheap headset... Is there any dev I could ping to get some attention then?

@lostgoat
Copy link
Collaborator

lostgoat commented Jul 1, 2021

AMD's drivers on Linux sometimes can't push as many pixels out as they can on windows.

You mentioned you have 3 1080p monitors, try unplugging two of them.

@PureTryOut
Copy link

I'm not currently at my desktop but as I said before, I was able to get an image using the workaround as suggested by @Atemu. It was limited to 90Hz but it was an image, and I didn't have to unplug my monitors for that. Because of this I don't think it's the GPU not being able to push enough pixels?

@Atemu
Copy link

Atemu commented Sep 9, 2021

@PureTryOut what distro are you on and how is Steam installed/run? You mentioned a chroot/flatpak setup, could you elaborate on that?

I'm running on NixOS which has to create a FHS-compliant environment via bubblewrap for Steam etc. to work. A while back I was testing some things in a Fedora live environment and tried out SteamVR in an Xorg session. It worked just fine there.
I'm starting to think this has something to do with the containerisation.

Another common link is that we both use a Polaris card but many, many Linux users are, so I wouldn't expect that to make a difference.

@PureTryOut
Copy link

Alpine Linux and I start Steam via Flatpak currently. But it doesn't matter much as I tried a Kubuntu installation as well with Steam installed natively (so, like "normal") and I had the exact same thing.

@kiosion
Copy link

kiosion commented Sep 12, 2021

Same issue here on Arch Linux with xfce4. The fixes mentioned above haven't worked and VR still displays as a normal window on my main monitor. The Index's lights stay green though, I'm even able to launch & 'play' games on it, so all else seems to work fine.

@pwaller
Copy link
Author

pwaller commented Sep 17, 2021

Original reporter here. I still get this, now with a Valve Index. Same general behaviour. Now on 1.19.7. It can sometimes take as many as ten attempts to get the VR headset to work, taking me many minutes before I can start playing VR. This is cutting into my ability to use this a lot, because I can't just drop into a game.

These days I am on a fairly boring Ubuntu 20.04 install with latest nvidia drivers, version: 470.63.01-0ubuntu0.20.04.2

Dmesg log often shows some crashes and GPU errors, in case they are relevant ``` [ 131.919742] input: 3D Camera: eTronVideo as /devices/pci0000:00/0000:00:1c.4/0000:04:00.0/usb4/4-2/4-2.1/4-2.1:1.0/input/input23 [ 136.392244] update-mime-dat[8370]: segfault at 0 ip 0000000000000000 sp 00007ffd79c796f8 error 14 in update-mime-database[400000+3000] [ 136.392250] Code: Unable to access opcode bytes at RIP 0xffffffffffffffd6. [ 136.418728] update-mime-dat[8431]: segfault at 0 ip 0000000000000000 sp 00007ffcab08beb8 error 14 in update-mime-database[400000+3000] [ 136.418734] Code: Unable to access opcode bytes at RIP 0xffffffffffffffd6. [ 138.671665] nvidia-modeset: ERROR: GPU:0: Idling display engine timed out: 0x0000927c:1:0:1095 [ 143.007218] nvidia-modeset: ERROR: GPU:0: Idling display engine timed out: 0x0000927c:1:0:1095 [ 145.007480] nvidia-modeset: ERROR: GPU:0: Idling display engine timed out: 0x0000927c:1:0:1095 [ 180.347681] update-mime-dat[9760]: segfault at 0 ip 0000000000000000 sp 00007ffcf62b42e8 error 14 in update-mime-database[400000+3000] [ 180.347688] Code: Unable to access opcode bytes at RIP 0xffffffffffffffd6. [ 185.774455] update-mime-dat[9984]: segfault at 0 ip 0000000000000000 sp 00007fffd3c63ae8 error 14 in update-mime-database[400000+3000] [ 185.774461] Code: Unable to access opcode bytes at RIP 0xffffffffffffffd6. [ 185.800799] update-mime-dat[10045]: segfault at 0 ip 0000000000000000 sp 00007ffc6ac9d298 error 14 in update-mime-database[400000+3000] [ 185.800805] Code: Unable to access opcode bytes at RIP 0xffffffffffffffd6. ```

Please take a look valve. This brings joy to my life when it works and I want to use it more and buy more games, but at the moment it is just broken.

cc @kisak-valve

@PureTryOut
Copy link

It can sometimes take as many as ten attempts to get the VR headset to work

But it does work in the end? That's different from my and @Atemu then, as for us it never works. With some hacks and workarounds we can get an image but it doesn't work well and never reaches the highest framerate the headset supports.

@pwaller
Copy link
Author

pwaller commented Sep 17, 2021

It can do so! I can play Beatsaber and Alyx for a good hour or two at a time. It's just that it can take an undefined amount of time for it to start working. Sometimes I get it working within 5 minutes. Today I've been trying since the top of the hour and 40 minutes later it is still not working despite my best efforts. Yesterday it was fine. I'm stuck trying to do magical voodoo unplug/replug, reseat cables, restart SteamVR, reboot. pkill -cf vr to get rid of dead/stuck processes. The quickest way of retrying I've seen succeed is to kill everything with pkill, reseat the cable at the cable break, and restart SteamVR. It seems distinctly less reliable than it used to be, though, but I haven't used it much in months (because of issues like this)

Edit: shortly after this comment it started working, only to crash in Alyx when I tried to load a savegame. There are also signs of segfaults in the kernel log.

[   77.800615] steamtours[5791]: segfault at a0 ip 00007fe6c095ed24 sp 00007ffef6b9f540 error 4 in libnvidia-glcore.so.470.63.01[7fe6bf752000+1793000]
[   77.800635] Code: e8 51 fe ff ff 4c 39 e3 75 e4 5b 31 c0 5d 41 5c c3 0f 1f 44 00 00 31 c0 c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 00 53 48 89 fb <48> 8b bf a0 00 00 00 31 f6 e8 2e 84 ff ff 84 c0 75 1a 48 8b bb a8
[   77.828784] VKRenderThread[6019]: segfault at a8 ip 00007fe6c095e88c sp 00007fe6b18e4970 error 4 in libnvidia-glcore.so.470.63.01[7fe6bf752000+1793000]
[   77.828798] Code: 21 0f 1f 44 00 00 48 8b 78 60 49 83 c6 08 49 83 c4 08 48 8b 07 ff 50 38 49 89 44 24 f8 4c 39 f3 74 2c 49 8b 06 48 85 c0 75 dc <48> 8b 04 25 a8 00 00 00 0f 0b 48 8b 44 24 20 41 bf ff ff ff ff 48
[   77.846219] steamtours[5791]: segfault at a0 ip 00007fe6c095ed24 sp 00007ffef6b9f540 error 4 in libnvidia-glcore.so.470.63.01[7fe6bf752000+1793000]
[   77.846230] Code: e8 51 fe ff ff 4c 39 e3 75 e4 5b 31 c0 5d 41 5c c3 0f 1f 44 00 00 31 c0 c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 00 53 48 89 fb <48> 8b bf a0 00 00 00 31 f6 e8 2e 84 ff ff 84 c0 75 1a 48 8b bb a8
[   77.864030] steamtours[5791]: segfault at a0 ip 00007fe6c095ed24 sp 00007ffef6b9f540 error 4 in libnvidia-glcore.so.470.63.01[7fe6bf752000+1793000]
[   77.864038] Code: e8 51 fe ff ff 4c 39 e3 75 e4 5b 31 c0 5d 41 5c c3 0f 1f 44 00 00 31 c0 c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 00 53 48 89 fb <48> 8b bf a0 00 00 00 31 f6 e8 2e 84 ff ff 84 c0 75 1a 48 8b bb a8
[   77.887026] steamtours[5791]: segfault at a0 ip 00007fe6c095ed24 sp 00007ffef6b9f540 error 4 in libnvidia-glcore.so.470.63.01[7fe6bf752000+1793000]
[   77.887035] Code: e8 51 fe ff ff 4c 39 e3 75 e4 5b 31 c0 5d 41 5c c3 0f 1f 44 00 00 31 c0 c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 00 53 48 89 fb <48> 8b bf a0 00 00 00 31 f6 e8 2e 84 ff ff 84 c0 75 1a 48 8b bb a8
[   77.914911] steamtours[5791]: segfault at a0 ip 00007fe6c095ed24 sp 00007ffef6b9f540 error 4 in libnvidia-glcore.so.470.63.01[7fe6bf752000+1793000]
[   77.914924] Code: e8 51 fe ff ff 4c 39 e3 75 e4 5b 31 c0 5d 41 5c c3 0f 1f 44 00 00 31 c0 c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 00 53 48 89 fb <48> 8b bf a0 00 00 00 31 f6 e8 2e 84 ff ff 84 c0 75 1a 48 8b bb a8
[  255.871826] traps: VKRenderThread[8394] general protection fault ip:7f2b79972f00 sp:7f2b6cbf0770 error:0 in vrclient.so[7f2b797d5000+686000]

@GabrielHare
Copy link

Similar seeming issue -> solved.
Alienware m!7 laptop. Ubuntu 20.04, Intel i7, GeForce RTX 2060 Mobile.
Valve Index headset.
System is dual boot with Windows10, and headset works perfectly in Windows, so cable connections were not the problem.

Read through discussion on this thread, and a similar thread for the Vive Pro. (And many other sites that I gave very bad advice.)

For me, the issue was the NVIDIA X Server Settings for "PRIME Profiles". Initially, the setting was "On-Demand". I had the problems described above, with "Direct mode: disabled" and "Headset display is on desktop" printed in ~/.steam/steam/logs/vrcompositor.txt, with the VR display on my laptop screen while headset remained blank.

When I switched this to "Performance Mode" direct display was enabled, and the VR display was in my headset. (That being said, the display seemed to have a substantial lag, and frequent image tearing... so maybe there are other settings to fix, or maybe I just need to wait for Valve - I would be grateful for any suggestions!)

P.S. On the Windows side of things there is a potential issue as well: the laptop has a USB-C thunderbolt port (supporting DisplayPort), and a mini DisplayPort. If the headset is connected to the thunderbolt port it will not display, since that is managed by the Intel GPU. Instead, the headset must be connected to the mini display port, which is managed by the NVidia GPU.

@PureTryOut
Copy link

PureTryOut commented Dec 26, 2021

Not the same. For me it happens on an all AMD machine, and on a desktop. So it knows nothing about PRIME or offloading to different GPU's and what not. There is no way of changing to some performance mode either

@Atemu
Copy link

Atemu commented Oct 17, 2022

FYI, on sway (wayland), it works OOTB for me without any hacks.

@PureTryOut
Copy link

That's cool, for most people it works out of the box. But on certain hardware configurations, like mine, this bug appears. I assume your hardware is completely different?

@Atemu
Copy link

Atemu commented Oct 18, 2022

I'm having the same problem as you on Xorg if you remember ;)

@PureTryOut
Copy link

PureTryOut commented Oct 18, 2022

Oh god that's awkward, sorry for that snarky comment 🙈 Sorry this issue has been plaguing me for so long that I forget who is who on here lol.

Interesting, I wonder what Sway does differently then. I don't have a setup of it available, but I'll give it another shot on KDE Plasma Wayland.

@PureTryOut
Copy link

Well I'm happy to confirm that it works on KDE Plasma Wayland out of the box as well! Not sure about the X11 session but I don't care about it.

SteamVR is now actually almost usable. It still doesn't detect any other refresh rate than 90hz and of course the audio setup is still broken (headset doesn't appear as output device, mic only) which makes it unusable for a lot of things, but things are improving!

Thanks for the update @Atemu!

@Atemu
Copy link

Atemu commented Oct 18, 2022

@PureTryOut refresh rates work for me OOTB too. Perhaps try again with a wlroots-based compositor. Maybe a reboot straight into a Wayland session could help.

Not being able to control audio in SteamVR can be worked around using https://github.com/OpenVR-Advanced-Settings/OpenVR-AdvancedSettings/, it has a functional audio device chooser.
You need to set the audio output to your graphics card's audio controller btw. That's the Index; it's plugged into your GPU.

If you get all this working and inevitably feel nauseated, try a low-latency kernel like https://github.com/xanmod/linux. It greatly reduces input latency felt in VR IME.

If you do all that, you can actually get a fairly playable experience on Linux!

@wolcen
Copy link

wolcen commented Nov 14, 2022

This comment above was the change that finally worked for me.

wlroots (sway) vs Xorg (i3) made no difference in my case - same symptom/error in vrcompositor under each. Will report back if I figure out how to specify the same for Wayland. 🤷

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests