SteamVR-for-Linux icon indicating copy to clipboard operation
SteamVR-for-Linux copied to clipboard

[BUG] SteamVR is not able to detect Valve Index's screen

Open Gusted opened this issue 2 years ago • 7 comments

Describe the bug When opening SteamVR, the vrcompistor is not able to detect the Valve Index's screen(as indicated by the logs?):

Sun May 01 2022 17:18:40.085467 - Direct mode features: present
Sun May 01 2022 17:18:40.085476 - Requesting 9 instance extensions:
Sun May 01 2022 17:18:40.085485 -  - VK_KHR_surface
Sun May 01 2022 17:18:40.085494 -  - VK_KHR_xcb_surface
Sun May 01 2022 17:18:40.085503 -  - VK_KHR_display
Sun May 01 2022 17:18:40.085512 -  - VK_EXT_direct_mode_display
Sun May 01 2022 17:18:40.085522 -  - VK_EXT_acquire_xlib_display
Sun May 01 2022 17:18:40.085531 -  - VK_EXT_display_surface_counter
Sun May 01 2022 17:18:40.085540 -  - VK_KHR_external_memory_capabilities
Sun May 01 2022 17:18:40.085549 -  - VK_KHR_external_semaphore_capabilities
Sun May 01 2022 17:18:40.085559 -  - VK_KHR_get_physical_device_properties2
Sun May 01 2022 17:18:40.090184 - HMD deviceUUID is c01b372dfd22a806
Sun May 01 2022 17:18:40.090218 - Looking for direct display through RandR
Sun May 01 2022 17:18:40.090231 -  - Root 0x1e3
Sun May 01 2022 17:18:40.139526 -    - Output 0x1bc - 0 modes, 0 preferred
Sun May 01 2022 17:18:40.139585 -    - Output 0x1bd - 0 modes, 0 preferred
Sun May 01 2022 17:18:40.139608 -    - Output 0x1be - 0 modes, 0 preferred
Sun May 01 2022 17:18:40.139628 -    - Output 0x1bf - 0 modes, 0 preferred
Sun May 01 2022 17:18:40.140086 -    - Output 0x1c0 - 25 modes, 1 preferred
Sun May 01 2022 17:18:40.140099 -      - Mode 0 0x1c1 1920x1080 (looking for 2880x1600)
Sun May 01 2022 17:18:40.140118 -    - Output 0x1da - 22 modes, 1 preferred
Sun May 01 2022 17:18:40.140127 -      - Mode 0 0x1c1 1920x1080 (looking for 2880x1600)
Sun May 01 2022 17:18:40.140144 -    - Output 0x1de - 0 modes, 0 preferred
Sun May 01 2022 17:18:40.140153 - Tried to find direct display through RandR: (nil)
Sun May 01 2022 17:18:40.140160 - Looking for direct display through Vulkan WSI
Sun May 01 2022 17:18:40.191637 -  - Vulkan output 0: 1920x1080 resolution, 530x300 dimensions - Lenovo Group Limited LEN L24e-20 (HDMI-0)
Sun May 01 2022 17:18:40.191675 -  - Vulkan output 1: 1920x1080 resolution, 600x340 dimensions - Samsung S27R65x (DP-4)
Sun May 01 2022 17:18:40.191683 - Tried to find direct display through Vulkan WSI: (nil)
Sun May 01 2022 17:18:40.191690 - CHmdWindowSDL: Failed to create direct mode surface

To Reproduce Steps to reproduce the behavior:

  1. Open SteamVR application.

Expected behavior The VRCompistor should be opened on the Valve Index's display but instead it gets opened on my monitors.

System Information (please complete the following information):

  • Distribution: Arch [KDE 5.24.4]
  • SteamVR version: 1.22.9 Beta
  • Steam client version: Apr 27 2022
  • Opted into Steam client beta?: Yes
  • Graphics driver version: 510.60.02
  • Gist for SteamVR System Information: https://gist.github.com/Gusted/f7fa206811ccc9a774de36696a57c4e0

Screenshots image

