Alternate Guide – Running Windows 10 on the Pi 4

The following is an alternate tutorial for installing and running Windows 10 on the Raspberry Pi 4. This version concentrates on running Windows from a single USB drive plugged on one of the rear USB 3.0 ports, which is both much faster than other methods and does not require the use of a micro SD card at all.

Disclaimer

This guide is provided “AS IS”, with NO WARRANTY that it will work for your specific environment or even that you may not end up losing important data as a result. Therefore, by using this guide, you accept that the responsibility for any software or hardware damage is entirely with YOU.

Also, though perfectly legal (since nothing in the licensing terms for Microsoft Windows prevents you from installing it on a Pi and you can download the Windows 10 ARM64 installation files straight from Microsoft), this method of installing or running of Windows on a Raspberry Pi, is NOT endorsed by Microsoft or the Raspberry Pi Foundation. If you choose to follow this guide, you accept that Microsoft and the Raspberry Pi Foundation do not bear any liability with regards to the behaviour of Windows on the targeted platform.

By following any of the steps below, you implicitly acknowledge that you have read these conditions and have agreed to them.

Hardware Requirements

  • A Raspberry Pi 4 where the EEPROM is up to date enough to allow straight to USB boot. If you purchased a Pi 4 recently, this should already be the case, but if not (i.e. if you find that your machine cannot boot from USB) then you should download a recent version of a rpi-boot-eeprom-recovery archive from here, put all the files on a MBR-partitioned, FAT32-formatted SD card, and apply the update.
  • A fast USB 3.0 drive, with a capacity of at least 32 GB, such as a fast flash drive (please use a drive that has a write speed greater than 50 MB/s, and that also have a sufficient random I/O speed, as your experience will be greatly diminished otherwise), a USB 3.0 SSD enclosure, etc.
  • Screen, keyboard, mouse & a powerful enough PSU.

As mentioned above, you will notice that no microSD card is used when following this guide (provided that your EEPROM is recent enough).

Software Requirements

  • A Windows host machine to create the drive, since this guide uses Windows-only utilities.
  • A Windows 10 for ARM64 ISO or install.wim. At this stage, we recommend to use the feature update to Windows 10, version 2004 (19041.330), as other releases, and especially more recent ones, are known to have broken the ability to boot from USB.
    Because Microsoft does not yet publish retail ARM64 ISOs, like they do for x86 or x64, you need to use a third party utility to create one, such as the one from https://uupdump.ml/. In this case, you want to use this direct link to download the script, allowing you to create the required 19041.330 installation media.
  • WoR (Windows on Raspberry) version 2.0.0-alpha3-Patched or later, which can be downloaded from https://www.worproject.ml/downloads.

Installation

  • Plug in your target USB 3.0 drive. It is recommended that you unplug any other USB media, such as flash drives or USB HDDs, so that you don’t end up erasing them by mistake
  • Run WoR.exe and select your language. Note that the language you select for WoR has no effect on the language Windows will be installed into, which is dependent on your source image.
  • Select your device in the dropdown (again, make sure you do select the right device as internal drives may be listed!) and select Raspberry Pi 4 [ARM64] for the other option.
  • On the Select your Windows on ARM image, pick the .iso/.wim/.esd/.ffu for the Windows 10 image you want to install, which you obtained in the Software Requirements. If needed wait for the image to be mounted and then select the edition you would like to install.
  • On the Select the drivers screen, choose the option that is suitable for you (most likely Use the latest package available on the server if you haven’t already downloaded the drivers).
  • On the Select the UEFI firmware, choose Use the latest firmware available on the server, as you will need the most up to date official UEFI firmware for USB boot.
  • On the Configuration screen validate that everything is in order and click Next (Don’t change the General configuration options unless you know what you are doing). Especially, make sure to double check that the Target device being listed is really the drive you want to use on your Raspberry Pi, and press Install.
  • Wait for the installation to finish. Note that if that process takes more than 25 minutes to complete, it means that the drive you are trying to use is slow and will probably result in a poor Windows experience. In other words, the longer you spend creating the drive, the more likely it is that Windows will perform poorly.
  • Remove the USB and plug it to one of the USB 3.0 ports of your Raspberry Pi 4 (make sure that it is one of the blue USB 3.0 ones). Windows should boot, go through the finalization stage of the installation process (it should reboot once), and let you log on after going through the various installation screens.
  • If you have a 4 GB or 8 GB model, you will find that the RAM is limited to 3 GB by default. To enable the whole RAM, you will need to go to the UEFI settings (Esc key during boot) and then go to Device ManagerRaspberry Pi ConfigurationAdvanced Configuration and set Limit RAM to 3 GB to <Disabled>. Then save your settings and reboot.

Final Notes

