FORUMS
Remove All Ads from XDA

A quick tutorial of installing Windows RT 8.1 on recent Lumia

16 posts
Thanks Meter: 42
 
By imbushuo, Junior Member on 5th February 2018, 01:43 PM
Post Reply Email Thread
2/18 Update:
USB charging and controller works, audio probably works. Here's some update on this project:

Battery
Put C:\DPP and C:\EFIESP back. Nokia's driver reads C:\EFIESP\Battery.json in kernel mode (WTF). If you have NokiaEnergyDriver.sys and other PMIC/PEP/MIPI BIF (on some models) drivers installed, you should get battery show up.

Sign drivers?
Yes. Sign everything to prevent bad things from happening. I used a commercial certificate for conveience :P, but you don't have to do that. Here's a handy script that generates a self-signed certificate and installs it on your phone: https://gist.github.com/imbushuo/4de...bd18bf6daca56a

Download it, run it as administrator and specify ImageDir to your phone's partition (in mass storage mode). Then sign all your drivers binaries (and catalogs as well) with the fingerprint provided.

When signing your drivers, remember timpstamp all drivers. DigiCert's help documentation is useful for signing binaries.

Turn off UMCI
See https://forum.xda-developers.com/sho...&postcount=222. Set UMCIAuditMode key to allow all desktop applications and UMDF drivers load.

Make USB work
You will need several supplemental drivers from Windows Phone: BattFltr.sys, CAD.sys, ufx01000.sys, ufxsynposys.sys (or ufxchipidea.sys, depends on your chipset). Copy registry keys (HKLM\ControlSet001\Services and HKLM\ControlSet001\Enum\ROOT\CAD / HKLM\ControlSet001\Enum\ROOT\BattFltr) add supplemental WDF registry keys. Some files are attached as attachments, so you can take a look to get some idea about that.

Make Windows Store Apps work on unsupported resolution
See my blog post.

---------

While this project is not totally finished (e.g. No Battery status/charging unknown, no cellular, no audio), I decided to post this thread as many people asked me about the tutorial. This is just a brief tutorial, you need to have plenty of time on this to make this happen. Be careful as some steps are very dangerous.

This tutorial is provided AS-IS, without any implicit or expressed warranties. By reading this brief tutorial, you are agreed that you are taking your own risk trying this. I am not responsible for any possible consequences of installing Windows RT or other non-Windows Phone OS on Lumia phones. If your phone ships with Windows 10 Mobile, then this tutorial might not fit you. You can try drivers from other models, but I have no guarantee on this.

General workflow
- Unlock your phone with WPInternals 2.4
- Enter mass storage mode, copy registry files from MainOS partition
- Copy files from DPP partition
- Download Windows RT 8.1 ISO (publicly available on Internet, Google it)
- Download a Lumia 2520 recovery image for some files (I will post these files later)
- Download a Windows Phone 8.1 firmware for your phone
- Extract drivers, re-assembly INF files
- Patch some drivers (see my note)
- Self-sign some drivers (see my note)
- Make sure you know what you are doing: Delete MainOS and Data partition, create new NTFS partition for Windows RT. Do not touch other partitions.
- Apply system image (dism works fine)
- Copy DPP files back (C:\DPP)
- Modify sysprep tasks (see my note)
- Apply BCD configuration
- Boot
- Let OOBE fail once
- Go to mass storage mode again, mount registry and force OOBE run again
- Have fun

Notes on this project

ACPI
Reading ACPI DSDT table will help you understand your phone architecture. ACPI tables are located in PLAT partition. It is easy to extract them with 7-zip (after converting FFU to VHD). To decompile dsdt.aml, you need to download iASL tool, which is available on Internet.

Certain devices, like touch screen or panel, require other devices have driver loaded and enabled. This is not shown in Qualcomm's ACPI implementation. In my case, I need PEP, PEP 3rd, GPIO, BAM, I2C Device, QMUX, Shared Memory drivers loaded to make touchscreen work. It varies by model.

Re-assembly INF files
Mount SYSTEM registry from your phone or FFU, go to DriverDatabase\DriverPackages\<Some Driver Package>, each key in driver package key matches INF sections respectively. See some driver INF files to get some idea.

Remember to check ControlSet001\Service for additional information if necessary. If you are working on Windows Phone 8.1 firmware, check \Windows\System32\Packages to make sure you've got correct files and registry configs. These files are gzipped.

Patch drivers
Certain drivers read DPP partition for device-specific calibration information. While Qualcomm shares the codebase between Windows RT and Windows Phone, DPP partition is handled differently between platforms. You can search Unicode string "PhoneNT" to determine whether drivers read DPP or not.

To fool drivers think they are living in Windows Phone, you can create another multi-string value in the ProductOptions key. I created a value called "AnotherSuite" and filled "PhoneNT" in. Then I modified all "ProductSuite" Unicode strings in drivers to "AnotherSuite". Remember to re-calculate linker checksum (dependencies) and PE checksum.

This is critical to make wireless (Wi-Fi and Bluetooth) subsystem work.

Graphics
DO NOT use user-mode driver module from WP on Windows RT. The Windows Phone Qualcomm GPU driver does not implement DirectX 9, which is required by Windows desktop. Using WP UM driver will crash DWM.

To correctly enable GPU acceleration, use kernel driver and decoder module from your firmware, and user mode driver from Lumia 2520's recovery image. At least this works on Lumia 640 XL.

