Need to enable VR HMD as a monitor, but xrandr does not detect it with proprietary drivers yet nvidia-xconfig does

Hi, I’m hoping someone can help me.

I need to enable a connected HMD (Vive or Index) as a monitor. When the device is connected with open source nouveau drivers, xrandr shows it as disconnected and non-desktop 1 which is the expected behavior.

However if I use proprietary drivers, xrandr does not show anything except my primary monitor. But, nvidia-xconfig still sees the HMD.

Thanks for your help in advacne.

Some more details:

  • GTX 1060
  • Ubuntu 20.04
  • Tried default nouveau, default proprietary, as well as graphics-ppa 440, 455, and the new 460 proprietary.

proprietary:

  • xrandr does not detect the HMD (output at the end)
  • SteamVR works fine
  • Monado works fine
  • nvidia-xconfig detects the HMD (output at the end)

nouveau

  • xrandr detects the display as non-desktop which I can then enable with --set non-desktop 0, which is what I’d like to be able to do with Nvidia’s drivers.

Nvidia Proprietary Driver:

$ nvidia-xconfig --query-gpu-info
Number of GPUs: 1
GPU #0:
  Name      : GeForce GTX 1060 6GB
  UUID      : GPU-24bd7b56-f200-00aa-5e64-939807a69dcc
  PCI BusID : PCI:1:0:0
  Number of Display Devices: 2
  Display Device 0 (TV-1):
      EDID Name             : HTC Corporation HTC-VIVE
      Minimum HorizSync     : 1.000 kHz
      Maximum HorizSync     : 255.000 kHz
      Minimum VertRefresh   : 20 Hz
      Maximum VertRefresh   : 120 Hz
      Maximum PixelClock    : 297.000 MHz
      Maximum Width         : 2160 pixels
      Maximum Height        : 1200 pixels
      Preferred Width       : 2160 pixels
      Preferred Height      : 1200 pixels
      Preferred VertRefresh : 90 Hz
  Display Device 1 (TV-2):
      EDID Name             : LG Electronics LG Ultra HD
      Minimum HorizSync     : 30.000 kHz
      Maximum HorizSync     : 135.000 kHz
      Minimum VertRefresh   : 56 Hz
      Maximum VertRefresh   : 61 Hz
      Maximum PixelClock    : 560.000 MHz
      Maximum Width         : 3840 pixels
      Maximum Height        : 2160 pixels
      Preferred Width       : 3840 pixels
      Preferred Height      : 2160 pixels
      Preferred VertRefresh : 60 Hz
      Physical Width        : 600 mm
      Physical Height       : 340 mm
$ xrandr --verbose
Screen 0: minimum 8 x 8, current 3840 x 2160, maximum 32767 x 32767
DVI-D-0 disconnected (normal left inverted right x axis y axis)
	Identifier: 0x1bd
	Timestamp:  28320
	Subpixel:   unknown
	Clones:    
	CRTCs:      0 1 2 3
	Transform:  1.000000 0.000000 0.000000
	            0.000000 1.000000 0.000000
	            0.000000 0.000000 1.000000
	           filter: 
	CTM: 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 
		0 1 
	CscMatrix: 65536 0 0 0 0 65536 0 0 0 0 65536 0 
	BorderDimensions: 4 
		supported: 4
	Border: 0 0 0 0 
		range: (0, 65535)
	SignalFormat: TMDS 
		supported: TMDS
	ConnectorType: DVI-D 
	ConnectorNumber: 0 
	_ConnectorLocation: 0 
	non-desktop: 0 
		supported: 0, 1
HDMI-0 disconnected (normal left inverted right x axis y axis)
	Identifier: 0x1be
	Timestamp:  28320
	Subpixel:   unknown
	Clones:    
	CRTCs:      0 1 2 3
	Transform:  1.000000 0.000000 0.000000
	            0.000000 1.000000 0.000000
	            0.000000 0.000000 1.000000
	           filter: 
	CTM: 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 
		0 1 
	CscMatrix: 65536 0 0 0 0 65536 0 0 0 0 65536 0 
	BorderDimensions: 4 
		supported: 4
	Border: 0 0 0 0 
		range: (0, 65535)
	SignalFormat: TMDS 
		supported: TMDS
	ConnectorType: HDMI 
	ConnectorNumber: 3 
	_ConnectorLocation: 3 
	non-desktop: 0 
		supported: 0, 1
