Okay, it was a systemd problem. I'll forego the stream of swears about this init system (an ACL named "uaccess" that I'm supposed to know is for USB devices and that's assigned via the TAG statement?), hope that it will die a quick death and provide a solution myself:
If your system is running OpenRC, instead of tagging the USB device nodes, use normal UNIX access rights:
# HTC Vive HID Sensor naming and permissioning
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="0bb4", ATTRS{idProduct}=="2c87", MODE="0666", GROUP="usb"
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="28de", ATTRS{idProduct}=="2101", MODE="0666", GROUP="usb"
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="28de", ATTRS{idProduct}=="2000", MODE="0666", GROUP="usb"
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="28de", ATTRS{idProduct}=="1043", MODE="0666", GROUP="usb"
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="28de", ATTRS{idProduct}=="2050", MODE="0666", GROUP="usb"
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="28de", ATTRS{idProduct}=="2011", MODE="0666", GROUP="usb"
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="28de", ATTRS{idProduct}=="2012", MODE="0666", GROUP="usb"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0bb4", ATTRS{idProduct}=="2c87", MODE="0666", GROUP="usb"
# HTC Camera USB Node
SUBSYSTEM=="usb", ATTRS{idVendor}=="114d", ATTRS{idProduct}=="8328", MODE="0666", GROUP="usb"
# HTC Mass Storage Node
SUBSYSTEM=="usb", ATTRS{idVendor}=="114d", ATTRS{idProduct}=="8200", MODE="0666", GROUP="usb"
SUBSYSTEM=="usb", ATTRS{idVendor}=="114d", ATTRS{idProduct}=="8a12", MODE="0666", GROUP="usb"`
The HTC Vive will then be found by Steam and fail to initialize because the bluetooth driver for waking up the base stations doesn't install.
There is no special bluetooth driver. It's a standard broadcom bluetooth chip that only needs an usb id entry in the kernel to make the broadcom kernel driver use it. It's in the kernel since 4.11: https://github.com/torvalds/linux/commit/a57bac43468e005064d6560183b313b269403f0a
It's SteamVR on Linux that does not implement any bluetooth functionality.
There has been some reverse engineering at https://github.com/nairol/LighthouseRedox/blob/master/docs/Base Station.md#bluetooth-le-communications but it's not all complete (with firmware updates etc)
@Cygon Do you have sys-apps/usbutils installed? I recall having a similar problem until I installed sys-apps/usbutils.
@ryao I honestly don't remember if I had it installed when I had this issue a year ago.
My issue was solved when I translated the systemd udev rules into OpenRC udev rules, maybe usbutils is needed on top of that, maybe it isn't :)
Nothing extracted yet.
My SteamVR just doesn't seem to be able to connect to the headset. The USB devices are present (and the entire package works on dual-boot Windows), but SteamVR on Linux reports that it can't open the USB devices.
It looks a bit like a permissions issue, but I've checked and double-checked everything and believe mu configuration to be correct. Normal system users should be able to access the Vive.
Your system information
Please describe your issue in as much detail as possible:
SteamVR works fine on Windows. When I run SteamVR on Linux, it reports "Headset not detected."
I have set up user access rules to udev as requested in https://github.com/ValveSoftware/SteamVR-for-Linux#usb-device-requirements
Furthermore, my user is a member of the "usb" group, "video" group and "input" group.
Doing an lsusb under my normal user account gives me:
Bus 002 Device 010: ID 0424:274d Standard Microsystems Corp.
Bus 002 Device 008: ID 0bb4:0306 HTC (High Tech Computer Corp.)
Bus 002 Device 015: ID 28de:2101
Bus 002 Device 014: ID 28de:2101
Bus 002 Device 013: ID 0bb4:2c87 HTC (High Tech Computer Corp.)
Bus 002 Device 012: ID 0d8c:0012 C-Media Electronics, Inc.
Bus 002 Device 011: ID 0bb4:2c87 HTC (High Tech Computer Corp.)
Bus 002 Device 009: ID 28de:2000
Bus 002 Device 006: ID 0bb4:2134 HTC (High Tech Computer Corp.)
Bus 002 Device 004: ID 0bb4:2744 HTC (High Tech Computer Corp.)
Bus 002 Device 005: ID 046d:c332 Logitech, Inc. G502 Proteus Spectrum Optical Mouse
Bus 002 Device 007: ID 046a:0011 Cherry GmbH G83 (RS 6000) Keyboard
Bus 002 Device 003: ID 05e3:0610 Genesys Logic, Inc. 4-port hub
Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 006 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 005 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
During startup, the SteamVR server reports:
steam[4715]: Attempting HID Open HMD:
steam[4715]: HID opened: VID 0bb4 PID 2c87 serial 207E346A4E4D seq 0 | if 0
steam[4715]: CHidDevice: Can't open USB device VID 00000bb4, PID 00002c87 1
steam[4715]: LHR-1504FC3E: Attached device ID not set. No controller input available.
steam[4715]: Attempting HID Open HMD:
steam[4715]: HID opened: VID 0bb4 PID 2c87 serial 207E346A4E4D seq 0 | if 0
steam[4715]: Attempting HID Open IMU: LHR-1504FC3E
steam[4715]: HID opened: VID 28de PID 2000 serial LHR-1504FC3E seq 0 | if 0
steam[4715]: CHidDevice: Can't open USB device VID 000028de, PID 00002000 LHR-1504FC3E 1
steam[4715]: Attempting HID Open Optical: LHR-1504FC3E
steam[4715]: HID opened: VID 28de PID 2000 serial LHR-1504FC3E seq 0 | if 1
steam[4715]: CHidDevice: Can't open USB device VID 000028de, PID 00002000 LHR-1504FC3E 2
steam[4715]: Attempting HID Open IMU: 24E3867AE6
steam[4715]: HID opened: VID 28de PID 2101 serial 24E3867AE6 seq 0 | if 0
steam[4715]: CHidDevice: Can't open USB device VID 000028de, PID 00002101 24E3867AE6 1
steam[4715]: Attempting HID Open IMU: B154093645
steam[4715]: HID opened: VID 28de PID 2101 serial B154093645 seq 0 | if 0
steam[4715]: CHidDevice: Can't open USB device VID 000028de, PID 00002101 B154093645 1
Note that Gentoo uses OpenRC rather than systemd and that I'm running Steam on KDE rather than GNOME.
Steps for reproducing this issue: