Thank you to everyone from the Milwaukee Azure User Group that attended my talk earlier this week. Let me know if any questions didn’t get answered. Attached are the slides and the code from the demo:
Introducing the HoloDevelopers Wiki! This wiki is an extension to the HoloDevelopers Slack Community. The goal of this wiki is to create a repository for any information useful to Developers of Windows Mixed Reality in a format that is easy to find, reference, and contribute to. Thanks to Jesse Mcculloch for helping me get this setup as an extension to the slack community!
Setting up my Windows Mixed Reality Headset and Controllers turned out to be the most difficult hardware to get working I’ve used in at least 20 years. It took me about a week after I received my controllers to finally get my setup working correctly. (Mostly due to waiting for parts) None of the troubleshooting was easy to figure out or well documented so I hope if you have found this article that it helps you get up and running more quickly.
I should mention that I build my own machines, and my current hardware is a 3 year old gaming machine upgraded with the latest and greatest graphics. The age of my machine did contribute to these issues.
USB 3.0 Hell
Not enough USB controller resources
“Not enough USB controller resources” was the first error I got immediately when I plugged in my headset. The headset still worked although all of my Bluetooth devices stopped functioning. This turns out to be a showstopper since the controllers are Bluetooth, and the controllers are essential. My initial research suggested that this meant my usb 3.0 port was unable to provide enough power to the headset. I attempted to solve this problem with a powered USB hub. This was a false lead, although the hub was useful later on for putting a USB port in an easy to reach location for plugging and unplugging the headset.
The solution was much more complicated. I have the Asus Maximus VI Motherboard, which is an early Z87 chipset based motherboard. This motherboard contains an early implementation of USB 3.0 (not 3.1). It turns out that a sacrifice the engineers made to get more performance resulted in a limitation of 96 endpoints. This sounds like a lot but each device can take up many endpoints. When you reach 96 endpoints you receive the above error message and things stop working.
Check out USB Tree Viewer at http://www.uwe-sieber.de/usbtreeview_e.html for a great diagnostic tool to help you understand what is going on. After many modifications this is what my final, working setup looked like:
The solution to my USB 3.0 resource shortage was to add a PCI Express USB 3.1 card which does not share the limitations of 3.0:
This card requires both an open PCI Express slot as well as a power connector (SATA style). I disabled XHCI in my bios turning all of my motherboard ports into USB 2.0 ports as well.
“Something Went Wrong” error 2181038087-12
After I had tested my new USB 3.1 ports and found them working with other devices, I plugged in my mixed reality headset and got the “Something Went Wrong” error. I had installed the latest Asmedia drivers for the card, and learned that only Microsoft drivers (!?!) work with Mixed Reality headsets. The solution to this error was to downgrade my driver to the Microsoft driver. Here is a screenshot with the correct driver installed:
Notice that the Asmedia USB 3.1 ends with (Microsoft). The (Microsoft) at the end means you have one of the drivers that works with Windows Mixed Reality headsets. If you need to change drivers open the properties of the Extensible Host Controller in Device Manager and click Update Driver:
Click Browse my computer for driver software, followed by Let me pick from a list of available drivers. Look for the newest driver on the list that ends with (Microsoft).
For other issues and general hints take a look at Microsoft’s troubleshooting guide: https://developer.microsoft.com/en-us/windows/mixed-reality/troubleshooting_windows_mixed_reality
The second part of this article will cover troubleshooting Bluetooth to get the controllers to work, unfortunately this was only half the battle!