DP-0 connected primary 3840x2160+0+0 (0x1c0) normal (normal left inverted right x axis y axis) 600mm x 340mm
	Identifier: 0x1bf
	Timestamp:  28320
	Subpixel:   unknown
	Gamma:      1.0:1.0:1.0
	Brightness: 1.0
	Clones:    
	CRTC:       0
	CRTCs:      0 1 2 3
	Transform:  1.000000 0.000000 0.000000
	            0.000000 1.000000 0.000000
	            0.000000 0.000000 1.000000
	           filter: 
	_MUTTER_PRESENTATION_OUTPUT: 0 
	CTM: 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 
		0 1 
	CscMatrix: 65536 0 0 0 0 65536 0 0 0 0 65536 0 
	EDID: 
		00ffffffffffff001e6d095b46a30700
		041b0104b53c22789e3035a7554ea326
		0f50542108007140818081c0a9c0d1c0
		8100010101014dd000a0f0703e803020
		650c58542100001a286800a0f0703e80
		0890650c58542100001a000000fd0038
		3d1e8738000a202020202020000000fc
		004c4720556c7472612048440a2001ac
		02031171449004030123090707830100
		00023a801871382d40582c4500585421
		00001e565e00a0a0a029503020350058
		542100001a0000000000000000000000
		00000000000000000000000000000000
		00000000000000000000000000000000
		00000000000000000000000000000000
		000000000000000000000000000000c8
	BorderDimensions: 4 
		supported: 4
	Border: 0 0 0 0 
		range: (0, 65535)
	SignalFormat: DisplayPort 
		supported: DisplayPort
	ConnectorType: DisplayPort 
	ConnectorNumber: 4 
	_ConnectorLocation: 4 
	non-desktop: 0 
		supported: 0, 1
  3840x2160 (0x1c0) 533.250MHz +HSync -VSync *current +preferred
        h: width  3840 start 3888 end 3920 total 4000 skew    0 clock 133.31KHz
        v: height 2160 start 2214 end 2219 total 2222           clock  60.00Hz
  3840x2160 (0x1c1) 266.640MHz +HSync -VSync
        h: width  3840 start 3848 end 3992 total 4000 skew    0 clock  66.66KHz
        v: height 2160 start 2214 end 2219 total 2222           clock  30.00Hz
  2560x1440 (0x1c2) 241.500MHz +HSync -VSync
        h: width  2560 start 2608 end 2640 total 2720 skew    0 clock  88.79KHz
        v: height 1440 start 1443 end 1448 total 1481           clock  59.95Hz
  1920x1080 (0x1c3) 148.500MHz +HSync +VSync
        h: width  1920 start 2008 end 2052 total 2200 skew    0 clock  67.50KHz
        v: height 1080 start 1084 end 1089 total 1125           clock  60.00Hz
  1920x1080 (0x1c4) 148.350MHz +HSync +VSync
        h: width  1920 start 2008 end 2052 total 2200 skew    0 clock  67.43KHz
        v: height 1080 start 1084 end 1089 total 1125           clock  59.94Hz
  1600x900 (0x1c5) 108.000MHz +HSync +VSync
        h: width  1600 start 1624 end 1704 total 1800 skew    0 clock  60.00KHz
        v: height  900 start  901 end  904 total 1000           clock  60.00Hz
  1280x1024 (0x1c6) 108.000MHz +HSync +VSync
        h: width  1280 start 1328 end 1440 total 1688 skew    0 clock  63.98KHz
        v: height 1024 start 1025 end 1028 total 1066           clock  60.02Hz
  1280x800 (0x1c7) 83.500MHz -HSync +VSync
        h: width  1280 start 1352 end 1480 total 1680 skew    0 clock  49.70KHz
        v: height  800 start  803 end  809 total  831           clock  59.81Hz
  1280x720 (0x1c8) 74.250MHz +HSync +VSync
        h: width  1280 start 1390 end 1430 total 1650 skew    0 clock  45.00KHz
        v: height  720 start  725 end  730 total  750           clock  60.00Hz
  1280x720 (0x1c9) 74.180MHz +HSync +VSync
        h: width  1280 start 1390 end 1430 total 1650 skew    0 clock  44.96KHz
        v: height  720 start  725 end  730 total  750           clock  59.94Hz
  1152x864 (0x1ca) 81.750MHz -HSync +VSync
        h: width  1152 start 1216 end 1336 total 1520 skew    0 clock  53.78KHz
        v: height  864 start  867 end  871 total  897           clock  59.96Hz
  1024x768 (0x1cb) 65.000MHz -HSync -VSync
        h: width  1024 start 1048 end 1184 total 1344 skew    0 clock  48.36KHz
        v: height  768 start  771 end  777 total  806           clock  60.00Hz
  800x600 (0x1cc) 40.000MHz +HSync +VSync
        h: width   800 start  840 end  968 total 1056 skew    0 clock  37.88KHz
        v: height  600 start  601 end  605 total  628           clock  60.32Hz
  720x480 (0x1cd) 27.000MHz -HSync -VSync
        h: width   720 start  736 end  798 total  858 skew    0 clock  31.47KHz
        v: height  480 start  489 end  495 total  525           clock  59.94Hz
  640x480 (0x1ce) 25.175MHz -HSync -VSync
        h: width   640 start  656 end  752 total  800 skew    0 clock  31.47KHz
        v: height  480 start  490 end  492 total  525           clock  59.94Hz
  640x480 (0x1cf) 25.170MHz -HSync -VSync
        h: width   640 start  656 end  752 total  800 skew    0 clock  31.46KHz
        v: height  480 start  490 end  492 total  525           clock  59.93Hz
