SteamVR: No libdrm.so

I finally filed a bug report with Valve over SteamVR failing to launch. They quickly pointed out that the logs indicate libdrm.so is missing. Searching this Discord for that term specifically turns up nothing, and searching the web merely turns up almost nothing, but none of it helpful to solve this issue. So what is libdrm.so, why is it not present, and what can I do about it? I have found some very similarly-named files such as /usr/lib/libdrm.so.2 but I don't know if that's what SteamVR needs.
GitHub
WaylandHMDLeaseDevice::LeaseDevice_DrmFD: No libdrm.so on Bazzite ·...
Describe the bug SteamVR fails to initialize, showing several errors at various stages of interaction. To Reproduce Steps to reproduce the behavior: Start SteamVR Error window appears in Steam: Ste...
50 Replies
Kyle Gospo
Kyle Gospo7mo ago
No description
Kyle Gospo
Kyle Gospo7mo ago
both 32-bit and 64-bit libdrm is present here could be a failure in the library? or they are loading libdrm.so exactly and we need a symlink?
Onihikage
OnihikageOP7mo ago
Added the symlinks per your instructions in the github thread, but it still fails out with all the same errors. However, vrcompositor.txt doesn't mention libdrm.so anymore, so... progress? It may be worth mentioning that I don't know whether the display should be enabled or disabled in display settings. I remember on Windows I had to disable the VR display from having the desktop extend to it, but it seems to make no difference if it's enabled or disabled in KDE's display settings, it still fails to initialize.
iMightBeSpyduck
iMightBeSpyduck7mo ago
have you tried steamvr beta? it supposed to be fixed(not sure if fix is already in stable branch) https://github.com/ValveSoftware/SteamVR-for-Linux/issues/667
GitHub
[BUG] Not Initialized (109) on Fedora due to distro modified SDL · ...
Describe the bug SteamVR failed to initialize for unknown reasons. (Error: Not Initialized (109)(109)) A key component of SteamVR isn't working properly. Please quit SteamVR, then visit Task Ma...
Onihikage
OnihikageOP7mo ago
I'm in both the Client and SteamVR betas, as directed by the instructions given when creating a new issue on their Github. Doesn't matter though, issue still occurs in the public releases for both. At least the issue of the unkillable Xorg window was resolved by switching to the beta client, so testing VR isn't quite as painful as it was. @1/4 Life I just realized adding those symlinks seems to have broken Waydroid. Fresh boot, Waydroid works. Enable dev mode and add symlinks, Waydroid no longer starts up.
Kyle Gospo
Kyle Gospo7mo ago
enabling usroverlay is what breaks waydroid since that undoes the selinux fix we do expected
Onihikage
OnihikageOP7mo ago
ah, so that's normal then, nvm
Kyle Gospo
Kyle Gospo7mo ago
yup yup
Onihikage
OnihikageOP7mo ago
still wish I could figure out what's causing steamvr to fail without the libdrm.so error it still seems to receive null from Wayland when it tries to get the headset display Or nil rather. From vrcompositor.txt
[Info] - CHmdWindowSDL: Using Wayland
WaylandHMDState: Got interface: wp_drm_lease_device_v1
WaylandHMDLeaseDevice::LeaseDevice_DrmFD: /dev/dri/card1
WaylandHMDLeaseDevice::LeaseDevice_Done
[Info] - CHmdWindowSDL: Using Wayland
WaylandHMDState: Got interface: wp_drm_lease_device_v1
WaylandHMDLeaseDevice::LeaseDevice_DrmFD: /dev/dri/card1
WaylandHMDLeaseDevice::LeaseDevice_Done
[...]
[Info] - HMD deviceUUID is 2d00000000
[Info] - Tried to find direct display through Wayland: (nil)
[Error] - CHmdWindowSDL: Failed to create direct mode surface
[Error] - CHmdWindowSDL: VR requires direct mode.
[Info] - HMD deviceUUID is 2d00000000
[Info] - Tried to find direct display through Wayland: (nil)
[Error] - CHmdWindowSDL: Failed to create direct mode surface
[Error] - CHmdWindowSDL: VR requires direct mode.
@Kyle Gospo Someone using Fedora 40 chimed in on the support thread reporting the same problem I'm having. I'm starting to think this is a Wayland or Xwayland issue - but not one we can't get around. I finally found the right search terms to stumble on freedesktop's documentation for Direct Mode on Linux, which says:
On vanilla wayland compositors HMD displays are not hidden, they appear in monitor configuration tools as conventional monitors. It is also not possible to acquire a display for direct mode. Patches for a WIP mesa and a wayland protocol implementation can be found on Drew DeVault’s blog.
The first two paragraphs exactly describe my situation - my Valve Index shows as a generic 640x480 display in the display settings, and Steam is failing to acquire a display for direct mode. Have Drew DeVault's patches been applied in Bazzite? If they have, they don't seem to be working for some reason. I did check xrandr --prop and the Index was showing non-desktop: 0, so I changed it with xrandr --output DP-3 --set non-desktop 1 but nothing happened. It still shows up in display settings, and still vanishes from xrandr --prop when I disable it in display settings. Logged out and back in, it's still there, and xrandr --prop is back to showing non-desktop: 0 on the HMD, so I assume I need some way of making that config change persistent after the DM restarts.
Kyle Gospo
Kyle Gospo7mo ago
those patches are very old and should be in KDE I don't think they're still needed that being said, if Valve gets back to us on what's going on w/ KDE6 wayland I will be happy to merge patches for whatever is needed
Onihikage
OnihikageOP7mo ago
I still think there's some issue with Wayland not recognizing that my HMD is an HMD I recall in Windows once SteamVR was installed and configured with the Index, it would be hidden from the display settings and the documentation I'm finding indicates the same should happen here, but it isn't
Onihikage
OnihikageOP7mo ago
Okay, here's someone with Plasma 6 Wayland + 7900XTX (mine is 7900 GRE) who had a different problem and was able to get into VR when they solved it. However they're on CachyOS which is Arch-derivative.
GitHub
[BUG] Initialization failure from QT_QPA_PLATFORM=wayland;xcb on ...
Describe the bug Steam VR fails to launch on a Plasma 6 Wayland desktop. To Reproduce Steps to reproduce the behavior: Launch Steam VR Expected behavior Steam VR launches and awaits a headset conne...
iMightBeSpyduck
iMightBeSpyduck7mo ago
this should not be problem, kde wayland support DRM leasing. Last time I tried it was in march but on opensuse and it was working. So it's not wayland issue
iMightBeSpyduck
iMightBeSpyduck7mo ago
KDE Plasma 5.24 On Wayland To Support DRM Leasing For VR Headsets
With the KDE Plasma 5.23 release quickly approaching, feature development is already heating up for Plasma 5.24 while concurrently driving many fixes into the v5.23 codebase.
iMightBeSpyduck
iMightBeSpyduck7mo ago
I am only testing bazzite in VM so can't help more
iMightBeSpyduck
iMightBeSpyduck7mo ago
GitHub
linux/drivers/gpu/drm/drm_edid.c at d20f6b3d747c36889b7ce75ee369182...
Linux kernel source tree. Contribute to torvalds/linux development by creating an account on GitHub.
iMightBeSpyduck
iMightBeSpyduck7mo ago
maybe I could try to run steamvr from fedora 40 livecd
Onihikage
OnihikageOP7mo ago
There's the EDIDs again. I've seen a bit about them in research, but I have yet to be able to find any files related to EDIDs that actually mention them, nor have I been able to see what EDID my Index is showing up as. xrandr --prop shows this for the Index:
DP-3 connected 640x480+3840+300 (normal left inverted right x axis y axis) 0mm x 0mm
RANDR Emulation: 1
non-desktop: 0
supported: 0, 1
640x480 59.38*+
320x240 59.52
640x400 59.20
320x200 58.96
640x350 59.77
DP-3 connected 640x480+3840+300 (normal left inverted right x axis y axis) 0mm x 0mm
RANDR Emulation: 1
non-desktop: 0
supported: 0, 1
640x480 59.38*+
320x240 59.52
640x400 59.20
320x200 58.96
640x350 59.77
iMightBeSpyduck
iMightBeSpyduck7mo ago
lease-DP-1 disconnected (normal left inverted right x axis y axis)
CONNECTOR_ID: 112
supported: 112
non-desktop: 1
supported: 0, 1
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
lease-DP-1 disconnected (normal left inverted right x axis y axis)
CONNECTOR_ID: 112
supported: 112
non-desktop: 1
supported: 0, 1
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
this is on opensuse after connecting headset steam is not running
Onihikage
OnihikageOP7mo ago
Yeah that's definitely different behavior yours shows as disconnected/non-desktop, as it should mine will show as connected unless I disable it in display configuration, then it doesn't show in xrandr at all and obviously the resolutions and refresh rates are all wrong yet it can't be a hardware issue because it still works in Windows, right?
iMightBeSpyduck
iMightBeSpyduck7mo ago
can you launch Info center and under wayland search for 'wp_drm_lease_device_v1'
Onihikage
OnihikageOP7mo ago
interface: 'wp_drm_lease_device_v1', version: 1, name: 49 hmm, this definitely indicates Wayland doesn't know the Index is an Index
interface: 'wl_output', version: 4, name: 61
name: DP-3
description: DP-3-unknown
x: 3840, y: 300, scale: 1,
physical_width: 0 mm, physical_height: 0 mm,
make: '', model: 'DP-3-unknown',
subpixel_orientation: unknown, output_transform: normal,
mode:
width: 640 px, height: 480 px, refresh: 59.940 Hz,
flags: current
interface: 'wl_output', version: 4, name: 61
name: DP-3
description: DP-3-unknown
x: 3840, y: 300, scale: 1,
physical_width: 0 mm, physical_height: 0 mm,
make: '', model: 'DP-3-unknown',
subpixel_orientation: unknown, output_transform: normal,
mode:
width: 640 px, height: 480 px, refresh: 59.940 Hz,
flags: current
the question now is why it doesn't know that or, failing that, how can I tell it? /sys/class/drm/card1-DP-3/edid looks like an empty file and I assume it shouldn't be empty
iMightBeSpyduck
iMightBeSpyduck7mo ago
is it correct file? run find /sys |grep -i edid
Onihikage
OnihikageOP7mo ago
seems to be correct, /sys/class/drm/card1-DP-3 is a symlink to /sys/devices/pci0000:00/0000:00:03.1/0000:2b:00.0/0000:2c:00.0/0000:2d:00.0/drm/card1/card1-DP-3/ which came up in the find command you gave me however I am noticing one thing for the other displays, edid shows as an... executable file? 0B in size for the Index, it's a blank file
Onihikage
OnihikageOP7mo ago
No description
No description
Onihikage
OnihikageOP7mo ago
specifically Unknown, 0 B on either monitor vs Empty document, 0 B on the Index
Onihikage
OnihikageOP7mo ago
Could this help any? I don't know if I can trust it though 🤔
No description
iMightBeSpyduck
iMightBeSpyduck7mo ago
its show 0b for me to but I am able to decode it with udo cat /sys/devices/pci0000:00/0000:00:03.1/0000:0a:00.0/0000:0b:00.0/0000:0c:00.0/drm/card1/card1-DP-1/edid | edid-decode this is my path
Onihikage
OnihikageOP7mo ago
I tried edid-decode earlier but it's not installed by default
iMightBeSpyduck
iMightBeSpyduck7mo ago
can you copy it with and send it to me? sudo cp should work
Onihikage
OnihikageOP7mo ago
alright I mean it just makes another empty file and I can't upload it
iMightBeSpyduck
iMightBeSpyduck7mo ago
try sudo cat filepath > ~/edid
Onihikage
OnihikageOP7mo ago
still 0 bytes and can't be uploaded I also had to create the target file so I either need to layer edid-decode or whatever parent package it's from with rpm-ostree, or figure out how to install it in a distrobox, if that would even work or risk the flatpak from earlier
iMightBeSpyduck
iMightBeSpyduck7mo ago
hm that worked from after doing that i had 256b file in home folder
Onihikage
OnihikageOP7mo ago
for what it's worth, sudo cat filepath without sending it to a file outputs nothing and outputs a lot of something if I do it with one of the monitors so for some reason the system can't read the EDID I wonder if I can read it from Windows 🤔 might try that next tbh
iMightBeSpyduck
iMightBeSpyduck7mo ago
replace filepath with you path to that edid file
Onihikage
OnihikageOP7mo ago
yeah, I did that
Onihikage
OnihikageOP7mo ago
No description
Onihikage
OnihikageOP7mo ago
just puts out nothing for the HMD
iMightBeSpyduck
iMightBeSpyduck7mo ago
disconnect VR from PC, reconnect it is there any error in dmesg?
Onihikage
OnihikageOP7mo ago
only one error from a while before I unplugged them, but it looks like everything reconnects fine, at least on the USB side of things
Onihikage
OnihikageOP7mo ago
that said...
Onihikage
OnihikageOP7mo ago
No description
Onihikage
OnihikageOP7mo ago
and it doesn't show in display manager I'm gonna be pissed if it works all of a sudden, because I tried unplugging it several times already due to that one report from someone saying they just unplugged and replugged until it worked
iMightBeSpyduck
iMightBeSpyduck7mo ago
but also amdgpu 0000:2d:00.0: [drm] enabling link 2 failed: 15 doesn't look good...
Onihikage
OnihikageOP7mo ago
yeah that was from me disabling the HMD again in display manager after something fucky happened while I was asleep with the monitors off
Onihikage
OnihikageOP7mo ago
No description
Onihikage
OnihikageOP7mo ago
so now magically it's fine well, not completely fine, it still has that unkillable xorg window which will be annoying but hot damn it seems to work so why'd it work this time and not all the others!? (╯°□°)╯︵ ┻━┻
iMightBeSpyduck
iMightBeSpyduck7mo ago
try switching from beta to stable or stable to beta, I remember one of them didn't have that issue(that was 3 month ago). Also for me steamvr always fail on first launch and need to force close it and on second launch it work normally
Onihikage
OnihikageOP7mo ago
oh, I did that about a billion times I'll have to update my support thread but also mess with VR a lot over the next few days to see if the issue reoccurs and if there's a particular state the system needs to be in for the unplug-replug to work All that and now I find out motion smoothing isn't supported on Linux = . =
Want results from more Discord servers?
Add your server