ValveSoftware / SteamVR-for-Linux

Issue tracker for the Linux port of SteamVR
918 stars 45 forks source link

[BUG] "Please plug in your VR headset" #295

Open Hubro opened 4 years ago

Hubro commented 4 years ago

Describe the bug

Steam detects that a VR headset is plugged in, since it prompted me to install the SteamVR software, and it's displaying a "VR" button at the top right of the Steam library window.

When I launch SteamVR, all I get is this window:

image

To Reproduce Steps to reproduce the behavior:

  1. Plug in HTC Vive
  2. Launch Steam
  3. Launch SteamVR

Expected behavior I would expect SteamVR to work as it does in Windows. If I reboot into Windows, SteamVR works as expected.

System Information (please complete the following information):

Screenshots See above

Additional context

The Steam output includes some errors about failing to read USB devices. This should not be a permissions issue, as the Steam VR udev rules are in place. Here is the Steam log from launch until SteamVR is launched: https://gist.github.com/Hubro/4f879fbb55b8a8e088852783aa8bdbca

Steam system information: https://gist.github.com/Hubro/3f55abe9b82ce83b6c5ed281d49eabaf

Here are the udev rules installed by the Arch multilib steam package:

cat /lib/udev/rules.d/70-steam-vr.rules

KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="114d", ATTRS{idProduct}=="8a12", MODE="0660", MODE="0660", TAG+="uaccess"

KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="0bb4", ATTRS{idProduct}=="2c87", MODE="0660", MODE="0660", TAG+="uaccess"
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="0bb4", ATTRS{idProduct}=="0306", MODE="0660", MODE="0660", TAG+="uaccess"
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="0bb4", ATTRS{idProduct}=="0309", MODE="0660", MODE="0660", TAG+="uaccess"
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="0bb4", ATTRS{idProduct}=="030a", MODE="0660", MODE="0660", TAG+="uaccess"
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="0bb4", ATTRS{idProduct}=="030b", MODE="0660", MODE="0660", TAG+="uaccess"
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="0bb4", ATTRS{idProduct}=="030c", MODE="0660", MODE="0660", TAG+="uaccess"
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="0bb4", ATTRS{idProduct}=="030e", MODE="0660", MODE="0660", TAG+="uaccess"

KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="28de", ATTRS{idProduct}=="1043", MODE="0660", MODE="0660", TAG+="uaccess"
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="28de", ATTRS{idProduct}=="1142", MODE="0660", MODE="0660", TAG+="uaccess"
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="28de", ATTRS{idProduct}=="2000", MODE="0660", MODE="0660", TAG+="uaccess"
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="28de", ATTRS{idProduct}=="2010", MODE="0660", MODE="0660", TAG+="uaccess"
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="28de", ATTRS{idProduct}=="2011", MODE="0660", MODE="0660", TAG+="uaccess"
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="28de", ATTRS{idProduct}=="2012", MODE="0660", MODE="0660", TAG+="uaccess"
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="28de", ATTRS{idProduct}=="2021", MODE="0660", MODE="0660", TAG+="uaccess"
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="28de", ATTRS{idProduct}=="2022", MODE="0660", MODE="0660", TAG+="uaccess"
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="28de", ATTRS{idProduct}=="2050", MODE="0660", MODE="0660", TAG+="uaccess"
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="28de", ATTRS{idProduct}=="2101", MODE="0660", MODE="0660", TAG+="uaccess"
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="28de", ATTRS{idProduct}=="2102", MODE="0660", MODE="0660", TAG+="uaccess"
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="28de", ATTRS{idProduct}=="2150", MODE="0660", MODE="0660", TAG+="uaccess"
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="28de", ATTRS{idProduct}=="2300", MODE="0660", MODE="0660", TAG+="uaccess"
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="28de", ATTRS{idProduct}=="2301", MODE="0660", MODE="0660", TAG+="uaccess"

Note: Commenters who are also experiencing this issue are encouraged to include the "System Information" section in their replies.

Hubro commented 4 years ago

I've checked what device the headset is by reconnecting the USB while watching dmesg:

