-
Notifications
You must be signed in to change notification settings - Fork 45
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] Using VIVE Pro 2, SteamVR fails to setup direct display mode using the Nvidia proprietary driver #450
Comments
I am seeing the exact same behaviour: needed to install Vive Console, then just get a "SteamVR Compositor" window instead of video to the headset. Since this is an industry-focused product and there are a lot of Linux-based applications, how this is this not getting any attention? @noboomu have you had any luck? |
Unfortunately not @ethanfowler. The issue comes down to lack of a Linux port of the drivers contained in the Vive Console app. It’s definitely a matter of time but like you I am surprised by the lack of support. My development environment has expanded to include a Windows box for the time being and dev work has become much more frustrating. |
Thanks @noboomu. Do we have any contacts or active users here representing HTC? Our company situation will require a rough ETA from them, or we drop Vives and move to alternatives. |
i have the same issue, but with a radeon rx 6700 xt. My vive pro work perfect on linux, but vive pro 2 shows the 214 error. |
I also have this issue solely with the Vive pro 2 on Ubuntu 20 with the latest |
I also have this issue on radeon hardware, but.... I've gotten this sort-of working on Ubuntu 20.04.3 with the http://ppa.launchpad.net/kisak/kisak-mesa/ubuntu PPA, on a radeon VII, but I had to do the following:
|
Distribution: Manjaro Linux; Build ID: rolling Same issue, Vive Pro 2 is completely unusable on Linux. Vanilla error is missing driver unless Vive Console is downloaded which executes under Proton and shows a distorted screen followed by a loop of enabling direct mode. |
@kainz how do you get the |
typo. meant subdirectories under /sys/class/drm |
Same issue here. First get HMD 214 missing driver error. Required VIVE Console to setup. Doesn't go to direct mode but does render in desktop mode. HMD is not detected running Ubuntu 20.04 |
Same here, still unsolved: 214 error on SteamVR (natively on linux), until Vive Console is installed, then I get the white binoculars window on the desktop, and nothing on the HMD. SteamVR does prompt me to put the HMD on to wake it, and asks to enable direct mode, but nothing changes, except the prompts are gone, and I can't quit SteamVR unless I
|
Encountered this behavior on Arch some months ago and am now encountering the same on Debian. Seems like it's the headset? (Vive Pro 2.) If I wanted to try to debug this, where would I start? Driver work might be a steep learning curve for me, but I'm curious if anyone has ideas. |
Not sure if this will help, but after reading this thread, and another I just wanted to share what worked for me: In NVIDIA X Server Settings for "PRIME Profiles" select "Performance Mode" and then restart. Full post is here. |
Almost got it working, some of this headset problem causes in kernel VIVE Pro 2 doesn't work at all when connected, but it should at least work as second displayIt may be fixed with this @kainz's workaround: #450 (comment) But underlying reason is linux not supporting EDID DisplayID Type VI timings, so modes aren't detected
Patch: https://lore.kernel.org/linux-kernel/[email protected]/T/#u VIVE Pro 2 works as second display, but it should be hidden in all xorg/wayland wmsEDID NO_DESKTOP quirk is missing Patch: https://lore.kernel.org/linux-kernel/[email protected]/T/#u After this, extended mode works out of the box, except created window is not covering entire screen... Well, it is harder, and direct mode doesn't work because of same reason After applying two patches, Direct Mode still can't be enabledThere is lines in logs:
SteamVR sees vive as display (Output 0x57), and searching for suitable mode (2880x1600), To make it work, we should replace mode searched by SteamVR (2880x1600) with something supported by I see no such configuration option in driver_viveVR, so idk where this mode is coming from, so for this For last option - hooking |
Very interesting. Of course SteamVR devs should fix it, but meanwhile where you should probably hook functions is not in vrcompositor, but in ~/.steam/steam/steamapps/common/SteamVR/drivers/lighthouse/bin/linux64/driver_lighthouse.so The resolution returned by IVRDisplayComponent::GetWindowBounds is used by vrcompositor to determine which display to use for direct mode. Most likely this is where 2880x1600 is coming from. IVRDisplayComponent::GetEyeOutputViewport returns the dimensions and positions of the eye, based on the resolution returned by IVRDisplayComponent::GetWindowBounds earlier. |
Well, it works for me now, i had issue with radv mesa driver (I know this issue is about Nvidia driver, but i think problems with VIVE Pro 2 is relevant for any GPU): https://gitlab.freedesktop.org/mesa/mesa/-/issues/5898 I getting image in direct mode on my headset now However this image is filpped vertically, and seems to be not quite bit centered
When wearing it and looking at base station, i see two of them, eyes can't merge them into one
When I look alternately with my left or right eye, i see this (Sorry for paint): Red lines are middle of fov Left and right eye are swapped? Or there is combo of inverted orientation plus right-left flip? Can't guess, difficulty orientating in space, need to test So i need to somehow transform output image, likely with another driver_lighthouse.so patch Performance is awesome however, both in X11 and Wayland environment |
Some HMDs have the displays physically installed in a rotated position. The OSVR HDK2 had the entire display upside down too. In SteamVR drivers the only way I know of to rotate the image is by changing IVRDisplayComponent::ComputeDistortion. It gets input coordinates on the image in NDC and returns coordinates in NDC where the image should be sampled to counter the distortion of the lenses (or the other way around, can't quite remember), and you can abuse this to easily rotate the entire image. For example the else branch here: https://github.com/ChristophHaag/SteamVR-OpenHMD/blob/cb88d2c420c0eaefb72e55dfc74e87beaf211750/driver_openhmd.cpp#L955-L969 It may also require switching the position of the eye viewports on the display something like so https://github.com/ChristophHaag/SteamVR-OpenHMD/blob/cb88d2c420c0eaefb72e55dfc74e87beaf211750/driver_openhmd.cpp#L757-L800 (ps: Wouldn't it be easier to implement hooks in C++ and LD_PRELOAD it, instead of patching the binary?) |
I do it like that, but patching is easier in some cases than PLT hooking :D |
Well, better steal per-eye transforms from Windows driver impl No instructions so far, after |
Copied Now it looks better, somewhat usable (After flipping image), however image is still flipped upside down, and there is fish eye effect for some reason I think there is something more, but i don't see any other method which can distort image Also, ComputeDistortion isn't being called in driver_viveVR on windows, and i still can't understand relation between |
It appears VIVE PRO 2 uses yet another driver: Which in turn uses So i think valve can't fix this themselves, unless HTC releases Meanwhile, i wrote a binary, which proxy driver executes via wine to perform all of those computations: Using this library i got same image as i getting on windows, and everything is finally fully usable |
Thank you so much for sharing your work! |
lensServer is required for using direct mode, but i am too lazy to write any docs :D Basically, for build you need to have rust toolchain with mingw target installed, run Or, if you trust me for some reason, here i prebuilt it To make it work, you need to have |
First of all thank you again! I have installed the vesa kernel-Patch, since I have a nvidia GPU I didn't see a reason to do the gpuamd one, and I was also wondering, the vivectl folder seems to be something that is supposed to be compiled, but I haven't found where the exe's supposed to be copied to and used... Would you mind charing what kind of software versions you used to get it working? |
Try to launch steam from terminal, my driver logs are written here, still possible something is broken on its side, i doubt this is version issue, i think your vive has not the same default mode current version of driver expects (i have in progress version, which reconfigures it), can you share output of Enable direct mode button doesn't do anything on linux, its just restarts steamvr Or, if you're brave enough, here i have upgraded version of driver, which reconfigures HMD itself, which probally will fix it for you (Also it solves some lens-server configuration related issues) Kernel patch is required to support max resolution of vive pro 2, and i think nvidia driver doesn't support this too, and something like this patch is required from nvidia
|
Hi everyone, I have been scouring the internet looking for a similar solution for the HTC Vive Cosmos Elite on Ubuntu 18.04. I've tried the recommendations from this thread, the original instructions by Christhoph Haag here and from this blog too. Sadly I am still getting the error code 214 (HMD not detected) when launching steamVR with the "beta update". I did notice however that if I try to launch steamVR with the "Linux_v1.14" beta, it detects the headset but as soon as I pick it up (I guess to "wake up" steamVR) it crashes. I am starting to think that for the Cosmos Elite it is a complete lost cause. I've only found solutions for Vive Pro 2 and the OG vive, but nothing related to the Cosmos. Any ideas? Any guidance on this matter would be HIGHLY appreciated ! |
Can you dump edid and lsusb output from your vive, and specify which resolutions (modes) is allowed to be chosen in Vive console ui? I think it may work with mine driver (https://github.com/CertainLach/VivePro2-Linux-Driver) after some modifications As I have seen during RE, Vive Cosmos should have same linux compatibility issues as Vive Pro 2 SteamVR doesn't support Vive Pro/Vive Cosmos out of the box, and there was several issues in linux kernel, most of them should be fixed in 5.18 |
hello! I have the same problem with cosmos. I'll try your controller, but how can I know what resolutions to put instead of the vive pro 2's? i tried to install with this result: ./install.sh: 3: set: Illegal option -o pipefail (ubuntu 22.04, kernel 5.19, mesa 22.1.4) and other error with nix installation: |
I'm making progress getting the Vive Cosmos Elite working... re: Kernel Patch: Product ID for Cosmos is aa03 ( according to https://github.com/linuxhw/EDID). |
I've submitted an issue related to this here |
I hope that someone eventually gets HTC Vive Cosmos to work without any issues. |
@Alexandre-Frantz @Supermagnum @huertes Cosmos Elite is sooo close... it might just be a problem with getting the headset display to turn on? |
Describe the bug
Using VIVE Pro 2, SteamVR fails to setup direct display mode using the Nvidia proprietary driver.
To Reproduce
Launch SteamVR with Vive Pro 2 HMD.
Expected behavior
VR compositor rendering to Vive Pro 2 using direct mode.
System Information (please complete the following information):
Additional context
Given the recent release of the Vive Pro 2, all of the existing setup documentation is based on the original Vive Pro.
The methods described in the existing documentation did not assist in getting the HMD to work.
On a vanilla SteamVR install, the system reported error 214 for "Missing Driver".
Installing Vive Console from the Steam store was required in order to detect the HMD, base stations and controllers.
After installing the Vive Console application, SteamVR functions properly but the compositor renders to the desktop and the HMD stays dark.
The logs report that SteamVR is attempting to use the driver installed with the Vive Console application, which only includes a win64 driver.
There is no linux64 driver in the package, though I am unsure if this is required.
The vrcompositor logs indicate that the Vulkan WSI can detect the following direct displays:
However, the above do not seem sufficient:
The vrserver logs report the following as well:
The text was updated successfully, but these errors were encountered: