Trying out Windows IoT

To be brutally honest, Windows as a system is rather boring for a guy who is interested in embedded systems. Don’t take me for a zealot, though I prefer Linux for most things, Windows has its place for sure. Microsoft Excel is the killer application in my book, and there are great CAD tools like Altium and SolidWorks that make it an excellent platform for getting real work done. But for embedded systems??? Sure there was Windows CE, but that was really overkill. PalmOS was much more slick in its time! And iOS and Android are rightly putting Windows Phone in the grave. When I first read about Windows IoT, I did not bother to read any further. It sounded like another half-assed Microsoft attempt at trying to be relevant outside of desktop computing.

Yet I found I was reading an article about I2C/SPI interfaces and the Windows Driver Kit, and that sparked an interest. I can use Windows to control I2C, SPI, and GPIO devices? Please tell me more! Microsoft has created a stripped down version of Windows 10, known as Windows 10 IoT, that is capable of running on x86 and ARM processors. You can develop C++, C#, or Python apps with Microsoft Visual Studio, and then remotely debug and deploy apps to an embedded host. Now that sounded interesting! And there is more! You can download the community edition of Visual Studio for free and obtain Windows 10 IoT for free as well (permitted if you have Windows 10 Desktop). Sign me up.

So I ordered a Raspberry Pi 3 (64-bit ARM) that supposedly came with an SD card loaded with NOOBS directly from the Microsoft Store. I opened the box, pulled the microSD card out of the SD card holder, plugged it into the Pi unit, and then powered it all up. According to Microsoft, I would have the option to install Windows IoT once I booted the device via NOOBS. Imagine my surprise when I boosted the system and I found I was in Raspian! So it looks like NOOBS was *NOT* on the SD card! Annoying…

I downloaded NOOBS from the Raspberry Pi website and reformatted the SD card and decided to try again. This time the NOOBS system came up asking which system to install. I selected Windows IoT, and a browser eventually opened up asking me to login with a Microsoft account. It turns out I could not proceed since my outlook.com user account was not in the Windows Insider program. I returned to my desktop computer and registered my outlook.com account in the program–luckily it is free, unlike MSDN! I was now greeted as an Insider by Microsoft Insider’s website.

Unfortunately things got worse:

  • I returned to NOOBS, tried to login on the Pi, but Microsoft informed me I was not an Insider
  • I confirmed on my desktop that my outlook.com account is indeed part of the Insider program
  • A few more times and I gave up for the night, tired of the circular process and run-around
  • 24 hours later, on the Pi, Microsoft was still telling me I was not an Insider…yet in my Outlook.com inbox I had a welcome message to the program…
  • On my desktop, I managed to get through, and downloaded the Windows IoT ISO image; I got busy so that was it for the day…annoying
  • 48 hours later, on the Pi, Microsoft was still telling me I was not an Insider

I gave up and decided to just do a manual install. Luckily that was not so bad: download the ISO, install it on your Desktop (which extracts a disk image), and install the Windows IoT Core tool and manually flash the image to the SD card.

After that things went smoothly, the Raspberry Pi booted in Windows and grabbed an IP address off of my network switch (as it should) via DHCP with no hitches. I was even able to SSH into the device via my Linux computer. It was a pain in the ass to get this far, but it all looks interesting and I am willing to let bygones be bygones. Hopefully the hard part is over, and it will be a breeze with Visual Studio and loading software onto the Raspberry Pi.

I have to say Microsoft has a lot of work ahead of it. Instead of wasting everyone’s time with their stupid developer’s program accounts and registrations, it would be great if they just put the ISO out there for their target platforms and require tools–we want to get to work, not wait 24 hours for account registrations to be propagated within Microsoft. Also:

  1. Don’t market and sell Raspberry Pi 3’s without clearly stating you don’t yet support it!
  2. Fix the stupid Windows Insider program mess…it was ridiculous…and there was no email to send a help request to either…the guidance was to ask the community for help!
  3. Go for more spartan websites, it is tiring clicking through all of the links

More to come on Windows IoT soon I hope…from the C++ application side and Windows driver side of course!