Oculus Roomscale: Balancing Bandwidth on USB

Oculus Blog
Posted by Oculus VR
January 26, 2017

NOTE: These blogs were written specifically for owners of the original Rift. They do not apply to Rift S, which comes with a built-in room-scale solution: the Oculus Insight tracking system.

Part 2 in a 4-Part Series
Check out the rest of the series below:

Welcome to the second installment of our Oculus Roomscale* series, running all this week! In yesterday’s post, we took a deep dive on sensor placement. Today, we’ll cover balancing bandwidth across USB 3.0 and USB 2.0.

USB Bandwidth and Host Controllers
What does it mean to “balance the tracking data transfer load across your USB connections” anyway?

Most home PC owners don’t really push their USB very hard. You might connect an HD webcam, but many devices (other than external storage) don’t have a very high bandwidth requirement. If you connect three Oculus sensors—each sending and managing a ton of data locally—you can run into problems when they try to send more data than the USB host controller can handle. That’s why we recommend only connecting two sensors in USB 3.0 mode to a single USB host controller and connecting the third sensor in USB 2.0 mode.

That said, in our experience connecting two of three sensors to USB 3.0 and one to USB 2.0 works just fine. These guidelines are here to help you try other configurations or to potentially improve some USB issues with your particular computer setup.

Recommended three-sensor configuration (two USB 3.0 and one USB 2.0)

Your computer’s motherboard has a large number of chips on it that provide different functions. One is a USB host controller, which controls USB devices and sends data between those devices and your computer.

A typical motherboard with three sensors connected to a single host controller

A single USB host controller almost always serves more than one USB port, but the total bandwidth available to those ports will be shared. Think of a single USB port with a four, or even eight-port hub attached. The total available bandwidth for any host controller or root hub can be something close to the following (your bandwidth can vary):

  • • USB 3.0 — Total theoretical bandwidth per host controller = 5Gbps (625MB/s)
  • • USB 3.0 — Total practical bandwidth per host controller = 3.2Gbps (~400MB/s)

  • • USB 2.0 — Total theoretical bandwidth per host controller = 480Mbps (60MB/s)
  • • USB 2.0 — Total practical bandwidth per host controller = 308Mbps (~36MB/s)

You’ll notice that USB 3.0 has significantly more available bandwidth than USB 2.0. That said, we’ve discovered some patterns while testing different USB 3.0 host controllers from various manufacturers.

Connecting more than two sensors to a single USB 3.0 host controller can cause sporadic behavioral issues and lost sensor data, which affects tracking quality and your VR experience.

Since devices connected to the same host controller in USB 2.0 mode don’t share bandwidth with USB 3.0 devices, It's generally better to have a reliable lower-bandwidth USB 2.0 connection for your third sensor than to run three high-bandwidth USB 3.0 connections at the same time.

  • • USB 3.0 — Connect a maximum of two sensors per host controller
  • • USB 2.0 — Connect a maximum of two sensors per host controller

Keep in mind that the USB 3.0 maximum connected sensor recommendation is based on typical compatibility observations and is not a hard and fast rule. When you connect two sensors to a single USB host controller in USB 2.0 mode, you’ll use about 80% of the host controller’s available bandwidth. As such, connecting more than two Oculus sensors in USB 2.0 mode to a single host controller simply won’t work reliably under any circumstances.

Keep these pointers in mind when connecting sensors to your PC:

  1. PCs have varying numbers of host controllers, which share bandwidth across multiple USB ports.
  2. The max bandwidth of devices connected to a single host controller is usually about 400MB/s in USB 3.0 mode and 36MB/s in USB 2.0 mode.
  3. These bandwidth numbers are generally independent between USB standards, so using USB 3.0 bandwidth doesn’t reduce available USB 2.0 bandwidth on the same host controller.
  4. We recommend connecting a maximum of two sensors to a given host controller in either mode. Our current recommendation for the best experience is a max of two USB 3.0 and one USB 2.0 for a total of three sensors.
  5. Plugging a USB hub into your computer doesn’t increase the amount of available bandwidth on a given host controller, so we don’t recommend using hubs to connect sensors to your PC.

We hope this helps manage your USB bandwidth for your own Oculus roomscale set up. Stay tuned for our next post, where we’ll talk about identifying your host controllers!

— The Oculus Team

*Roomscale is an optional feature. Your results and performance may vary. Not all PCs will have enough ports to support roomscale, including some PCs that otherwise meet our recommended and minimum specs.