Virtual Reality Passthrough VIVE & Oculus, 4 Gamers 1 CPU with NVIDA Cards (WIP)


Recommended Posts

I got everything working on my 6.3.0-rc5 setup using an m.2 Samsung NVMe 950 Pro 512GB and an Asus Strix GTX 1080 with the following steps.

 

Preliminary: Figure out which PCIe controller you need to stub / passthrough to the VMs in the Flash syslinux.cfg editor (click your USB drive's name on the Main page)

 

1. Install Windows 10 VM:

  • RAM/CPU - minimum +4GB / +2 CPUs
  • Virtio-1.118-2
  • Q35-2.4
  • Set VNC to Cirrus
  • No external PCIe components passed through
  • USB Mode - EHCI 2.0

 

2. After VM install:

  • Install VirtIO Host package in VM (located on CD image in This PC)
  • Download and install TeamViewer free (to remove need of VNC and use TeamViewer to remote in)
  • Download Geforce Experience and preload the drivers

 

3. Shutdown VM:

  • Enable GPU passthrough via regular VM editor
  • Connect Vive through USB 2.0 motherboard port
  • Enable all Vive components via VM editor (take note of 0x2c87 & 0x2101 duplicated devices)
  • Go to Tools -> System Devices -> Scroll down to USB Devices
  • Take note of the "Bus 002 Device 003" for the IDs listed above
  • Go to Edit XML for the VM and add:

<address bus='1' device='52'/>

after the 4 entries (two for 0x2c87 and two for 0x2101)

<hostdev mode='subsystem' type='usb' managed='no'>
      <source>
        <vendor id='0x0bb4'/>
        <product id='0x2c87'/>


  • (Change the Bus and Device #'s to whatever yours says in System Devices)

 

4. Startup VM for initial Vive Install:

  • Drivers for parts of the Vive will install
  • Download Steam & Vive Setup; install in that order
  • Your Vive should be working with basic functionality (no camera)
  • Enable and then install the Bluetooth driver via SteamVR settings

 

5. Final setup for full Vive functionality:

  • Edit VM normally, not XML
  • Disable VNC, enable passthrough of your GPU
  • Set USB Mode - XHCI 3.0
  • Disconnect Vive USB from USB 2.0 and reconnect to additional PCIe 3.1 card
  • Boot VM
  • Additional USB Audio and Camera driver should install
  • Your Vive should be working with full functionality
  • Enjoy!

 

 

Notes:

 

I used a dual USB 3.1 + Ethernet card so that I can have a dedicated connection to the VM:

 

Syba 3 Port USB 3.1 Gen 1 and Gigabit Ethernet PCI-e 2.0 X1 Card Components Other (SD-PEX50100) $29.99

https://www.amazon.com/gp/product/B01JT5KB8M/ref=as_li_qf_sp_asin_il_tl?ie=UTF8&tag=erichner-20&camp=1789&creative=9325&linkCode=as2&creativeASIN=B01JT5KB8M&linkId=683f11016b1a2d5f779081a351bbb5b5

Link to comment

Hi I am thinking of getting a vive or occulus.

 

So with a USB controller passed through does  vive work fine in the VM?

I don't have any other gaming machine other than my VM ,so I would like to be sure I can use it with a VM okay.

Also, what do you think of occulus vs vive? Sorry don't know a lot about VR.

 

The best way to run the vive on a VM is by passing the USB controller. Some controllers still have issues. Even without running on a VM, there can be issues. I pass a USB 3.1 controller on my new ASUS x99 board and run my vive off that. I started this post when I didn't have such options with my older x99 ASRock board.

 

If you pass a USB 2/3 controller though and you still have issues, then consider buying one of the PCIe USB 3.1 cards and passing that though.

https://www.reddit.com/r/Vive/comments/4l0c68/psa_getting_a_pcie_usb_3_card_solved_all_my_vive/

 

To be honest with you. It took me 5 months just to get my setup working due to the motherboard dropping a GPU and crashing my machine at random intervals, that once I had it working, i set up the Vive and haven't touched the occulus yet. It is still in its plastic wrapping. I've been waiting for the touch sensors on the occulus.

 

The vive was just on sale, during Black Friday.  If you do get the vive, don't get two if you will be using them in the same room because the lighthouses will interfere with each other.

 

great thanks for the info  :)

Link to comment

I got everything working on my 6.3.0-rc5 setup using an m.2 Samsung NVMe 950 Pro 512GB and an Asus Strix GTX 1080 with the following steps.

 

Preliminary: Figure out which PCIe controller you need to stub / passthrough to the VMs in the Flash syslinux.cfg editor (click your USB drive's name on the Main page)

 

1. Install Windows 10 VM:

  • RAM/CPU - minimum +4GB / +2 CPUs
  • Virtio-1.118-2
  • Q35-2.4
  • Set VNC to Cirrus
  • No external PCIe components passed through
  • USB Mode - EHCI 2.0

 

2. After VM install:

  • Install VirtIO Host package in VM (located on CD image in This PC)
  • Download and install TeamViewer free (to remove need of VNC and use TeamViewer to remote in)
  • Download Geforce Experience and preload the drivers

 

3. Shutdown VM:

  • Enable GPU passthrough via regular VM editor
  • Connect Vive through USB 2.0 motherboard port
  • Enable all Vive components via VM editor (take note of 0x2c87 & 0x2101 duplicated devices)
  • Go to Tools -> System Devices -> Scroll down to USB Devices
  • Take note of the "Bus 002 Device 003" for the IDs listed above
  • Go to Edit XML for the VM and add:

<address bus='1' device='52'/>

after the 4 entries (two for 0x2c87 and two for 0x2101)

<hostdev mode='subsystem' type='usb' managed='no'>
      <source>
        <vendor id='0x0bb4'/>
        <product id='0x2c87'/>


  • (Change the Bus and Device #'s to whatever yours says in System Devices

 

4. Startup VM for initial Vive Install:

  • Drivers for parts of the Vive will install
  • Download Steam & Vive Setup; install in that order
  • Your Vive should be working with basic functionality (no camera)
  • Enable and then install the Bluetooth driver via SteamVR settings

 

5. Final setup for full Vive functionality:

  • Edit VM normally, not XML
  • Disable VNC, enable passthrough of your GPU
  • Set USB Mode - XHCI 3.0
  • Disconnect Vive USB from USB 2.0 and reconnect to additional PCIe 3.1 card
  • Boot VM
  • Additional USB Audio and Camera driver should install
  • Your Vive should be working with full functionality
  • Enjoy!

 

 

Notes:

 

I used a dual USB 3.1 + Ethernet card so that I can have a dedicated connection to the VM:

 

Syba 3 Port USB 3.1 Gen 1 and Gigabit Ethernet PCI-e 2.0 X1 Card Components Other (SD-PEX50100) $29.99

https://www.amazon.com/gp/product/B01JT5KB8M/ref=as_li_qf_sp_asin_il_tl?ie=UTF8&tag=erichner-20&camp=1789&creative=9325&linkCode=as2&creativeASIN=B01JT5KB8M&linkId=683f11016b1a2d5f779081a351bbb5b5

 

Sorry I dont have a vive, so these questions may sound a bit stupid

1. Is there any reason you did not just install the OS using GPU pass through from the beginning, rather than using vnc/teamviewer then removing vnc and then putting in gpu pass through?

2. Step 5 should read enable pass through of PCIe 3.1 card, yes? Why do you have to install the driver for the vive usb devices connected to the motherboard usb 2.0 first.

    Does it not work if PCIe 3.1 is passed through on vm creation and vive then plugged into the usb on the passed through controller?

Link to comment

 

3. Shutdown VM:

  • Enable GPU passthrough via regular VM editor
  • Connect Vive through USB 2.0 motherboard port
  • Enable all Vive components via VM editor (take note of 0x2c87 & 0x2101 duplicated devices)
  • Go to Tools -> System Devices -> Scroll down to USB Devices
  • Take note of the "Bus 002 Device 003" for the IDs listed above
  • Go to Edit XML for the VM and add:

<address bus='1' device='52'/>

after the 4 entries (two for 0x2c87 and two for 0x2101)

<hostdev mode='subsystem' type='usb' managed='no'>
      <source>
        <vendor id='0x0bb4'/>
        <product id='0x2c87'/>


  • (Change the Bus and Device #'s to whatever yours says in System Devices

 

The script I wrote was to detect and attach the vive components to the PC because of one key issue.

I discovered that editing the xml and specifying the IDs will work but only as you don't change anything on your pc configuration. If you unplug any of the vive USBs and plug them back in, you will loose connection to your vive.  The script is to attach the vive to the running VM without reboot.

If you do reboot your VM, it will give a device error because the USB Vive is registered as a different ID when you plug it back in.

 

Do you have time to test unplugging the Vive, rebooting the VM and confirming that it will give you an XML error when you attempt to start?

Then using the script to attach the vive back to your running VM.

 

If everything works for you at that point, I'll set up a new windows 10 to confirm the process. After that I'll update the main post and reference your contribution. Thank you.

Link to comment
  • 1 month later...

Hi I am thinking of getting a vive or occulus.

 

So with a USB controller passed through does  vive work fine in the VM?

I don't have any other gaming machine other than my VM ,so I would like to be sure I can use it with a VM okay.

Also, what do you think of occulus vs vive? Sorry don't know a lot about VR.

 

I pass through my USB controller, it works fine with my vive.

 

Also get a vive! Room scale is INSANE!

Link to comment
  • 2 weeks later...

Hey, guys.

 

Love the script. After a little tinkering, I was about to get it to work near perfectly.

The only problem I am having is the vive audio. It appears in Windows, however, when set as the primary audio device, windows acts as if there are no audio devices present.

 

IE, I can play a video through HDMI audio - Works great. Switch to the VIVE audio, nothing. Video Won't even play.

 

Would anyone here have a suggestion for me? 

 

Link to comment

I'm going to give this a try with a slightly different build using a high-end Xeon server chip.  Here's the parts list I'm putting together:

https://pcpartpicker.com/list/JPdsjc

 

The main differences:

1) Using a 22 core Xeon instead of 6 core

2) Using 1070s instead of 1080s to help with thermal management (Build shows 2, but I plan to bump up to 4 if 2 work out ok)

3) Using Gigabyte x99 Designare EX board

 

The solutions for USB passthrough on this thread seem focused on passing a single Vive to a single VM.  Will these solutions scale to multiple Vives and multiple VMs? 

 

Link to comment

Hey Harperhendee,

 

Just so you know I did get my working however there were issues. I have very choppy performances and often the vm would need to be reset in order to work.

I also had stuttering issues when I was in game. I would recommend using a pci USB if possible.

 

Link to comment
  • 3 weeks later...

I'm still trying to get any VM to work, even in VNC mode.  They are all currently crashing to UEFI shell.  I think I have something messed up in the BIOS that is interfering with normal boot order.  I was getting kicked to BIOS every time when booting to the USB flash drive.  I would then force it to boot from the device and it would go.  But then I had a secondary problem--when I boot from the Gigabyte Designare's USB ports (any of the USB3), then I get some USB controller run-time errors.  It boots me to the GUI with a number of mounts missing.  When I moved the USB Flash drive to my PCIE USB card, it booted correctly.  But this is no good--I want to hand that USB card off to my VM.

 

--Harper

Link to comment

 

 Hi! new to the forum and new to unraid so far got the vive to work on one VM running a 960 but have problems getting a 1060 to be recognised by windows

 both cards work ok on the same motherboard without using Unraid not sure what the problem might be had plans to replace the 1060 for a second 1060 or

 a 1070 but now must hold until I find out what might be blocking the card drivers from installation, also tried installing drivers on both VMs using the 960 to trick

 windows once I make the switch but as soon as I plug the 1060 windows fails to use the installed drivers tries to install new ones and fails, have the second vive 

ready and waiting for this to work.

 

  Any clues?

 

  Motherboard  Dual 2011 WN7Y6 from a dell precision T5610

  CPU Dual  XEON E5-2670 2.6 GHz 20 MB 8-Core ... 16 cores in total half on each VM

  56 megs ram 24 assigned to each VM

  

 let me know thanks in advance.

Tony D.

Edited by parsec3d
Link to comment

I managed to get both the Vive and Oculus to run simultaneously on two machines.  The performance is very good.  

 

The main issue I have come across is that the Vive touch controllers periodically disappear, then needs to be turned on again.  I haven't had this issue with oculus touch controller, XBOX controller or the steam controller.  When the controller comes back, it acts a bit jittery for a second, then settles down.  Strangely enough, the issue seems to happen much more often on my right hand controller.  Perhaps because I am using it more for interaction?  I'm not sure.  I've got a few ideas though:

 

Assume the data path goes something like this:

Vive Touch Controller ->

  Vive Headset(?) ->

    USB 3.0 ->

      VIVE interface box->

        USB 3.0 extension cable (10 ft) ->

          USB 3.0 A to A cable (1 ft) ->

            USB 3.0 PCIE hub/bridge ->

              PCIE (remapped) ->

                Virtual Machine->

                  Vive Drivers ->

                    SteamVR

 

Theories:

1) The Vive controllers are timing out on some handshake between Vive and VM.  