Additional context Valve Index itself seems fine, but for some absurd reason it doesn't seem to be able to detect it's screen anymore

Gusted avatar May 01 '22 15:05 Gusted

Hello @Gusted, your system information hints that you're using an Optimus laptop. It might be interesting to test how SteamVR behaves with the system configured to run an X-based session with X running on the NVIDIA gpu. I suspect you're seeing a similar issue to https://github.com/ValveSoftware/SteamVR-for-Linux/issues/334#issuecomment-1001094269.

kisak-valve avatar May 01 '22 15:05 kisak-valve

Hi @kisak-valve, thanks for your reply.

Hello @Gusted, your system information hints that you're using an Optimus laptop.

Oh that's interesting, I had a quick look at my PC case and I'm pretty sure that isn't a laptop. Could that be the cause? That Steam/Linux/Nvidia is thinking I'm running a Optimus laptop 😄? I did recently had to manually edit my xorg.conf because of some corrupted data in that file, could it be related to that?

Gusted avatar May 01 '22 17:05 Gusted

Hello @Gusted, your system information hints that you're using an Optimus laptop. It might be interesting to test how SteamVR behaves with the system configured to run an X-based session with X running on the NVIDIA gpu. I suspect you're seeing a similar issue to #334 (comment).

Hey @kisak-valve what about running an Wayland session?

iMonZ avatar May 01 '22 20:05 iMonZ

I did recently had to manually edit my xorg.conf because of some corrupted data in that file, could it be related to that?

I configured my Xorg config to the skeleton file and didn't resolve the bug.

Gusted avatar May 02 '22 22:05 Gusted

I'd played some more around with the Index HMD, figuring out to see if I would be able to let Nvidia use the Index's display as "another monitor" would maybe help. However Nvidia doesn't seem to be able to enable the screen(it does get detected) and while figuring around with xrandr it doesn't show any parsed EDID data. Which then lead me to a surprise that the edid-data(dumped via nvidia-settings) cannot be parsed:

-> % parse-edid < edid.bin
Checksum Correct

Section "Monitor"
        Identifier "Index HMD"
        ModelName "Index HMD"
        VendorName "VLV"
        # Monitor Model Year: 2018
        # EDID version 1.3
        # Digital Display
        # Display Physical Size not given. Normal for projectors.
        Gamma 2.20
        Option "DPMS" "false"

        #Extension block found. Parsing...
I only know about extension blocks of type 02h. PLEASE email me!
Something strange happened. Please contact the author,
Matthew Kern at <[email protected]>

I'm not sure which kind of library nvidia/xrandr uses to parse the edid, but it seems like it could be related due to it. While trying to play around with the edid data, I'd tried another tool parse it and edid-decode seems to be able to parse it, it stills warns that the checksum is incomplete due to unused space in the extension block(likely, as it cannot parse it either).

-> % edid-decode < edid.bin
edid-decode (hex):

00 ff ff ff ff ff ff 00 59 96 a8 91 a5 e6 03 2d
ff 1c 01 03 80 00 00 78 0a 48 97 a1 5b 54 a0 26
13 4a 50 00 00 00 01 01 01 01 01 01 01 01 01 01
01 01 01 01 01 01 00 00 00 10 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 fc 00 49 6e 64
65 78 20 48 4d 44 0a 20 20 20 00 00 00 10 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 10
00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 c8

70 12 5a 00 00 03 01 50 f7 0b 01 80 3f 0b 4f 00
07 00 1f 00 3f 06 ce 03 c4 03 05 00 f7 0b 01 00
3f 0b 4f 00 07 00 1f 00 3f 06 10 05 06 05 05 00
f7 0b 01 00 3f 0b 4f 00 07 00 1f 00 3f 06 4a 01
40 01 05 00 65 0c 01 00 3f 0b 4f 00 07 00 1f 00
3f 06 0b 00 02 00 05 00 81 03 04 23 09 04 01 17
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 90

----------------

