Microsoft announced a bunch of cool things for the Maker inclined at Build 2015, including support for running a special version of windows server “Windows 10 IoT (Internet of Things)” on a rasberry pi 2. The official walkthrough is pretty good but there were a few hoops I had to jump through to get things up and running;
Provisioning the SD card
The official documentation claims that you’ll need a physical install (read: not a VM) of Windows 10 on your desktop in order to provision the SD card. The forum members have a few workarounds up their sleeves and I personally found success with this SD card mounting trick under vmware.
Core Watcher not starting
Microsoft provides a tool to display detected Windows 10 IoT devices on your network called “Windows IoT Core Watcher”. I was getting a crash on startup and after hooking up a debugger discovered an issue with strong naming in the assembly. The product team is aware of the issue but I had to strip out the signature using snremove to get it to start.
Windows IoT Core Watcher couldn’t find my device
After booting Windows 10 IoT on the raspi and configuring the device through powershell, it still wasn’t showing in the Windows IoT Core Watcher application
It turns out the mechanism for device discovery uses UDP multicast, which wasn’t enabled in my network configuration. After enabling IGMP snooping the device appeared in the core watcher application.
Couldn’t deploy to device
On my first attempt to deploy\debug via visual studio to the pi I ran into this:
Error: Unable to connect to the Microsoft Visual Studio Remote Debugger named '10.0.0.14'. The Visual Studio 2015 Remote Debugger (MSVSMON.EXE) does not appear to be running on the remote computer. This may be because a firewall is preventing communication to the remote computer. Please see Help for assistance on configuring remote debugging.
========== Deploy: 0 succeeded, 1 failed, 0 skipped ==========
Buried in one of the samples is a mention that the Remote Debugger may have timed out. You can start it back up again from a powershell session with;
schtasks /run /tn StartMsvsmon
I’m not clear on the timeout period, but I was able to avoid a reoccurance by setting up an hourly scheduled startup of the remote debugger service with;
schtasks /change /tn StartMsvsmon /RI 60 /RU "System"
Read more about schtasks here