Disk Management

Installing Windows 10 IoT Core On Your Raspberry Pi

At a recent SQL Server User Group in Birmingham I presented an end to end IoT solution streaming data from sensors on a Raspberry Pi 3. What followed the talk was a very simple question from an audience member asking basically; how do you get started with doing this? It then occurred to me that I had missed out the vital information for getting the Windows 10 IoT Core operating system (OS) onto the device. In the following article I hope to redeem myself from this error of assumption. This has fallen quiet nicely as well because for the Raspberry Pi 3 the OS only came out of preview a couple of weeks ago. This means you no longer need to be an “insider” to get hold of this.

The SD Card

SDCardVsThumbNo assumptions now, lets be explicit. The Raspberry Pi 2 & 3 require micro SD cards, if your ensure which they are, these are approximately the size of your thumb nail. As well as the physical size the other important thing for Windows 10 IoT Core is you’ll need a Class 10 micro SD card. The class indicates the speed at which you can read and write from the storage, anything less than a Class 10 card will not be fast enough for this OS and it fail to boot up on the device.

In terms of capacity, so far I’ve been working with 16Gb SD cards without any issue or limits on storage. As you’ll see below once the card has been imaged is gets partitioned and on a 16Gb card a chunk of that is left unallocated.

Lastly to get the micro SD card available in your Windows desktop machine I use the following adaptors which have served me well for many years. All the micro SD cards I’ve purchased have always come with the standard SD card shell and are only pence to purchase separately if required. The final USB reader is just in case the machine doesn’t already have such a thing. All my laptops have a slot on the side, but not my desktop machines.

SDCardAdaptors

IoT Dashboard

Assuming you now have the right size, shape and smell of SD card available in Windows by far the easiest tool I found to flash the card is Microsoft’s IoT Dashboard. This is available to download and install from here: https://developer.microsoft.com/en-us/windows/iot/Docs/GetStarted/rpi3/sdcard/stable/GetStartedStep1.htm. Helpfully the IoT Dashboard is a ClickOnce install and frequently receives updates to it’s options.

On the ‘Set Up A New Device’ panel you have everything you need to install the Windows IoT Core OS image on your card.

IoTDashFlashSDCard

After selecting your required combination of board you can even now configure the hostname and admin password for the target device. Something which previously had to be done post install with PowerShell or via the settings web portal. See my previous blog post on controlling your device if you require assistance with this >>>.

Next you just need to accept the usual T&C’s and flash the card. If your chosen OS image hasn’t already been downloaded this will also be done for you as well. Lovely!

Note; elevated permissions will be required when the process comes to partition and write to the card so expect a prompt if you aren’t already a local administrator.

After the process has completed I’d strongly recommend a safe eject of the device via normal Windows methods to avoid any corruption and ultimately needing to repeat the process.

You can now insert the card into your Raspberry Pi and boot it up.

Disk Management & Card Contents

This is just extra information should you be interested in what the IoT Dashboard imaging process did to your SD card. I was certainly concerned to discover that Windows now thought my SD card was only 64Mb in size after the flashing processes!

In Windows Disk Management you will now have something that looks like the following. As mentioned above the card actually gets partitioned with only one of those partitions being a FAT file system that Windows can read and present.

WinIoTDiskManagment

To further confuse things if you boot the device and mount the admin share C$ from a UNC path of the IP address as a mapped network drive it’ll appear like you have accessed the 1.31Gb block of the partitioning. Here your Windows desktop machine will probably report something like 571Mb of the space at the network location has been consumed. So far so good right?

WinIoTUNCPathMapDrive

But, if you enter the mapped drive Select All and Right Click > Properties you’ll then find files and folder totally 1.57Gb!

WinIoTUNCProps

The shortcuts you see in the above screen shot for ‘CrashDump’, ‘Data’ and ‘EFIESP’ report the target as an “Unlabelled Volume” if you view there properties. But you can navigate to them and browse the contents.

In an attempt to work out what folders physically existed where on the SD card I took a random 2Gb ISO file and started copying it into different directories. Sadly this led to even more confusion. The only thing I think we can be sure of is that the ‘Data’ shortcut above represents the 12.86Gb partition seen in Disk Management. But even that I didn’t manage to prove because it contains a nest of other Program Files directories as well.

In conclusion we might have a 16Gb SD card, but finding out what the operating system has used and what we still have available for apps or camera pictures remains a mystery for another day.

Many thanks for reading


Paul’s Frog Blog

Paul is a Microsoft Data Platform MVP with 10+ years’ experience working with the complete on premises SQL Server stack in a variety of roles and industries. Now as the Business Intelligence Consultant at Purple Frog Systems has turned his keyboard to big data solutions in the Microsoft cloud. Specialising in Azure Data Lake Analytics, Azure Data Factory, Azure Stream Analytics, Event Hubs and IoT. Paul is also a STEM Ambassador for the networking education in schools’ programme, PASS chapter leader for the Microsoft Data Platform Group – Birmingham, SQL Bits, SQL Relay, SQL Saturday speaker and helper. Currently the Stack Overflow top user for Azure Data Factory. As well as very active member of the technical community.
Thanks for visiting.
@mrpaulandrew