Thank you to everyone that attended my talk yesterday at Global Azure Day Milwaukee. Let me know if any questions didn’t get answered. Attached are the slides and a link to the demo. Expect blog posts in the next couple weeks that cover some of the details that I glossed over to fit in my hour time slot:
What lead me down this path is my desire to use PAAS whenever possible and avoid IAAS unless its absolutely necessary. Often the number one security requirement for a deployment is to put your services behind a WAF (Web Application Firewall) to offer a first line of defense against many different types of attacks.
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!
Emerging technologies are disrupting the way companies do business. Natural language processing, mixed reality, and digital ink are a few of the technologies that are changing the ways we interact with customers, empower our employees, optimize processes and develop products.
The new age of ubiquitous computing and ambient intelligence calls for capabilities that extend the power of the cloud to mobile and IoT devices. This cloud-enabled “Intelligent Edge” of devices give your users and customers access to data, applications, and intelligence where they are, creating a new class of applications.
I’ve updated this tutorial to use the MixedReality Toolkit packages, which is a great improvement. (Nice job MRToolkit team, this was a huge step forward in usability!) I’ve also updated the tutorial to use Unity 2017.1 and the latest Visual Studio 2017. There is an incompatibility between 2017.1 and VS 2017 so make sure to update to the latest patch level that I have linked in the index. The good news is that no code changes were required. This updated version has been checked into Github. Unfortunately the HoloLens Emulator is out of date and no longer works with this tool chain.
Thank you to everyone that attended my talk at That Conference this last week. I appreciated the great turn out and all of the great questions. My apologies on not being able to attend the follow up Open Spaces session. Unfortunately somebody changed the time and I was unable to attend due to other session commitments. Please reach out to me directly or start a conversation in the comments if you would like to talk more about this talk or more advanced topics.