Block 0, Base EDID:
  EDID Structure Version & Revision: 1.3
  Vendor & Product Identification:
    Manufacturer: VLV
    Model: 37288
    Serial Number: 755230373
    Model year: 2018
  Basic Display Parameters & Features:
    Digital display
    Image size is variable
    Gamma: 2.20
    RGB color display
    First detailed timing is the preferred timing
  Color Characteristics:
    Red  : 0.6298, 0.3554
    Green: 0.3300, 0.6250
    Blue : 0.1503, 0.0751
    White: 0.2900, 0.3154
  Established Timings I & II: none
  Standard Timings: none
  Detailed Timing Descriptors:
    Dummy Descriptor:
    Display Product Name: 'Index HMD'
    Dummy Descriptor:
    Dummy Descriptor:
  Extension blocks: 1
Checksum: 0xc8

----------------

Block 1, DisplayID Extension Block:
  Version: 1.2
  Extension Count: 0
  Display Product Type: Extension Section
  Video Timing Modes Type 1 - Detailed Timings Data Block:
    DTD:  2880x1600   90.002624 Hz   1:1    231.757 kHz    686.000000 MHz (aspect 1:1, no 3D stereo, preferred)
               Hfront    8 Hsync  32 Hback   40 Hpol N
               Vfront  965 Vsync   6 Vback    4 Vpol N
    DTD:  2880x1600   79.998880 Hz   1:1    231.757 kHz    686.000000 MHz (aspect 1:1, no 3D stereo)
               Hfront    8 Hsync  32 Hback   40 Hpol N
               Vfront 1287 Vsync   6 Vback    4 Vpol N
    DTD:  2880x1600  120.019035 Hz   1:1    231.757 kHz    686.000000 MHz (aspect 1:1, no 3D stereo)
               Hfront    8 Hsync  32 Hback   40 Hpol N
               Vfront  321 Vsync   6 Vback    4 Vpol N
    DTD:  2880x1600  144.000235 Hz   1:1    232.128 kHz    687.100000 MHz (aspect 1:1, no 3D stereo)
               Hfront    8 Hsync  32 Hback   40 Hpol N
               Vfront    3 Vsync   6 Vback    3 Vpol N
  CTA-861 DisplayID Data Block:
  Audio Data Block:
    Linear PCM:
      Max channels: 2
      Supported sample rates (kHz): 48
      Supported sample sizes (bits): 16
  Checksum: 0x17
Checksum: 0x90  Unused space in Extension Block: 31 bytes

It seems like that recently the Index is sending corrupt edid data? Which then causes this issue.

Gusted avatar May 09 '22 02:05 Gusted

As of a few days ago I started having a lot of trouble getting SteamVR to work and I'm not sure why. It's often not seeing the headset display at all, and when the headset display does turn on, it often crashes.

Here's the output from the crash that occurred a bit ago, as well as some dumps as I saw some were created during this process. steamvr-crash-output.txt Archive.zip

I am using Plasma on Wayland in Arch Linux, using Mesa with an RX 5700 XT. It was working very well not that long ago...

yaomtc avatar May 24 '22 04:05 yaomtc

I reverted to the SteamVR non-beta and it seems to work better now? I launched it a few times without fail since then. I'll report back here if there's more problems. (Report created after I switched away from Beta.) yaomtc-steamvr-system-report.txt

yaomtc avatar May 24 '22 05:05 yaomtc

i'm having the same issue on Gnome with Wayland. It seems like it can't find the display as it only detects my two monitors. Disabling Wayland fixes the issue.

SteamVR Version: 1.25.8 (1683151457) SteamVR Date: 2023-05-04 Steam: Public Steam Branch: Steam AppID: 250820 Tracking: lighthouse OS: Linux version 6.3.3-arch1-1 (linux@archlinux) (gcc (GCC) 13.1.1 20230429, GNU ld (GNU Binutils) 2.40.0) #1 SMP PREEMPT_DYNAMIC Sun, 21 May 2023 16:15:22 +0000

RX 7900 XTX GPU

codingcatgirl avatar May 25 '23 11:05 codingcatgirl