Make sure to carefully read the Initial Notice from the Raspberry Pi UEFI firmware, before you start to ask questions about why some things might not working.

Finally, this Windows 10 installation is NOT endorsed by Microsoft or the Raspberry Pi Foundation. So please do not contact them for support when it comes to running Windows 10 on the Raspberry Pi 4.

Windows 10 drivers?

A recurring topic is Windows drivers for the Raspberry Pi 3 and 4 series.

MCCI DesignWare USB2 driver

This is for the front USB ports on Pi 3 and only the Type-C port on the Pi 4.

MCCI Corporation has made their TrueTask USB host stack available to the Raspberry Pi WoA community for non-commercial, evaluation purposes. MCCI did the original work for the 32-bit Windows IoT Core. It is available courtesy of Terrill Moore, CEO of MCCI, who graciously spent time in early 2019 to get it building and validated with the 64-bit Pi 3 UEFI.

If you like the drivers, I hope you’ll support The Things Network New York. MCCI does some pretty amazing things with LoRaWAN.

Driver is here. Launch announcement is here.

Note that the driver will not correctly work on Pi 4 boards with more than 1GB of RAM, unless you limit the RAM seen by Windows. See this guide.

OSS DesignWare USB2 driver

Before the MCCI driver was released, this was the only option. Originally based on an earlier version the UEFI USB driver and the UCX framework, it’s not particularly stable or recommended. It was originally developed by @NTAuthority, who was the first person ever to show Windows running on Pi 3 (rumor goes, with an early variant of the Pi 3 UEFI ;-)). And he thankfully left enough crumbs for the rest of us to pick up and carry the torch.

Driver repo is here.

Other BSP drivers

These were originally put up by Microsoft as part of the 32-bit Windows IoT Core BSP for the Pi 2/3. After a bit of cleaning, they build and run fine on 64-bit Windows.

Driver repo is here.

Guide – Windows 10 ARM64 on Pi 4B

So you want to install Windows 10 on this ‘Berry. You better follow this guide closely.

All 5 usb ports work now. 1 type C and 4 type A however drivers for type c port requires 1GB RAM limitation.

Hardware needed

  • A PC with recent Windows 10 build installed.
  • USB mouse and keyboard.
  • USB storage device.
  • Raspberry Pi 4B,
  • Micro HDMI cable.
  • Power supply (5V 3A+).

or if you still want to use sdcard for boot then you should also get

  • A fast micro SD card – 16GB or higher – Class A1 or A2
  • Micro SD card reader

Downloads

Download Windows 10 installation files for arm64 from https://uup.rg-adguard.net/.

  • Download ISO compiler in OneClick!
  • Run downloaded CMD-file (run creatingISO.cmd file).

Or, download via https://uupdump.ml/, using aria2 and convert, running aria2_download_windows.cmd after extracting it.

Either of those services will help you to generate a ISO file but we only need install.wim file from sources folder on the ISO. Any build that passes OOBE without issues will be fine.

WoR (windows on raspberry) -Download 2.0.1 from https://worproject.ml/downloads

Guide

Once you download all of the things above you can proceed.

Open WoR. Select Disk from the list which will be your microsd card reader or usb storage device and select Raspberry pi 4 as a device that you will use. Then select build of windows WoR should use by pointing to a correct install.wim file. Use the latest drivers that WoR server provides. Select the latest UEFI for Raspberry pi 4 in WoR. Use Advanced tab in WoR to limit memory to 1024MB for USB type-c and if you don’t need type-c port then RAM is still limited by UEFI by default to 3GB of RAM. Do edit boot options in WoR if you need to (I always overclock as my Pi has a fan and heatsink attached).

WoR will deploy windows to the selected micro sd card or usb storage device which will take from 10 minutes to 3 hours depending on speed of your micro SD card or USB storage device .

Safely remove micro SD card or usb storage device and move it into the Raspberry Pi.

Notes

This guide will be most likely updated if anything changes. First boot will take between 6 minutes to 2 hours depending on speed of your micro SD card or usb storage device . If there are issues during OOBE setup pressing shift + F10 then typing

%windir%\System32\Sysprep\sysprep.exe /oobe /reboot 

might help. If it doesn’t, you will need to test a different build of Windows 10 arm64. Good luck!

Drivers

Currently a lot of drivers are missing and not a lot of development is happening. We are missing drivers for audio jack, bluetooth ,wifi and gpu. Development of audio jack drivers is most likely to happen soon. Ethernet driver only loads on 19041 build of Windows 10. Ethernet for newer builds can be found here.

Support

I freqently check comments under this post but for a bit faster response you can join Discord server and ask for help there as most people in that server will be able to answer your question. You might find there customised windows10 build (smaller and lighter).