[  +0.076178] usb 1-14.1.5: new full-speed USB device number 23 using xhci_hcd
[  +0.092107] usb 1-14.1.5: New USB device found, idVendor=0bb4, idProduct=2c87, bcdDevice= 2.00
[  +0.000003] usb 1-14.1.5: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[  +0.000002] usb 1-14.1.5: Product: HTC Vive
[  +0.000001] usb 1-14.1.5: Manufacturer: HTC
[  +0.000002] usb 1-14.1.5: SerialNumber: 2070354D504D
[  +0.007260] hid-generic 0003:0BB4:2C87.0010: hiddev2,hidraw6: USB HID v1.11 Device [HTC HTC Vive] on usb-0000:00:14.0-14.1.5/input0

Then I check what udev has done for that device:

➜  sudo udevadm info --name /dev/hidraw6 --query all
P: /devices/pci0000:00/0000:00:14.0/usb1/1-14/1-14.1/1-14.1.5/1-14.1.5:1.0/0003:0BB4:2C87.0010/hidraw/hidraw6
N: hidraw6
L: 0
E: DEVPATH=/devices/pci0000:00/0000:00:14.0/usb1/1-14/1-14.1/1-14.1.5/1-14.1.5:1.0/0003:0BB4:2C87.0010/hidraw/hidraw6
E: DEVNAME=/dev/hidraw6
E: MAJOR=240
E: MINOR=6
E: SUBSYSTEM=hidraw
E: USEC_INITIALIZED=43726343604
E: ID_PATH=pci-0000:00:14.0-usb-0:14.1.5:1.0
E: ID_PATH_TAG=pci-0000_00_14_0-usb-0_14_1_5_1_0
E: ID_FOR_SEAT=hidraw-pci-0000_00_14_0-usb-0_14_1_5_1_0
E: TAGS=:uaccess:seat:

It says E: TAGS=:uaccess:seat: on the last line, so I'm guessing that's in order.

But when I launch Steam, the output still says:

steam[127572]: Attempting HID Open HMD: 
steam[127572]: CHidDevice: Can't open USB device VID 00000bb4, PID 00002c87  1
steam[127572]: LHR-B6E29A44: Attached device ID not set.  No controller input available.
steam[127572]: Attempting HID Open IMU: LHR-B6E29A44
steam[127572]: CHidDevice: Can't open USB device VID 000028de, PID 00002000 LHR-B6E29A44 1
steam[127572]: Attempting HID Open Optical: LHR-B6E29A44
steam[127572]: CHidDevice: Can't open USB device VID 000028de, PID 00002000 LHR-B6E29A44 2
steam[127572]: LHR-B6E29A44: Unable to request config start from device
steam[127572]: Attempting HID Open IMU: 34DD04F7FB
steam[127572]: CHidDevice: Can't open USB device VID 000028de, PID 00002101 34DD04F7FB 1
steam[127572]: Attempting HID Open IMU: 8B58B66863
steam[127572]: CHidDevice: Can't open USB device VID 000028de, PID 00002101 8B58B66863 1

Am I right that +uaccess should result in an extended attribute on the device? Because if I dump all extended attributes for /dev/hidraw6 I get no output:

➜  sudo getfattr -d /dev/hidraw6

Does this mean there's an issue with my system? Or have I misunderstood something?

I really have no idea if any of these errors are normal and can be ignored, or if they are relevant to the problem...

If I list /dev it certainly doesn't look like I have permissions to access hidraw6...

➜  ls -lh /dev | grep hidraw
crw-------  1 root  root   240,   0 jan.  26 02:09 hidraw0
crw-------  1 root  root   240,   1 jan.  26 02:09 hidraw1
crw-rw----  1 root  root   240,  10 jan.  26 13:18 hidraw10
crw-rw----  1 root  root   240,  11 jan.  26 13:18 hidraw11
crw-------  1 root  root   240,   2 jan.  26 02:09 hidraw2
crw-------  1 root  root   240,   3 jan.  26 02:09 hidraw3
crw-------  1 root  root   240,   4 jan.  26 02:09 hidraw4
crw-------  1 root  root   240,   5 jan.  26 13:18 hidraw5
crw-rw----  1 root  root   240,   6 jan.  26 13:18 hidraw6
crw-------  1 root  root   240,   7 jan.  26 02:09 hidraw7
crw-rw----  1 root  root   240,   8 jan.  26 13:18 hidraw8
crw-rw----  1 root  root   240,   9 jan.  26 13:18 hidraw9
Hubro commented 4 years ago

Trying to cat the HTC Vive device fails with permission denied:

➜  cat /dev/hidraw6 
cat: /dev/hidraw6: Permission denied

Doing it as sudo succeeds, as it hangs indefinitely rather than giving a permission error.

So it certainly seems like the udev rules didn't do their job somehow...

