Since Microsoft first released Windows 10 IoT core for Raspberry Pi, it is already more than 3 years. I want to show you how this system works today.
To see how to setup your raspberry pi and how you can build your first app, please see my other articles.
Windows 10 IoT in 2019
Surely, since the first release of Windows 10 IoT Core, there are many changes, and many of them improved the overall user experience with this system. Let's have a quick look at them.
To install Windows 10 IoT on your Raspberry Pi, you have to download IoT dashboard.
You can download it
Then, you must have a Microsoft account, but this account is free, and you will be prompted to create one.
The process of creating SD card is very simple. First, you will have to insert SD card to your card reader and then, you can choose what version of OS you would like to install.
In this step, you will also choose device name, and you have to set device password. Here, it is good to notice that when you try to login to your device, username is
administrator also now it is possible to set up WiFi connection directly to your SD card so when you boot your device for the first time, it will connect automatically.
After you set up everything, the program will start downloading selected Windows version. Currently in 4.2019, you can choose from 3 versions of Windows 10 IoT core:
17763 (latest) 17744 (insider) 17744 (insider) Custom (here, you can choose your own *.ffu file, but I do not know how to get one)
After download, the command line window will appear and it will check your SD card.
When this is ready, another command line window will appear and system will be written to your SD card.
When it is all ready, you will be prompted to insert SD card to your device.
This entire process took about 10 - 15 minutes, depends on size of SD card you use. 8GB SD card is more than enough for Windows 10 IoT core.
You can see how the first boot of device looks like in this video.
As you can see, it took about 4 minutes to boot the first time. When you set up WiFi Connection, it connects automatically and you do not have to set it up on Raspberry. Normal boot up took about 2 minutes, and there is no user interaction needed. System goes directly to your default app (currently
You can see the normal Boot sequence in this video.
Sometimes, it can happen that system is unable to read your SD card. Then, you can get this screen.
Just try few more times, and if it is not helping try to flash your SD card again. If even this will not work, try another SD card, maybe the SD card is broken.
Same as before 3 years, Windows 10 IoT is not using full potential from Raspberry Pi 2 or 3. User experience in most of the app is rather bad, even the default app which is pre-installed on image is sometimes laggy on Raspberry Pi 3, on Raspberry Pi 2 it is even worse. But there are still some bright sides, so let's have a look at it.
WiFi (Raspberry pi 3) - Working Bluetooth - Working HDMI output - Working Audio output - Working LAN - Working USB - Working Graphics - Not Working Remote client - Not Working
What was an unpleasant surprise to me was that even after 3 years, Microsoft did not add Graphic Chip support. Raspberry board has that chip on board, and all linux distributions are fully capable of playing video. But on Windows 10 IoT, you are not able to play any video, or display some more complex graphic content because all rendering goes only through CPU and it just cannot handle it. Another thing to mention about video is that you will get no sound over HDMI. At least in default setting, maybe it is possible to set it somehow to send sound over HDMI, but in default setting, you get sound only from 3.5 mm jack.
For example, see how video playback looks like on my video.
So if you are thinking about Windows IoT and Raspberry Pi to be a great solution to some digital signage project, think again, without GPU support, you can display only slideshows, or some very simple web pages. This will be very limiting to you in time. It is good to know limitations of platform before you invest into building something on it. I personally did one project where we created digital signage solution running on Windows IoT on Raspberry Pi. But in the end, it was a huge failure because of missing GPU support and limitations depending on this. We ended up displaying every single web page, and even that was not reliable enough, because after some time (6 - 7 months), our Raspberries started to break down because of high CPU usage and overheating. Some did not start at all, and some others did display green lines over screens or similar artifacts.
Another new thing in Windows Iot Core is remote desktop client. It is a very nice feature, and you can work with your device even if you do not have a display attached, but on Raspberry Pi, it will not work. It is a known bug since 2017 and still, it is not fixed. See MSDN thread
here. I personally think it will never be fixed, same as Graphics support. Device Portal
This is a very nice option to manage your Raspberry Pi running Windows 10 IoT. Since 2016, it has been completely redesigned, and I see many improvements in it. So, let's have a look at it.
The easiest way to access device portal is to open your IoT core dashboard and right click on your device in section "
After that, it will open your browser and you will be prompted to sign in. Username is "
administrator" password you have set when creating SD card.
After login, you will see really rich user interface.
In device settings section, you can change your timezone, password and even get a screenshot from device and save it on your computer.
Apps section, you can upload your UWP app, set is as default to run after device boot, Also, you can uninstall or stop existing apps. You can manage files on your device, or quickly get some samples running on your device. This is very nice and you can quickly see some real projects running on your Raspberry Pi.
Very nice is Processes section where you can see sort of Task manager, in real time, you see your CPU, network Disk and memory usage. You can also run command on device, or see all active processes and possibly kill some.
In debug section, you can download kernel dumps, and most importantly, you can start Visual Studio remote debugger. This will allow you to debug your code directly on Raspberry Pi when you develop it.
This is a kind of device manager of your Raspberry Pi.
Connectivity is a very interesting section. Here, you can manage Bluetooth connections, WiFi connections and even set up Internet connection sharing. So probably, you can receive WiFi and share it over the ethernet or vice versa. I did not test this feature but it looks promising. Also, in
OnBoarding menu, you can set up WiFi Access point. As you see on Raspberry Pi 3, both onboard modules WiFi and Bluetooth are supported.
In Windows update section, you can check for Windows updates, or install CAB files. Unfortunately, there is no option to turn updates off.
This section is to turn on remote desktop connections, unfortunately, it is not working on Raspberry Pi. You will get only white screen, but your mouse movements will be transferred to client. In the end, it is still useless and I do not think it will be working on Raspberry some day.
This last section is empty and you can add almost any from controls which you have seen on previous pages. So you can build some kind of your own home page.
So, in the end, I think it is moving in a good direction, but sadly Raspberry Pi is not in focus of Microsoft, maybe all features are functioning on other supported boards. I hope this overview gave you some overall picture about Windows 10 IoT core and Raspberry Pi. If you will have any questions, feel free to write them in the comments below and I will respond.
9 th April, 2019: Initial version
After study on University of Zilina, I started to work as software developer in this town in Slovakia, I have worked with various technologies, a bit of mobile apps, for android and iOS In latest time I specialize in ASP .NET and .NET C# applications. I like to learn and explore new technologies. Also I like photography and traveling.
I hope with my articles here I could help another developers solve similar problems that I was facing.