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.
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.
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).
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.
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.
It also comes bundled with instructions and a demo app which flashes an LED if connected to the GPIO headers.
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.