VR headset not detected by X11

A few weeks ago I ordered my first VR headset which just arrived today. I have what seems to be a Linux specific issue which prevents me from being able to use it. As I paid 50$ to get it shipped from the US and don’t wish to go through the process of returning an otherwise functional product, I’d strongly appreciate any response in helping me figure this problem out. My OS is openSUSE Tumbleweed x64 (KDE).


The headset simply doesn’t start up: It’s ignored and not detected as a display device. If I go into the Desktop Settings (System Settings - Hardware - Display and Monitor - Displays) I only see my normal monitor but not the headset.

The device isn’t broken and is properly plugged in: It actually works in the post screen (when booting) and I can even see GRUB2 in it! But the moment I select the option to boot and the Plymouth splash screen appears, the device goes black. This is clear indication that X11 or another component is deliberately shutting it down and ignoring it.

I’m very confused as to why: It’s a HDMI device and any such screen should automatically be handled by the video card. What do you believe is causing this, and what must I do so the device stays on after the OS boots? Thank you.

I asked on IRC and have an important clue already: The device is being detected by xrandr. DVI-D-1 is my normal monitor, HDMI-A-0 is the headset.

mircea@linux-qz0r:~> xrandr

Screen 0: minimum 320 x 200, current 1920 x 1080, maximum 16384 x 16384
DisplayPort-0 disconnected (normal left inverted right x axis y axis)
HDMI-A-0 disconnected (normal left inverted right x axis y axis)
   1080x1920     60.12 +
   1280x720     100.00  
   1024x768      60.12  
   800x600       60.12  
   640x480       60.12  
DVI-D-0 disconnected (normal left inverted right x axis y axis)
DVI-D-1 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 510mm x 290mm
   1920x1080     60.00*+
   1680x1050     59.88  
   1400x1050     59.95  
   1600x900      60.00  
   1280x1024     75.02    60.02  
   1440x900      59.90  
   1280x800      59.91  
   1152x864      75.00  
   1280x720      60.00  
   1024x768      75.03    60.00  
   832x624       74.55  
   800x600       75.00    60.32    56.25  
   640x480       75.00    59.94  
   720x400       70.08

As suggested, I tried “xrandr --output HDMI-A-0 --auto --left-of DVI-D-1” but this has absolutely no effect and the device stays disconnected.

https://pastebin.com/raw/BBuRh0y1 The contents of /var/log/Xorg.0.log after booting with both the normal monitor (DVI-D-1) and headset (HDMI-A-0) plugged in.

https://pastebin.com/raw/rBFQNqAS The output of dmesg (ran as user not root).

Someone on Reddit just offered some huge help: The device was being intentionally disabled by a flag called “non-desktop”… apparently VR headsets are marked with that so they only run in specific applications, whereas I want it to work all the time. Running “xrandr --output HDMI-A-0 --set non-desktop 0” fixed the detection problem: The device now shows up in the KDE display manager while xrandr lists it as connected just as it should!

Unfortunately it’s still pitch black and no image is showing up, no matter which xrandr modes I use or how I map the screen. Even using “Unified Output” causes no image to show up.

Could there also be a brightness issue? I tried something like “xrandr --output HDMI-A-0 --mode 1080x1920 --brightness 2 --gamma 2 --right-of DVI-D-1” but still nothing. Once more, the screen does light up at boot and in GRUB2 and I’m putting it on my face to activate the infrared sensor, so this is not a hardware defect. Perhaps another flag or mode issue?

Just found another important clue: When the headset is powered on at boot time, even if the image on the screen is just black, you still see background lighting on the screen itself and can tell that it’s functioning. Once I’m in Linux, the screen does NOT have this background light, indicating the display is simply not powering on any more. This rules out the possibility that due to the xrandr configuration it was perceiving a black area: It simply doesn’t turn on.

Could this have something to do with the infrared sensor that detects when the headset is on my face? But how on Earth would that work during the boot procedure and not in the OS itself?

I’m actually suspecting that Linux might be recognizing the device via USB and choosing to power it off until a program tells it “hey I need VR support, turn this device back on”. This would explain why it works in the POST screen but not the moment I start booting. To rule this out, I’ll have to see if I can plug the USB port to a phone charger, which should give it power but not be able to send any standby signals. This will obviously disable the head tracker but no idea if that was going to work anyway so it would be a valid workaround.

I got it to work at long last! Took me a while to figure out what was happening: Linux likely detected that it’s a VR headset through the USB port, and was disabling the device on purpose. To work around this I plugged it directly into the power socket, which now tells it to stay powered on all the time.

The only issue I have left is that the color looks off, it’s green or pink instead of the right tint. This likely has to do with the color settings which I’ll need to adjust later. I also won’t get head tracking support without plugging the USB port into my computer but that’s a secondary issue for later.