Hubro commented 4 years ago

Alright, I can confirm this is a device permissions issue, and the udev rules don't appear to be working.

If I run these commands right before launching Steam, I can successfully start SteamVR:

sudo chmod g+rw /dev/hidraw5 /dev/hidraw6 /dev/hidraw8 /dev/hidraw9 /dev/hidraw10 /dev/hidraw11; sudo chgrp tomas /dev/hidraw5 /dev/hidraw6 /dev/hidraw8 /dev/hidraw9 /dev/hidraw10 /dev/hidraw11

This is not a solution though, as the permissions appear to be reverted at regular intervals.

I'm not sure who/what to blame here. If you feel this is an Arch issue, and not a SteamVR issue, feel free to close this bug report.

h1z1 commented 4 years ago

Unless arch is doing something else, uaccess is advisory. You're getting denied because of the mode, which is also strangely duplicated.

Jay2645 commented 4 years ago

I also am having this same issue. Same output, running Arch Linux. The only difference in the provided output is that my device is identified as hidraw12. I'm able to see my BIOS through the headset and some corrupted graphics when initially launching VR, but then nothing.

chitalian commented 4 years ago

Hey so I ran into the same issue and @antonok-edm helped me find this post. I am running with the following configuration:

Ubuntu 19.10 Graphics card: 2700 Super MSI SteamVR Version: 1.10.28

Installed steam through apt.

Steps to fix (temporarily): Step 1: unplug USB from VR to PC Step 2:

ls /dev/hidraw*

Step 3: plug in the USB again Step 4:

ls /dev/hidraw*

Step 5: What ever new devices are showing after plugging them in, give them read and right access and add yourself tot hat group as @Hubro does...

sudo chmod g+rw /dev/hidraw5 /dev/hidraw6 /dev/hidraw8 /dev/hidraw9 /dev/hidraw10 /dev/hidraw11; sudo chgrp <username> /dev/hidraw5 /dev/hidraw6 /dev/hidraw8 /dev/hidraw9 /dev/hidraw10 /dev/hidraw11
CarlB86 commented 4 years ago

Just wanted to note that I am also having this issue with the valve index. Linux Mint 19.3 GPU: Nvidia 1080ti SteamVR Version: 1.10.31

MrMinimal commented 4 years ago

Same problem with my Index Ubuntu 18.04 64bit Vega 64 I had to use the fix by @chitalian which helped a bit.

Now I am stuck at: image

chitalian commented 4 years ago

Same problem with my Index Ubuntu 18.04 64bit Vega 64 I had to use the fix by @chitalian which helped a bit.

Now I am stuck at:

@MrMinimal Try doing this exactly:

  1. Quit steamVR (kill all the processes because sometimes it runs in the background). Easy way to do this is reboot
  2. Turn on VR headset, turn on controllers
  3. Run chmod g+rw /dev/hidraw*
  4. Launch steam then steamvr
  5. While steamvr is launching run step 3 again
beartrapsandwich commented 3 years ago

I'm also experiencing this issue as well, only I can't get my HTC vive to connect at all. There's no dmesg output related to the connection regardless of which USB port I use and ls /dev/hidraw* doesn't show any changes. It worked fine in windows previously (before my dog chewed through the cable, forcing me to buy a replacement), so I'm not sure what the deal is.

Ubuntu 20.04 GTX 1070 w/ Nvidia 440.100 drivers

Update: For the sake of troubleshooting I met up with a buddy who has a working HTC vive. After a bit of testing we were able to determine that it was my link box was dead, as my headset worked just fine using his link box but not vice versa. I'm waiting on a replacement now.

GyrosGeier commented 2 years ago

I made another udev rules file with the same IDs, enabling uaccess for the /dev/bus/usb device nodes, at least some of these are necessary for firmware update to work.

Hubro commented 2 years ago

How infuriating. Two and a half years later, new VR headset (Vive Pro 2) and new Arch install, exactly the same problem still. The udev rules don't do shit. Setting the permissions manually using chmod works.

Mihail16 commented 1 month ago

Replying to https://github.com/ValveSoftware/SteamVR-for-Linux/issues/295#issuecomment-599793368

I'm having the same problem on Arch. So for my Quest 2, between step 1 and step 4 no new devices appear, so I'm not sure how to proceed then. Its weird bec I it shows in my connected devices with name and everything, can access its files even SideQuest recognizes it, but ALVR and SteamVR does not