Could be that every time I click on something, the VM needs to acknowledge the click.  Perhaps there are some signal integrity problems on the USB or PCIE interfaces causes retries that take just a tad too long.  There are a lot of hops from controller to VM.

 

2)  The Vive controllers don't understand that they are actually being used and power down, because they are idle.

This is similar to theory #1, but assumes no handshake, but a heartbeat sent periodically.  Perhaps the heartbeat occasionally screws up and the Vive controller thinks the PC has died.

 

Possible solutions:

1)  Remove the VIVE box and shorten all cables.  I'm not sure if this will kill the connection

2)  Use a direct to PCH USB port, and pass through instead of whole PCIE card.  I've got a couple of USB ports that go straight to the PCH, no USB hubs in between.

3)  Remove all other PCIE devices

    * Other USB hub

    * 1x GFX card

4)  Remove as many USB devices as possible

 * Use PS/2 connector for unraid keyboard/mouse

 * Use RDP to control the VM from unraid or another machine

 

 

 

--Harper

 

Link to comment

@parsec3d,

 

Are those your only two graphics cards?  Unraid is going to completely occupy one of them.  I haven't been able to move past this issue to get all three of my 1070s available for VMs yet.  Whenever I pass through the 1070 that Unraid is displaying to, it goes blank and ceases to work for either unraid or the VM.

