Hello!
Unfortunately either after reboot of my system or just plugging in the Valve Index’s power cable, it sometimes gets into an unusable state where it cannot be used for SteamVR at all.
The error in SteamVR is “Failed to connect to headset display” Error 496.
In drm_info the headset shows up very weird (The VR headset is Connector 1):
[joni@linuxjoni04 ~]$ drm_info | head -200
Node: /dev/dri/card0
├───Driver: nvidia-drm (NVIDIA DRM driver) version 0.0.0 (20160202)
│ ├───DRM_CLIENT_CAP_STEREO_3D supported
│ ├───DRM_CLIENT_CAP_UNIVERSAL_PLANES supported
│ ├───DRM_CLIENT_CAP_ATOMIC supported
│ ├───DRM_CLIENT_CAP_ASPECT_RATIO supported
│ ├───DRM_CLIENT_CAP_WRITEBACK_CONNECTORS supported
│ ├───DRM_CLIENT_CAP_CURSOR_PLANE_HOTSPOT not supported
│ ├───DRM_CAP_DUMB_BUFFER = 1
│ ├───DRM_CAP_VBLANK_HIGH_CRTC = 1
│ ├───DRM_CAP_DUMB_PREFERRED_DEPTH = 24
│ ├───DRM_CAP_DUMB_PREFER_SHADOW = 1
│ ├───DRM_CAP_PRIME = 3
│ ├───DRM_CAP_TIMESTAMP_MONOTONIC = 1
│ ├───DRM_CAP_ASYNC_PAGE_FLIP = 1
│ ├───DRM_CAP_CURSOR_WIDTH = 256
│ ├───DRM_CAP_CURSOR_HEIGHT = 256
│ ├───DRM_CAP_ADDFB2_MODIFIERS = 1
│ ├───DRM_CAP_PAGE_FLIP_TARGET = 0
│ ├───DRM_CAP_CRTC_IN_VBLANK_EVENT = 1
│ ├───DRM_CAP_SYNCOBJ = 1
│ ├───DRM_CAP_SYNCOBJ_TIMELINE = 1
│ └───DRM_CAP_ATOMIC_ASYNC_PAGE_FLIP = 1
├───Device: PCI 10de:2203 NVIDIA Corporation GA102 [GeForce RTX 3090 Ti]
│ └───Available nodes: primary, render
├───Framebuffer size
│ ├───Width: [0, 65535]
│ └───Height: [0, 65535]
├───Connectors
│ ├───Connector 0
│ │ ├───Object ID: 89
│ │ ├───Type: HDMI-A
│ │ ├───Status: disconnected
│ │ ├───Encoders: {0}
│ │ └───Properties
│ │ ├───"EDID" (immutable): blob = 0
│ │ ├───"DPMS": enum {On, Standby, Suspend, Off} = On
│ │ ├───"link-status": enum {Good, Bad} = Good
│ │ ├───"non-desktop" (immutable): range [0, 1] = 0
│ │ ├───"TILE" (immutable): blob = 0
│ │ ├───"CRTC_ID" (atomic): object CRTC = 0
│ │ ├───"Colorspace": enum {Default, BT2020_RGB, BT2020_YCC} = Default
│ │ ├───"HDR_OUTPUT_METADATA": blob = 0
│ │ └───"vrr_capable" (immutable): range [0, 1] = 0
│ ├───Connector 1
│ │ ├───Object ID: 92
│ │ ├───Type: DisplayPort
│ │ ├───Status: connected
│ │ ├───Physical size: 0×0 mm
│ │ ├───Subpixel: unknown
│ │ ├───Encoders: {1, 2}
│ │ ├───Modes
│ │ │ └───640×480@59.94 nhsync nvsync
│ │ └───Properties
│ │ ├───"EDID" (immutable): blob = 110
│ │ ├───"DPMS": enum {On, Standby, Suspend, Off} = On
│ │ ├───"link-status": enum {Good, Bad} = Good
│ │ ├───"non-desktop" (immutable): range [0, 1] = 0
│ │ ├───"TILE" (immutable): blob = 0
│ │ ├───"CRTC_ID" (atomic): object CRTC = 0
│ │ ├───"Colorspace": enum {Default, BT2020_RGB, BT2020_YCC} = Default
│ │ ├───"HDR_OUTPUT_METADATA": blob = 0
│ │ └───"vrr_capable" (immutable): range [0, 1] = 0
│ ├───Connector 2
│ │ ├───Object ID: 96
│ │ ├───Type: DisplayPort
│ │ ├───Status: connected
│ │ ├───Physical size: 800×330 mm
│ │ ├───Subpixel: unknown
│ │ ├───Encoders: {3, 4}
│ │ ├───Modes
│ │ │ ├───3440×1440@60.00 preferred phsync nvsync
│ │ │ ├───3440×1440@143.92 phsync nvsync
│ │ │ ├───3440×1440@99.99 phsync nvsync
│ │ │ ├───1920×1080@74.91 nhsync pvsync
│ │ │ ├───1920×1080@60.00 phsync pvsync
│ │ │ ├───1920×1080@59.94 phsync pvsync
│ │ │ ├───1920×1080@50.00 phsync pvsync
│ │ │ ├───1680×1050@59.95 nhsync pvsync
│ │ │ ├───1600×900@60.00 phsync pvsync
│ │ │ ├───1280×1024@75.03 phsync pvsync
│ │ │ ├───1280×1024@60.02 phsync pvsync
│ │ │ ├───1280×800@59.81 nhsync pvsync
│ │ │ ├───1152×864@59.96 nhsync pvsync
│ │ │ ├───1280×720@60.00 phsync pvsync
│ │ │ ├───1280×720@59.94 phsync pvsync
│ │ │ ├───1280×720@50.00 phsync pvsync
│ │ │ ├───1024×768@60.00 nhsync nvsync
│ │ │ ├───800×600@60.32 phsync pvsync
│ │ │ ├───720×576@50.00 nhsync nvsync
│ │ │ ├───720×480@59.94 nhsync nvsync
│ │ │ ├───640×480@59.94 nhsync nvsync
│ │ │ └───640×480@59.93 nhsync nvsync
│ │ └───Properties
│ │ ├───"EDID" (immutable): blob = 107
│ │ ├───"DPMS": enum {On, Standby, Suspend, Off} = On
│ │ ├───"link-status": enum {Good, Bad} = Good
│ │ ├───"non-desktop" (immutable): range [0, 1] = 0
│ │ ├───"TILE" (immutable): blob = 0
│ │ ├───"CRTC_ID" (atomic): object CRTC = 43
│ │ ├───"Colorspace": enum {Default, BT2020_RGB, BT2020_YCC} = Default
│ │ ├───"HDR_OUTPUT_METADATA": blob = 0
│ │ └───"vrr_capable" (immutable): range [0, 1] = 0
│ └───Connector 3
│ ├───Object ID: 100
│ ├───Type: DisplayPort
│ ├───Status: connected
│ ├───Physical size: 800×340 mm
│ ├───Subpixel: unknown
│ ├───Encoders: {5, 6}
│ ├───Modes
│ │ ├───3440×1440@59.97 preferred phsync nvsync
│ │ ├───3440×1440@175.00 nhsync pvsync
│ │ ├───3440×1440@165.00 nhsync pvsync
│ │ ├───3440×1440@144.00 nhsync pvsync
│ │ ├───3440×1440@120.00 nhsync pvsync
│ │ ├───3440×1440@100.00 nhsync pvsync
│ │ ├───3440×1440@74.98 phsync nvsync
│ │ ├───3440×1440@29.98 phsync nvsync
│ │ ├───2560×1080@59.94 phsync pvsync
│ │ ├───2560×1080@50.00 phsync pvsync
│ │ ├───1720×1440@59.94 nhsync pvsync
│ │ ├───1920×1080@119.88 phsync pvsync
│ │ ├───1920×1080@60.00 phsync pvsync
│ │ ├───1920×1080@59.94 phsync pvsync
│ │ ├───1920×1080@50.00 phsync pvsync
│ │ ├───1680×1050@59.95 nhsync pvsync
│ │ ├───1280×1024@75.03 phsync pvsync
│ │ ├───1280×1024@60.02 phsync pvsync
│ │ ├───1440×900@59.89 nhsync pvsync
│ │ ├───1280×720@60.00 phsync pvsync
│ │ ├───1280×720@59.94 phsync pvsync
│ │ ├───1280×720@50.00 phsync pvsync
│ │ ├───1024×768@99.97 nhsync pvsync
│ │ ├───1024×768@75.03 phsync pvsync
│ │ ├───1024×768@70.07 nhsync nvsync
│ │ ├───1024×768@60.00 nhsync nvsync
│ │ ├───800×600@99.66 nhsync pvsync
│ │ ├───800×600@75.00 phsync pvsync
│ │ ├───800×600@72.19 phsync pvsync
│ │ ├───800×600@60.32 phsync pvsync
│ │ ├───800×600@56.25 phsync pvsync
│ │ ├───720×480@59.94 nhsync nvsync
│ │ ├───640×480@99.77 nhsync pvsync
│ │ ├───640×480@75.00 nhsync nvsync
│ │ ├───640×480@72.81 nhsync nvsync
│ │ └───640×480@59.94 nhsync nvsync
│ └───Properties
│ ├───"EDID" (immutable): blob = 108
│ ├───"DPMS": enum {On, Standby, Suspend, Off} = On
│ ├───"link-status": enum {Good, Bad} = Good
│ ├───"non-desktop" (immutable): range [0, 1] = 0
│ ├───"TILE" (immutable): blob = 0
│ ├───"CRTC_ID" (atomic): object CRTC = 56
│ ├───"Colorspace": enum {Default, BT2020_RGB, BT2020_YCC} = Default
│ ├───"HDR_OUTPUT_METADATA": blob = 0
│ └───"vrr_capable" (immutable): range [0, 1] = 1
├───Encoders
│ ├───Encoder 0
[...]
It only has 640x480@59.94hz available and has non-display property disabled so it’s even falsely marked as a regular display.
As a workaround I can restart the headset by unplugging the power cable and plugging it back in after a few seconds.
after doing that it looks better in drm_info and works again:
[joni@linuxjoni04 ~]$ drm_info | head -200
Node: /dev/dri/card0
├───Driver: nvidia-drm (NVIDIA DRM driver) version 0.0.0 (20160202)
│ ├───DRM_CLIENT_CAP_STEREO_3D supported
│ ├───DRM_CLIENT_CAP_UNIVERSAL_PLANES supported
│ ├───DRM_CLIENT_CAP_ATOMIC supported
│ ├───DRM_CLIENT_CAP_ASPECT_RATIO supported
│ ├───DRM_CLIENT_CAP_WRITEBACK_CONNECTORS supported
│ ├───DRM_CLIENT_CAP_CURSOR_PLANE_HOTSPOT not supported
│ ├───DRM_CAP_DUMB_BUFFER = 1
│ ├───DRM_CAP_VBLANK_HIGH_CRTC = 1
│ ├───DRM_CAP_DUMB_PREFERRED_DEPTH = 24
│ ├───DRM_CAP_DUMB_PREFER_SHADOW = 1
│ ├───DRM_CAP_PRIME = 3
│ ├───DRM_CAP_TIMESTAMP_MONOTONIC = 1
│ ├───DRM_CAP_ASYNC_PAGE_FLIP = 1
│ ├───DRM_CAP_CURSOR_WIDTH = 256
│ ├───DRM_CAP_CURSOR_HEIGHT = 256
│ ├───DRM_CAP_ADDFB2_MODIFIERS = 1
│ ├───DRM_CAP_PAGE_FLIP_TARGET = 0
│ ├───DRM_CAP_CRTC_IN_VBLANK_EVENT = 1
│ ├───DRM_CAP_SYNCOBJ = 1
│ ├───DRM_CAP_SYNCOBJ_TIMELINE = 1
│ └───DRM_CAP_ATOMIC_ASYNC_PAGE_FLIP = 1
├───Device: PCI 10de:2203 NVIDIA Corporation GA102 [GeForce RTX 3090 Ti]
│ └───Available nodes: primary, render
├───Framebuffer size
│ ├───Width: [0, 65535]
│ └───Height: [0, 65535]
├───Connectors
│ ├───Connector 0
│ │ ├───Object ID: 89
│ │ ├───Type: HDMI-A
│ │ ├───Status: disconnected
│ │ ├───Encoders: {0}
│ │ └───Properties
│ │ ├───"EDID" (immutable): blob = 0
│ │ ├───"DPMS": enum {On, Standby, Suspend, Off} = On
│ │ ├───"link-status": enum {Good, Bad} = Good
│ │ ├───"non-desktop" (immutable): range [0, 1] = 0
│ │ ├───"TILE" (immutable): blob = 0
│ │ ├───"CRTC_ID" (atomic): object CRTC = 0
│ │ ├───"Colorspace": enum {Default, BT2020_RGB, BT2020_YCC} = Default
│ │ ├───"HDR_OUTPUT_METADATA": blob = 0
│ │ └───"vrr_capable" (immutable): range [0, 1] = 0
│ ├───Connector 1
│ │ ├───Object ID: 92
│ │ ├───Type: DisplayPort
│ │ ├───Status: connected
│ │ ├───Physical size: 0×0 mm
│ │ ├───Subpixel: unknown
│ │ ├───Encoders: {1, 2}
│ │ ├───Modes
│ │ │ ├───2880×1600@144.00 nhsync nvsync
│ │ │ ├───2880×1600@120.02 nhsync nvsync
│ │ │ ├───2880×1600@90.00 nhsync nvsync
│ │ │ └───2880×1600@80.00 nhsync nvsync
│ │ └───Properties
│ │ ├───"EDID" (immutable): blob = 118
│ │ ├───"DPMS": enum {On, Standby, Suspend, Off} = On
│ │ ├───"link-status": enum {Good, Bad} = Good
│ │ ├───"non-desktop" (immutable): range [0, 1] = 1
│ │ ├───"TILE" (immutable): blob = 0
│ │ ├───"CRTC_ID" (atomic): object CRTC = 0
│ │ ├───"Colorspace": enum {Default, BT2020_RGB, BT2020_YCC} = Default
│ │ ├───"HDR_OUTPUT_METADATA": blob = 0
│ │ └───"vrr_capable" (immutable): range [0, 1] = 0
│ ├───Connector 2
│ │ ├───Object ID: 96
│ │ ├───Type: DisplayPort
│ │ ├───Status: connected
│ │ ├───Physical size: 800×330 mm
│ │ ├───Subpixel: unknown
│ │ ├───Encoders: {3, 4}
│ │ ├───Modes
│ │ │ ├───3440×1440@60.00 preferred phsync nvsync
│ │ │ ├───3440×1440@143.92 phsync nvsync
│ │ │ ├───3440×1440@99.99 phsync nvsync
│ │ │ ├───1920×1080@74.91 nhsync pvsync
│ │ │ ├───1920×1080@60.00 phsync pvsync
│ │ │ ├───1920×1080@59.94 phsync pvsync
│ │ │ ├───1920×1080@50.00 phsync pvsync
│ │ │ ├───1680×1050@59.95 nhsync pvsync
│ │ │ ├───1600×900@60.00 phsync pvsync
│ │ │ ├───1280×1024@75.03 phsync pvsync
│ │ │ ├───1280×1024@60.02 phsync pvsync
│ │ │ ├───1280×800@59.81 nhsync pvsync
│ │ │ ├───1152×864@59.96 nhsync pvsync
│ │ │ ├───1280×720@60.00 phsync pvsync
│ │ │ ├───1280×720@59.94 phsync pvsync
│ │ │ ├───1280×720@50.00 phsync pvsync
│ │ │ ├───1024×768@60.00 nhsync nvsync
│ │ │ ├───800×600@60.32 phsync pvsync
│ │ │ ├───720×576@50.00 nhsync nvsync
│ │ │ ├───720×480@59.94 nhsync nvsync
│ │ │ ├───640×480@59.94 nhsync nvsync
│ │ │ └───640×480@59.93 nhsync nvsync
│ │ └───Properties
│ │ ├───"EDID" (immutable): blob = 114
│ │ ├───"DPMS": enum {On, Standby, Suspend, Off} = On
│ │ ├───"link-status": enum {Good, Bad} = Good
│ │ ├───"non-desktop" (immutable): range [0, 1] = 0
│ │ ├───"TILE" (immutable): blob = 0
│ │ ├───"CRTC_ID" (atomic): object CRTC = 43
│ │ ├───"Colorspace": enum {Default, BT2020_RGB, BT2020_YCC} = Default
│ │ ├───"HDR_OUTPUT_METADATA": blob = 0
│ │ └───"vrr_capable" (immutable): range [0, 1] = 0
│ └───Connector 3
│ ├───Object ID: 100
│ ├───Type: DisplayPort
│ ├───Status: connected
│ ├───Physical size: 800×340 mm
│ ├───Subpixel: unknown
│ ├───Encoders: {5, 6}
│ ├───Modes
│ │ ├───3440×1440@59.97 preferred phsync nvsync
│ │ ├───3440×1440@175.00 nhsync pvsync
│ │ ├───3440×1440@165.00 nhsync pvsync
│ │ ├───3440×1440@144.00 nhsync pvsync
│ │ ├───3440×1440@120.00 nhsync pvsync
│ │ ├───3440×1440@100.00 nhsync pvsync
│ │ ├───3440×1440@74.98 phsync nvsync
│ │ ├───3440×1440@29.98 phsync nvsync
│ │ ├───2560×1080@59.94 phsync pvsync
│ │ ├───2560×1080@50.00 phsync pvsync
│ │ ├───1720×1440@59.94 nhsync pvsync
│ │ ├───1920×1080@119.88 phsync pvsync
│ │ ├───1920×1080@60.00 phsync pvsync
│ │ ├───1920×1080@59.94 phsync pvsync
│ │ ├───1920×1080@50.00 phsync pvsync
│ │ ├───1680×1050@59.95 nhsync pvsync
│ │ ├───1280×1024@75.03 phsync pvsync
│ │ ├───1280×1024@60.02 phsync pvsync
│ │ ├───1440×900@59.89 nhsync pvsync
│ │ ├───1280×720@60.00 phsync pvsync
│ │ ├───1280×720@59.94 phsync pvsync
│ │ ├───1280×720@50.00 phsync pvsync
│ │ ├───1024×768@99.97 nhsync pvsync
│ │ ├───1024×768@75.03 phsync pvsync
│ │ ├───1024×768@70.07 nhsync nvsync
│ │ ├───1024×768@60.00 nhsync nvsync
│ │ ├───800×600@99.66 nhsync pvsync
│ │ ├───800×600@75.00 phsync pvsync
│ │ ├───800×600@72.19 phsync pvsync
│ │ ├───800×600@60.32 phsync pvsync
│ │ ├───800×600@56.25 phsync pvsync
│ │ ├───720×480@59.94 nhsync nvsync
│ │ ├───640×480@99.77 nhsync pvsync
│ │ ├───640×480@75.00 nhsync nvsync
│ │ ├───640×480@72.81 nhsync nvsync
│ │ └───640×480@59.94 nhsync nvsync
│ └───Properties
│ ├───"EDID" (immutable): blob = 115
│ ├───"DPMS": enum {On, Standby, Suspend, Off} = On
│ ├───"link-status": enum {Good, Bad} = Good
│ ├───"non-desktop" (immutable): range [0, 1] = 0
│ ├───"TILE" (immutable): blob = 0
│ ├───"CRTC_ID" (atomic): object CRTC = 56
│ ├───"Colorspace": enum {Default, BT2020_RGB, BT2020_YCC} = Default
│ ├───"HDR_OUTPUT_METADATA": blob = 0
│ └───"vrr_capable" (immutable): range [0, 1] = 1
├───Encoders
│ ├───Encoder 0
│ │ ├───Object ID: 88
│ │ ├───Type: TMDS
Sometimes when I re-plug the Valve Index in this way, my display freezes and I’m unable to do anything untill I unplug the VR headset - then only a reboot of the entire system helps and the VR headset works again, but I’m not sure if that’s connected to this issue and I would maybe track that as a separate issue.
Working SteamVR:
… and then I can finally play again!
Nvidia Bug report file:
nvidia-bug-report.log.gz (862.5 KB)