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. Type A ports require 3GB 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.0-alpha.3 from https://worproject.ml/downloads

Latest version of Winpatch to patch usbxhci.sys driver after instalation, https://github.com/pbatard/winpatch/releases

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. Make sure MBR is selected as a partition scheme. Use WoR to limit memory to 1024MB USB type-c and if you don’t then you can limit it to 3072MB. You actually don’t have to as there is a limit set in UEFI. Do edit boot options in WoR if you need to(I always overclock as my Pi has a fan 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 .

Fixing type A ports/ patching usbxhci.sys windows 10 drivers

extract winpatch.exe to any location you want as long as you remember it. Open cmd as administrator. then type

"C:\Users\Marcin\Downloads\winpatch.exe" F:\Windows\System32\drivers\USBXHCI.SYS EA000037E8630091 EA000036E8630091 0A010037E8430091 0A010036E8430091

In this example above I extracted winpatch to my downloads folder and F:/ is a letter of my windows10 arm64 instalation on sdcard or usb drive.

This command above works best on build 19041 or newer.

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, ethernet, bluetoth ,wifi and gpu. Development of ethernet and audio jack drivers is most likely to happen soon.

Support

I freqently check comments under this post but for a bit faster response you can join Discord server and ask for help there. You might find there customised windows10 build (smaller and lighter) or even premade images to download.