Link to comment

There is an issue with some NVIDIA GPUs where you have to disable hypervisor.  Something to do with preventing scientists for using consumer GFX cards for big data crunching (which is a different, more expensive product).  I had  no luck at all with my 1070s until I stumbled on this switch by trial and error.  

 

Link to comment
9 hours ago, parsec3d said:

 

 Disabled hypervisor no luck, not sure if this might be directly related to my card or the MB since outside unraid they work ok .

Still need to build a small gaming machine next week will test with that card.

 

any suggestions?

 

 

Have you tried switching between ovmf and seabios? You need to create a new VM to test this.

Link to comment
  • 1 month later...
On 12/10/2016 at 3:39 AM, Baltostar said:

 

The script I wrote was to detect and attach the vive components to the PC because of one key issue.

I discovered that editing the xml and specifying the IDs will work but only as you don't change anything on your pc configuration. If you unplug any of the vive USBs and plug them back in, you will loose connection to your vive.  The script is to attach the vive to the running VM without reboot.

If you do reboot your VM, it will give a device error because the USB Vive is registered as a different ID when you plug it back in.

 

Do you have time to test unplugging the Vive, rebooting the VM and confirming that it will give you an XML error when you attempt to start?

Then using the script to attach the vive back to your running VM.

 

If everything works for you at that point, I'll set up a new windows 10 to confirm the process. After that I'll update the main post and reference your contribution. Thank you.

 

