A good effort, if a bit odd: Windows 10 IoT Core on Raspberry Pi 2
The question is, does the Pi really need Windows?
Setting up Windows 10 IoT Core on a Pi 2 is a matter of signing up to Microsoft’s preview programme, downloading an SD card image and writing it to a card using Windows 10 technical preview. The documentation says you need a physical Windows 10 machine in order to get access to a card reader, but apparently VMWare can also work.
Next, you pop the card into your Pi, preferably with an HDMI display attached, and boot up. You can also connect a USB keyboard and mouse. It takes a while to boot – especially the first time, when some set-up tasks run – but it worked first time for me, displaying a screen of information including the device name and IP address.
Doing anything with the Pi requires a remote connection. I was able to connect via PowerShell, change the password and deploy a HelloWorld UAP app from Visual Studio 2015 running on Windows 10 build 10074. Everything worked first time. File sharing is on by default and I was able to browse the file system from another PC using the built-in administrative shares C$ and D$.
The overall size of Windows IoT Core is similar to the stripped-down Nano Server, which we looked at here. It is a crude measure, but the Windows folder on the Pi contains 809MB in 3,356 files, whereas on Nano it is 946MB and 9,194 files.
I opened a not-entirely-trivial Windows Store game app project (a work in progress) in Visual Studio and tried running that on the Pi. Again, it worked first time, even though it is not strictly a UAP app. Performance was not great, but it was playable.
Visual Studio’s remote debugger works well with the Pi, giving you breakpoints, variable inspection and so on, but there is no virtual machine option so you have to exercise your app on the Pi itself.
If the app also runs on a PC you can test it there, which is more convenient, but as soon as you need to interact with the Pi’s GPIO (general purpose input/output pins) or other Pi-specific hardware, this will not work.
A built-in web application on the Pi lets you monitor and manage the device. This is rather good and includes the ability to list, install, start and stop UAP apps, see running processes, check CPU, I/O and memory usage, download kernel dumps for debugging, check network configuration and more.
Efforts to run Python apps on the Pi failed initially, but a browse through the forums revealed a registry key you can set to overcome an incompatibility with some SD cards. Once added, Python apps worked, using Microsoft’s Python UAP SDK.
An ideal scenario is where you have developed an app which you want to run automatically on start-up. A tool called IotStartup lets you specify the app to run, using PowerShell.
Does the Raspberry Pi need Windows?
Does the Raspberry Pi need Windows? It already runs several varieties of Linux, including Raspbian (based on Debian), Ubuntu and Fedora. These distributions lack the peculiarities of Windows IoT Core, with full access to the local command shell, as well as a desktop GUI should you need it. You can even run .NET applications using Mono and it should support the cross-platform .NET Core as well. So what is the point of Windows?
Putting Windows 10 IoT Core on a Pi makes it less capable than it would be running Linux, but there will still be cases where it makes sense. In an educational context, where you want a smooth workflow for developing an app in Visual Studio, and testing and deploying on the Pi, it could work well.
Visual Studio is a rich IDE, and with support for C#, Visual Basic, Python, Node.js and C++, there is plenty of scope for language experimentation. This does imply Windows desktops in the classroom, and of course the promotion of Windows and its new Universal App Platform is Microsoft’s incentive for investing in the Pi community.
Microsoft’s strategic goals may explain why IoT Core lacks a command shell or Windows desktop, both of which would be welcome among Pi users attempting to use it like a PC. The software giant is trying to drive developers towards UAP.
There is value here for Microsoft platform developers developing apps that will integrate with Windows server applications and device management.
These are special cases, though. Playing with the technical preview is a lot of fun if you are familiar with Visual Studio and Windows, but do not expect Linux to be displaced from the Pi mainstream any time soon.
Head here if you want to give Windows IoT Core a try. ®