It’s something almost every Raspberry Pi fan has asked at one time or another: Can it run Windows? Microsoft offers an official build of Windows 10 IoT for the Raspberry Pi, but that OS is just for building maker projects and doesn’t have the ability to run regular apps or the traditional Windows GUI (graphical user interface). However, there’s a way to make a Raspberry Pi 3 / 3B / 3B+ boot into a full version of Windows 10 Professional that can even run win32 apps.
This process of installing Windows 10 on a Raspberry Pi involves downloading the installer, drivers and the OS itself from a variety of unofficial sources. We can’t vouch for these sites or the files as being legitimate or safe. But we can say that we didn’t experience any security issues ourselves.
Based on our extensive hands-on use, we can also say that running Windows 10 on a Raspberry Pi is an exercise in frustration. Everything from the Start Menu to the Edge browser operates in slow motion. Installing it will probably take you at least an hour, and you may experience some Blue screens along the way. But when you’re done, you will be able to see what Windows 10 on Raspberry Pi is like, and, if you have an Ethernet connection, you can even surf the web on it.
The instructions below are based on a combination of gjsman’s guide and our experience performing this process several times.
Hardware you need:
- Raspberry Pi 3, 3B or 3B+ (probably also works on 3A+)
- High-speed, class 10 microSD card of at least 16GB, preferably A1 speed.
- A good 2.5-amp power adapter for the Pi.
Software you will need to download:
- SDCard Formatter
- The WoA (Windows on Arm) installer for Raspberry Pi
- The latest Core package
- Windows 10 Arm image (tested with version 17134)
- Latest Ethernet driver
1. Use SD Card Formatter to do a deep “Overwrite” format of your card. However, this may or may not be necessary depending on how your card was previously formatted or if it is completely blank.
This step may take a few minutes.
2. Download the Windows image from https://uupdump.ml/. We tested with insider build 18336, but a newer or older version may work as well or better. Make sure you choose a version that’s for arm64 (not x86 or amd64). Select Windows 10 Pro when prompted to choose a version (Home may work also, but we haven't tried). Choose download using Aria2, and convert.
3. Unzip the file (ex: 18836.1000_arm64...zip) to a folder on your PC and launch the aria2_download_windows file.
Windows smart screen will give you a warning, telling you not to run the script. Click “more info” and then “run anyway” to run it. The script takes a really long time to run (as long as 20 minutes). You can perform steps 4 to 6 while you wait. When it’s done, it will create an ISO file.
4.Unzip the Core file (ex: Core Pack 1.4.0) into its own folder.
5. Download the .Zip file version of the Ethernet driver and unzip it to its own folder.
6. Copy the ndis650 folder from the Ethernet driver into the Core Package’s /drivers/Pre-OOBE subfolder.
7. Edit the config.txt file in the Core Package’s UEFI subfolder, and add disable_overscan=1 to a line at the end if it's not already there.
8. Create a new zip file from the Core Package folder (ex: CorePackage1.4.zip). [[compressing]]
9. Right-click the ISO file that the script created for you in step 3, and select Mount. This will assign the ISO file a drive letter (ex: G:), so you can later browse it from within the WoA app.
10. Download, unzip and run the WoA installer. Windows smart screen will warn you not to run it. Click “more info” and then “run anyway.”
11. Navigate to the Advanced tab, click Import Core package and then select the Core Package zip file.
12. Under the Windows Deployment Tab, click Browse and then navigate to the ISO file you mounted to select install.wim from the /sources subfolder.
13. Click Deploy. This process will take several minutes.
14. Insert the microSD card into your Raspberry Pi then boot it up with a keyboard and mouse attached.
15. Type “exit” at the Shell prompt, and hit enter. This will take you to the BIOS menu. You need to do this because at first boot, your Pi goes to this UEFI shell instead of booting off the Windows 10 partition.
16. Select Device Manager, then Rasperry PI Configuration, then HypDxe Configuration.
17. Make sure System Boot Mode is setto “Boot in EL1.” That may be the default.
18. Navigate to the Device Manager->Raspberry Pi Configuration->Chipset Configuration menu, and select Max from the CPU clock menu.
19. Press ESC a couple of times, and select Y to save your changes. Then hit ESC a couple of times to return to the home screen.
20. Navigate to the Boot Maintenance Manager ->Boot Options->Change Boot Order menu.
21. Hit Enter and use the - key to move SD/MMC on Broadcom SDHOST to the top. Hit Enter, then Commit Changes and Exit. This will make sure your computer always boots straight to Windows, not to the UEFI shell.
22. From the home screen, navigate to Boot Manager, and select SD/MMC on Broadcom SDHOST. You may be asked to hit Enter to reset. Now your Pi will boot off of the Windows partition.
23. Wait a really long time while Windows prepares. You will probably be waiting at least 20 minutes, during which time Windows will keep saying things like “Just a moment” or “preparing.” It could take much longer for you than it did for us, so you may want to walk away. Note that you may see it one or two blue screens of death during this process. But don’t give up.
24. Complete the Windows 10 install process. Eventually, you will get the Windows 10 install menus, which are the same as they are when you set up Windows on any PC. You’ll be asked to choose your keyboard language, create a username and password and tweak privacy settings. When you’re done, you’ll have to wait a while longer before getting the Windows 10 desktop.
This entire process will take at least an hour, but probably closer to two hours, just because downloading Windows takes a while and setup takes a really long time. And you’ll notice that Windows 10 is really slow, but if you have an Ethernet cord plugged in, you will get Internet connectivity.