I had to upgrade my unRAID setup to 6.3.3 a few months back after a USB drive died.

 

I feel like an idiot, but how would I run your script in Windows 10? I am still trying to get this to work again.

Link to comment

My Vive setup has been pretty solid ever since I updated to the beta drivers.  But I'm using a PCIE USB card to pass in the USB devices.  There are a lot of USB endpoints in the Vive controller:


Bus 009 Device 005: ID 0bb4:2744 HTC (High Tech Computer Corp.)
Bus 009 Device 006: ID 0bb4:2134 HTC (High Tech Computer Corp.)
Bus 009 Device 007: ID 0bb4:0306 HTC (High Tech Computer Corp.)
Bus 009 Device 008: ID 0424:274d Standard Microsystems Corp.
Bus 009 Device 009: ID 0d8c:0012 C-Media Electronics, Inc.
Bus 009 Device 010: ID 0bb4:2c87 HTC (High Tech Computer Corp.)
Bus 009 Device 011: ID 28de:2101  
Bus 009 Device 012: ID 28de:2101  
Bus 009 Device 013: ID 28de:2000  
Bus 009 Device 014: ID 0bb4:2c87 HTC (High Tech Computer Corp.)

 

There are several problems:

1) The wireless controllers share the same vendor/device ids

2)  The wireless controllers will disconnect when powered down or sometimes during gameplay

 

The real issue is that the Vive is a mini subsystem held together by a USB hub.

Link to comment
On 4/29/2017 at 0:04 PM, erichner said:

Can you share the file or version number?
 

I don't have backups for it.

I don't have this handy, but I enabled it by going to Steam and selecting "enable beta".  This is somewhere in the Steam app, not the SteamVR app.  Go to the SteamVR page inside the Steam App, then hunt down this switch.

 

--Harper

Link to comment
@parsec3d,
 
Are those your only two graphics cards?  Unraid is going to completely occupy one of them.  I haven't been able to move past this issue to get all three of my 1070s available for VMs yet.  Whenever I pass through the 1070 that Unraid is displaying to, it goes blank and ceases to work for either unraid or the VM.


Is this not where you need to dump the card bios and refer to it in the VM xml? I only have a single card and have to do that in order to not have a blank screen.


Sent from my iPad using Tapatalk
Link to comment
  • 11 months later...
On 6/14/2016 at 4:14 PM, jonp said:

We've purchased an HTC Vive here at Lime Technology and have been testing with it extensively.  So far, it's working fantastic!  USB controller pass through is going to be a requirement most likely (still no success with simple assignment), but when you do that, it works very very well!

THANK GOD I FOUND THIS!!!

After a day of trying to find out how two lighthouses can be used for multiple vm vive users, I almost lost it.

 

How are they effectively connected?

Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.