Touchscreen
Touchscreen works, however, WP driver reports wrong metric system to Windows RT. To workaround this, modify SYSTEM\TOUCH key, make some value larger than expected. See my value for 640XL in attachment.

Remove some sysprep tasks
Remove BCD and WinRE specialization and generalization tasks from sysprep task definition. OOBE will fail still. Boot to mass storage mode, mount SYSTEM registry, change setup type to 1 (see your current OS for ideas about other values), change program path to oobe\msoobe.exe. You should be able to see normal OOBE then.

BCD and Driver Signing
Test signing should be on. Disabling integrity check is recommended (though documentation says this key is ignored prior to Windows 10). Copy catalogs to the new OS, and self-sign drivers you patched.

Kernel Debugger
To enable WinDbg KD, modify your phone BCD:
Code:
bcdedit /store <Path> /dbgsettings usb TARGETNAME:WOATARGET
bcdedit /store <Path> /set {Your OS GUID} Debug On
Connect your phone to PC, start WinDbg, USB kernel debugging, target name "WOATARGET".

Have fun with Windows RT on Lumia, I am going to continue working on audio and battery
Attached Thumbnails
Click image for larger version

Name:	Touchscreen-workaround.jpg
Views:	3162
Size:	179.3 KB
ID:	4410272  
Attached Files
File Type: zip ufx01000.zip - [Click for QR Code] (2.9 KB, 590 views)
File Type: zip ChargingArbitration.zip - [Click for QR Code] (1.2 KB, 510 views)
File Type: zip Battfltr.zip - [Click for QR Code] (1.0 KB, 472 views)
The Following 29 Users Say Thank You to imbushuo For This Useful Post: [ View ] Gift imbushuo Ad-Free
 
 
5th February 2018, 01:50 PM |#2  
devilrex's Avatar
Senior Member
Thanks Meter: 17
 
More
Follow

Ty Imbushuo , GREAT WORK
5th February 2018, 02:13 PM |#3  
Senior Member
Flag Aachen
Thanks Meter: 1,716
 
Donate to Me
More
didnt you forgot to make efiesp guid to a efi partition else bcd cant be updated
5th February 2018, 02:27 PM |#4  
Member
Thanks Meter: 20
 
More
Is there a way to patch the kernel or a bypass to avoid SECURITY_SYSTEM BSOD on MSM8960 devices?

Thanks for your work. I hope to get a newer Windows Phone soon and try Win10PE, I'm working on a custom shell that hopefully grants it a good experience on handheld devices since we lack ARMv7 ShellExperiences
5th February 2018, 02:30 PM |#5  
OP Junior Member
Thanks Meter: 42
 
More
Quote:
Originally Posted by J0SH1X

didnt you forgot to make efiesp guid to a efi partition else bcd cant be updated

Qualcomm's firmware is weird, so I didn't do that. (They hard-coded something) Maybe I will try it later with a dev board and see what will happen.
The Following 2 Users Say Thank You to imbushuo For This Useful Post: [ View ] Gift imbushuo Ad-Free
5th February 2018, 02:47 PM |#6  
Junior Member
Thanks Meter: 0
 
More
Fantastic job

Is it possible to enable a second external monitor via Miracast ?
What about bluetooth keyboard and mouse ?

Lumia 950/XL should also support 2x monitors ( DisplayPort/HDMI via USB-C ).
It also has more RAM and might run apps better than L640.
5th February 2018, 03:07 PM |#7  
Senior Member
Flag Aachen
Thanks Meter: 1,716
 
Donate to Me
More
Quote:
Originally Posted by imbushuo

Qualcomm's firmware is weird, so I didn't do that. (They hard-coded something) Maybe I will try it later with a dev board and see what will happen.

thats weired on my 930 this is NEEDED to get rt to boot but weired enough my 640 lte doesnt boot it at alll but sadly i dont get how to reassamble the inf files (im litterally just comparing my compiled touch driver inf with the registry of my 930)
5th February 2018, 04:42 PM |#8  
Junior Member
Thanks Meter: 0
 
More
I can not find the windows rt on the Internet. Can I send the file link download?
[QUOTE=imbushuo;75454985]While this project is not totally finished (e.g. No Battery status/charging unknown, no cellular, no r FFU, go to DriverDatabase\DriverPackages\<Some Driver Package>, each key in driver package key matches INF sections res
5th February 2018, 04:59 PM |#9  
Junior Member
Thanks Meter: 1
 
More
I use google translate so it's hard to follow, it's great when you have a video tutorial, everything is more intuitive and easy.
The Following User Says Thank You to prokakavip For This Useful Post: [ View ] Gift prokakavip Ad-Free
5th February 2018, 05:11 PM |#10  
spavlin's Avatar
Senior Member
Thanks Meter: 616
 
More
INF files Qualcomm ARM-based Inf.zip
The Following User Says Thank You to spavlin For This Useful Post: [ View ] Gift spavlin Ad-Free
5th February 2018, 06:33 PM |#11  
Member
Thanks Meter: 20
 
More
Quote:
Originally Posted by prokakavip

I use google translate so it's hard to follow, it's great when you have a video tutorial, everything is more intuitive and easy.

If you are an end user I would recommend waiting for WPInternals partition dumps for your device
Post Reply Subscribe to Thread

Guest Quick Reply (no urls or BBcode)
Message:
Previous Thread Next Thread
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes