Windows 10 IoT Core Public Release for Raspberry Pi 2 - Install and First Impressions

Edit: In case it’s not clear from the below; Windows 10 IoT Core is nothing like the desktop Windows you may be used to. There is no desktop. There is no shell. It doesn’t run normal Windows applications or MS Office. It is only really useful to give you access to the GPIO (and custom display/touch-screen/mouse interface) over a network.

Default App Win Pi 2

I tried the insider preview of Windows 10 IoT Core for Raspberry Pi 2 when it first came out. It was underwhelming to say the least. The mouse didn’t work. It jumped around making it unusable. The first public release is now out so I had a look to see if it was any better.

Last time I installed the full Windows 10 technical preview on an old MacBook Pro just to flash the SD card. Tricking bootcamp to allow this will have to wait for another post. But now I’ve found a way to flash the SD card without using Windows 10.

How to Install Windows 10 without Windows 10

Download the ISO from the link on the Microsoft GitHub site and extract the FFU image file with 7-zip. For the preview this was just inside a zip but now it is inside an MSI inside the ISO. 7-zip can decompress them all.

Then use this python script to covert the FFU image into a standard IMG file. Which should look something like this.

C:\Users\James\Downloads>C:\Python27\python.exe ffu2img.py File_WindowsIoTRpi2Flash.ffu  
Input File: File_WindowsIoTRpi2Flash.ffu  
Output File: File_WindowsIoTRpi2Flash.img  
Block data entries begin: 0x800f8L  
Block data entries end: 0xa6098L  
Block data chunks begin: 0xc0000L  
9721 blocks, 1244288kb written - Delay expected. Please wait.  
Write complete.  

By default the script will make a file of the same name but with a .img extension instead of a .ffu version. You can specify a different name but it will overwrite files without confirmation. It also outputs a log file that starts a bit like this.

FFUSecHeader begin: 0x0L  
cbSize = 32  
signature = SignedImage  
dwChunkSizeInKb = 128  
dwAlgId = 32780  
dwCatalogSize = 4080  
dwHashTableSize = 311200  
FFUImgHeader begin: 0x60000L  
cbSize = 24  
signature = ImageFlash  
ManifestLength = 1025  
dwChunkSize = 128  
FFUStoreHeader begin: 0x80000L  
dwUpdateType = 0  
MajorVersion = 1  
MinorVersion = 0  
FullFlashMajorVersion = 2  
FullFlashMinorVersion = 0  
szPlatformId = Broadcom.RPi.2  
dwBlockSizeInBytes = 131072  
dwWriteDescriptorCount = 9722  
dwWriteDescriptorLength = 155552  
dwValidateDescriptorCount = 0  
dwValidateDescriptorLength = 0  
dwInitialTableIndex = 0  
dwInitialTableCount = 1  
dwFlashOnlyTableIndex = 129  
dwFlashOnlyTableCount = 3  
dwFinalTableIndex = 9719  
dwFinalTableCount = 3  
Block data entries begin: 0x800f8L  
Block data entries end: 0xa6098L  
Block data chunks begin: 0xc0000L  
Block data entry from: 0x800f8L  
dwDiskAccessMethod = 1  
dwBlockIndex = 1  
dwLocationCount = 0  
dwBlockCount = 0  
...

You can then use Win 32 Disk Imager or dd to flash the image to an SD card. Much the same as you might have done with Raspbian in the pre-NOOBS days.

Win32DiskImager

Impressions

The first boot is slow but later boots are not much slower than Raspbian with a desktop. I did a quick test with identical SD cards. I can boot into a Raspbian command line via NOOBS in about 30 seconds. Getting to the desktop takes about 45 seconds total. About the same at booting to the default Windows app. Shutdown takes about the same time again. Whereas on Raspbian this is much quicker (about 10 seconds).

Welcome to Windows 10 IoT Core

One of the things I like about the Pi is that it comes with British settings as standard. Sadly it looks like this is not even an option with Windows.

Choose your language

The public release already seems much more polished than the preview. The mouse works! This means you can easily set up wireless networking and safely shutdown.

Shutdown

It also comes bundled with instructions and a demo app which flashes an LED if connected to the GPIO headers.

Tutorials

Hello Blinky

You can also SSH into the Pi which is nice. You don’t just have to use PowerShell.

The next step is to try writing some code for it. Which means installing the latest build of Windows 10 desktop and Visual Studio 2015. I think I’ll stick with Raspbian and Python for the time being.

Submit / Comment on Hacker News