How-to: installing windows 10 arm64 (17134) on your raspberry pi 3 and 4

{Hardware needed}
microusb or usb c otg cable that can also provide power to raspberry pi,
(This is because currrent UEFI (v1.0) limitations.
Future uefi version Above 1.0 might let us use other usb ports.)


if microusb is used then you also need usb c to microusb adapter. Any otg + power cable will be good enough.
usb hub,
mouse,
keyboard,
microsd card and usb storage device,
RPI 4B,
RPI 3B - capable of usb boot (boot raspbian from microsd card with program_usb_boot_mode=1 in config.txt once) 3B+ doesn’t need this.
microhdmi cable,
power supply,

{Guide}
Download newest UEFI firmware from https://github.com/pftf/RPi4/releases and extract it to FAT32 formatted microsd card.
I have downloaded build 17134 but you might use any other as I have no idea if any of them are compatible. Any build that passes OOBE on RPI3 should be fine I guess.
Download windows 10 installation files for arm64 from https://uup.rg-adguard.net/ (Download ISO compiler in OneClick! (run downloaded CMD-file) or https://uupdump.ml/ (Download using aria2 and convert)
It will generate a ISO file but we only need install.wim from sources folder on the ISO.

Use WoR (windows on raspberry)(https://worproject.ml) to install 17134 into an usb storage device. GPT needs to be selected. //I only tested 17134 build.

open second cmd window administrator.
diskpart
list disk -This will display all of the disks connected to windows remember the number of the usb drive you are using. (look at storage size)
select disk ? - replace ? with a number of your usb disk
select partition 1
set id=ebd0a0a2-b9e5-4433-87c0-68b6b72699c7 (normal) if you need to edit edit bcd.
assign letter T

switch to first cmd window where dism was used.

bcdedit /store T:\EFI\Microsoft\Boot\bcd /set {default} recoveryenabled no
bcdedit /store T:\EFI\Microsoft\Boot\bcd /set {default} truncatememory 0x40000000 //only needed on a 2gb or 4gb rpi4 boards and may not be needed if on uefi above 1.0.

switch to second cmd window where Diskpart was used.

remove letter=T
set id=C12A7328-F81F-11D2-BA4B-00A0C93EC93B (efi-esp) to make it bootable again.

Close all cmd windows.
Safely remove microsd card and usb drive from your pc.
insert microsd card into Raspberry pi 4 and usb drive into Raspberry pi 3.

change UEFI settings to it will always use USB as 1st boot device instead of UEFI shell. Check if CPU is set to max in Raspberry pi Configuration under Device Manager.

Finish OOBE on raspberry pi 3. Once done shutdown rpi3 then connect USB drive back to your pc.

Then remove drivers for lan7800, lan9500, SerPL011 and bcmauxspi devices. I used dism++ (https://chuyu.me)for this because having using gui was better than any other method.

Safely remove microsd card and usb drive from your pc.

Finally usb can be inserted into the type-c on raspberry pi 4. This port also provides power so good luck.

change UEFI settings to it will always use USB as 1st boot device instead of UEFI shell. Check if CPU is set to max in Raspberry pi Configuration under Device Manager.

Remember that only type-c port works corretly so you will have to connect usb drive to it somehow.

2 Likes

{Current Problems} of Raspberry pi 4 on Windows 10 arm64.

Only type-c usb port can be used. This port has to provide power to PI and work as a OTG device at the same time.
Only 1GB of RAM is available. ACPI DMA translation/constraint bug.
Current broadcom auxspi controller driver is not working which is needed for sdcard controllers to work correctly so Windows is not seeing micro sd card which also means no pagefile.
1GB of RAM with no pagefile is painful in use.

{FUTURE}

Newer UEFI will most likely fix some of the problems listed in {Current Problems} section.

In the future truncatememory might not be needed so here is command to remove it.
Make esp partition readible using diskpart before running the command.
bcdedit /store T:\EFI\Microsoft\Boot\bcd /deletevalue {default} truncatememory

{Downloads}

For people who are too lazy or do not own raspberry pi 3. I’m proving a download link to a backup of my USB drive.
https://mega.nz/#F!kJI3HIAS!CQAUKgp6thSAA_A2GbgdjA

2 Likes

Having 2 weeks exclusivity was not exciting at all.

So we don’t have drivers for VLI chip or is the otg only because it’s UEFI limited?

VLI chip doesn’t need drivers as windows will install it itself. It doesn’t work purely because UEFI is not perfect yet.

Can you upload a rpi4b full sd card image so I can try and make it, that weird otg thing is way too rare, I could not find it locally.

sd boot is not possible right now.

you can power rpi using GPIO.

So I use the sd card only for the UEFI?

Yes. (20 character post requirment is weird)

Ok, I made a shit-mod branded cable and it des not work, can you send a copy of the uefi?

Hey… about 4Gb of ram issue. Why not test to run qemu to come around that? Then you have all USB also intact.

1 Like

New Uefi version 1.1 for rpi4 fixed sdcard for me so I finally can have pagefile created.

Nice, Do we know when we will have 4gb support in order for us to ditch that weird powercable?

People who develop UEFI said that they will talk to Microsoft (in about month or 2) to find out why other USB ports are not working. If they manage to fix usb. We will still be limited to 1GB because of drivers for other and if we remove those drivers (idk if we can because they might be too crtitical for operation) then we will be limited to 3GB of RAM. but i can’t tell you what future will look like so anything can happen really.

or if you can live without any USB ports then you can ‘use’ 3GB of RAM even today.

I’ve tried this, by powering the RPi4 through the 5v pin I could use a USB-C hub at full speed. With a proper storage device that can deliver fast I/O it feels way faster.

Here is my setup

Thank you for backing up your usb image. I’m really appreciated by your effort. But unfortunately, when I boot windows, it says INACCESSIBLE_BOOT_DEVICE with error code 0x000001(?). How can I solve this?