I Ran Windows 10 on Raspberry Pi So You Don’t Have To
There are some tech projects you do to make yourself more productive or improve your gaming experience. And then there are crazy hacks you do, just to prove that you can. Running Windows 10 on a Raspberry Pi falls into the latter category, at least for now.
The idea of running the world’s most popular desktop OS on a Raspberry Pi is intriguing, particularly because Microsoft doesn’t support running full Windows on this $35 single-board computer. Yes, you can get an official build of Windows 10 IoT for Pi, but that OS is “Windows” in name only; it’s only meant for prototyping, not running real desktop apps.
With Windows 10 coming to Arm devices, such as Qualcomm’s Always-Connected PCs (ACPCs), we know that it’s possible to run full Windows, even win32 apps, on Arm-powered computers. And, with a lot of patience and elbow grease, you can run full Windows 10 on your Raspberry Pi, but unless you’re just curious, the painful setup is not worth your time, because the payoff is an OS you can’t really use.
It took me the better part of two business days to end up with a Windows 10-powered Raspberry Pi 3B. To be fair, after the first 3 or 4 hours, during which I experienced a slew of Blue Screens of Death (BSODS) at least a dozen times, I was able to boot into Windows 10 and set it up but had no Internet because it didn’t have drivers for either Wi-Fi or Ethernet.
Microsoft does not have a public download for Windows 10 on Arm, so you need to use an online tool from either uupdump.ml or uup.rg-adguard.net to download a script that then downloads the relevant version of the OS. Professional and Home, along with various version numbers are there. I can’t vouch for either of these sites and the legitimacy of these downloads.
You also need to use a third-party Ethernet driver, a Windows on Arm installer and a Core Packagethat all come from unofficial sources. In other words, there’s no guarantee that any of this software is safe, but during testing, I did not see any evidence that they caused harm to my PC or to the Rasperry Pi. See my article on how to install Windows 10 on Raspberry Pi if you want to try this yourself.
Finally, after following this set of instructions from a user named gjsman, I was able to get Windows 10 Professional Build 17134 running, using an Ethernet connection in my office (there’s still no driver for the built-in Wi-Fi). But using it is like watching a slow-mo video, as every single movement in the UI takes an eternity.
The operating system takes somewhere between four and five minutes to boot to the desktop, and, when you click the Start Menu for the first time during a session, you have to wait 10 to 20 seconds just for it to appear. Opening most apps is an exercise in patience, as something as simple as the Edge browser can take 30 seconds just to appear, let alone finish loading.
Loading web pages in Edge is an exercise in frustration, even with a high-speed Internet connection. Tomshardware.com takes a minute and a half or more to load and render. And doing something as simple as clicking the browser’s address bar requires another load of patience because the cursor doesn’t start showing input for several seconds. Just forget about using the Windows search box, which is so slow that I literally can’t find simple programs like the snipping tool. However, some sites, such as had-trailers.net, loaded quite a bit faster.
The worst thing about having a system this unresponsive is that you can’t always tell when your input has registered, which leads to a lot of errors when the system finally catches up with you. For example, when I clicked the Start button and nothing happened right away, I clicked it again a few times, which ultimately led it to open and close. Another time I entered a search term into the Netflix app and ended up with a typo because I didn’t know whether my first few keystrokes had registered until they appeared 5 or 10 seconds later.
The somewhat good news is that, after you’ve opened an app the first time during a session, it will open more quickly the second time, probably because of caching. And sometimes your letters do appear as soon as you type them, as they did when I opened Windows Notepad.
Don’t even think about playing videos on Windows 10 with Raspberry Pi. When I downloaded the 1080p trailer for Lego Movie 2 and watched it using Windows 10’s built-in player, the system dropped so many frames that it looked like I was watching a slideshow. And some of the frames were very pixelate. Streaming a video with the Netflix app was even worse; an episode of The Flash (yes, I was going for irony) played incredibly slow, and the app crashed after I tried to resize the window.
Just for kicks, I ran Geekbench 4.1, and, after running for over 20 minutes, the benchmark returned a multi-core score of 622. Those are the lowest scores I’ve ever seen on any computer, even other Arm-based PCs that also have to run Geekbench, a win32 app, using x86 emulation. By contrast, the Samsung Galaxy Book 2 and its Snapdragon 850 processor scored 3,575. The lowest Geekbench 4.1 score we’ve ever seen is the Celeron N4000-powered Lenovo Flex 6 11’s mark of 3,286.
With a SanDisk Ultra 64GB microSD card as my boot drive, the Pi got epically bad scores in CrystalDiskMark 6.0.2. It returned sequential reads and writes of just over 9 MBps with 4K reads and writes (the more common type) of 4.6 and 2.1 MBps (with a queue depth of 32). Even a low-end SSD is 20 to 30 times faster.
Why Windows 10 is So Slow on Raspberry Pi
Now, let’s be fair to both Microsoft and Raspberry Pi. Windows 10 isn’t supposed to run on this platform and for good reason. The Raspberry Pi 3B has just 1GB of RAM and a 1.2-GHz, quad-core Arm Cortex A-53 CPU, and it boots off a microSD card (in my case the aforementioned 64GB SanDisk Ultra).
The only reason we’re able to run Windows 10 on Raspberry Pi at all is that Microsoft has a version of Windows for Arm processors and a number of very dedicated coders created software which downloads the OS and “burns” it to a microSD card for you. Windows 10 Professional for Arm64 processors, the version I used, does not come with any optimizations for the Pi, its networking components or its GPU.
To get Ethernet working on the Pi, I had to download a separate Ethernet driver and copy it into the Core Package before burning it to the microSD card. Then, after all that, it took 20 to 30 minutes of boots and reboots to even get to the initial Windows 10 setup menu. After going through setup and seeing Microsoft’s “Just a moment” text appear at least half a dozen times for much longer than a moment, I finally had a system that takes about four minutes to boot, is slow as hell and can’t connect to Wi-Fi.
But let’s look at the bright side. This is full Windows 10 and it can run win32 apps, not just “modern” Windows apps that have been compiled for Arm processors. Keep in mind, though, that any win32 app it launches is running via x86 emulation, which means that it is even slower than it might be. Chrome browser, a win32 app, is unbelievably sluggish, which makes it just a bit worse here than Edge browser, which is made to run on Arm.
The limited amount of RAM really hurts the Pi’s Windows 10 capabilities too. Even with no programs running, Task Manager showed only about 250MB of free memory. Once you launch even a single browser tab, you’re hitting the virtual memory that’s stored in the Windows paging file, which is on a slow-moving microSD card.
Considering that Microsoft is reportedly working on a Lite version of Windows 10 ,and that Raspberry Pi Creator Eben Upton told me he would welcome full Windows to his platform, we could see a functional version of Windows 10 for Pi in the near future. On the other hand, I have to ask, “do we need Windows 10 for Raspberry Pi?”
Raspberry Pi’s official operating system, Raspbian, runs pretty well on all of the Raspberry Pi computers, even the single-core Pi Zero W. And, even the best Raspberry Pi isn’t really meant to be a primary computer. The beauty of Pi is that you can use it for building all kinds of IoT projects, such as robots, or deploy it for special use cases, such as a child’s learning computer or a retro arcade box. Raspbian has fantastic support for utilizing the Pi’s GPIO (General Input / Output pins) to control things like lights, motors and sensors.
On the other hand, if it could run Windows reasonably well, the Raspberry Pi could start competing with sub-$200 PCs, like the Dell Inspiron 3000, or cheap Chromebooks, like the Dell Chromebook 11. But let’s keep in mind that, once you buy a monitor, a keyboard and mouse, the Raspberry Pi isn’t significantly cheaper than an inexpensive laptop or desktop.
So, while it would be neat to run full Windows 10 competently on a Raspberry Pi board, it’s not a necessity for the platform to advance. Most makers and students would probably prefer the super-lightweight Raspbian.
Getting Windows 10 to run on the Raspberry Pi when it’s not supposed to is a fun challenge. But unless you really enjoy hacking things, this process is not worth your time.
Want to comment on this story? Let us know what you think in the Tom’s Hardware Forums.