DP-1 disconnected (normal left inverted right x axis y axis)
	Identifier: 0x1d0
	Timestamp:  28320
	Subpixel:   unknown
	Clones:    
	CRTCs:      0 1 2 3
	Transform:  1.000000 0.000000 0.000000
	            0.000000 1.000000 0.000000
	            0.000000 0.000000 1.000000
	           filter: 
	CTM: 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 
		0 1 
	CscMatrix: 65536 0 0 0 0 65536 0 0 0 0 65536 0 
	BorderDimensions: 4 
		supported: 4
	Border: 0 0 0 0 
		range: (0, 65535)
	SignalFormat: TMDS 
		supported: TMDS
	ConnectorType: DisplayPort 
	ConnectorNumber: 4 
	_ConnectorLocation: 4 
	non-desktop: 0 
		supported: 0, 1
DVI-D-1 disconnected (normal left inverted right x axis y axis)
	Identifier: 0x1d1
	Timestamp:  28320
	Subpixel:   unknown
	Clones:    
	CRTCs:      0 1 2 3
	Transform:  1.000000 0.000000 0.000000
	            0.000000 1.000000 0.000000
	            0.000000 0.000000 1.000000
	           filter: 
	CTM: 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 
		0 1 
	CscMatrix: 65536 0 0 0 0 65536 0 0 0 0 65536 0 
	BorderDimensions: 4 
		supported: 4
	Border: 0 0 0 0 
		range: (0, 65535)
	SignalFormat: TMDS 
		supported: TMDS
	ConnectorType: DVI-D 
	ConnectorNumber: 2 
	_ConnectorLocation: 2 
	non-desktop: 0 
		supported: 0, 1

If anyone comes across this later you can solve this in xorg.conf (you may need to generate the file) by setting:

Option "AllowHMD" "yes"

https://download.nvidia.com/XFree86/Linux-x86_64/384.98/README/xconfigoptions.html