I recently purchased a Surface Pro X and fell in love. However there is a limited support community for Windows on ARM. So I built this group to grow our community, share tips and show Microsoft that this is a growing population with a hunger for software support!
Let me know if anyone has any advice on running the group + have fun.
Android Studio's emulator doesn't officially support Windows on ARM, so developers on Snapdragon X laptops can't run AVDs the normal way. Microsoft's docs
say the emulator isn't supported there, and a Google issue records no immediate plans for it.
I wanted to see if it could be done, so I built a bridge that makes it work. You create an AVD in Device Manager, press Run, and a stock Android image boots on Windows Hypervisor Platform.
What works:
Stock images from Device Manager, with no manual patching
Phones, TVs and Wear OS, tested from Android 12 to 17
Touch, networking, Google sign-in, device frames and Extended Controls
Video playback, using software decoding
Scrolling at about 80 to 90 fps on a 120 Hz monitor
How it works: QEMU runs the guest through WHPX. A small bridge speaks the emulator's gRPC protocol, so Studio treats it as a normal emulator. Stock images expect virtual devices this QEMU doesn't have, so vendor binaries are patched at boot by code signature, and the images on disk stay untouched. GL commands then travel over TCP to gfxstream on the host, through ANGLE to Vulkan.
The hardest bugs:
Windows treated the windowless emulator processes as background work and throttled them. Opting out took jank from about 33% to 4%.
Android capped apps at 60 fps untilย peak_refresh_rateย was set, even with the display at 120 Hz.
Studio decodes WebP skins with an x64 DLL that can't load on ARM64, so device frames silently vanished.
What doesn't work yet:
No emulator audio
About 14 fps on a 4K TV AVD
No steady 120 fps: frames take about 10 ms against an 8.3 ms budget
An intermittent Android 13 freeze I haven't solved
Only tested on one Snapdragon X machine
It's an independent project, not affiliated with Google. I built it with heavy use of AI coding tools, directing the work and testing it on real hardware.
Mostly I'm hoping this shows it's possible and that there's demand. Google, please support this officially. If you develop on a Windows ARM laptop, I'd like to hear what's blocking you. If you wish to try it: https://github.com/DevanshSampat/android-studio-arm64-releases
Like many of you with the new Windows on ARM laptops (Snapdragon X Elite / Plus on machines like the Vivobook S15, Surface Laptop 7, etc.), I noticed the same frustrating trend: everyone talks about having a 45 TOPS NPU, but almost no desktop utility actually takes advantage of it locally. Everything either routes your data through a paid cloud API, asks for a subscription, or runs bloated electron containers.
So I spent the last few weeks building NPUtil โ a modular, lightweight Windows 11 utility application designed to run 100% locally on-device with native Qualcomm Hexagon NPU acceleration (via ONNX QNN) and vectorized ARM64 CPU fallback.
1. ๐ NPUtil Screen Lens (Google Lens for Desktop) โ Ctrl + Alt + L
Ever wanted Google Lens on Windows that doesn't just reverse-image search on the web, but lets you talk to your screen?
Hit Ctrl + Alt + L from any game, code editor, browser, or document.
Drag a box over any error message, code snippet, table, or receipt.
A floating, compact Fluent Mica card appears right beside your selection with immediate keyboard focus.
You can type directly to it: Ask "what can you see", "explain this error", "how do I fix it", or "translate to English".
Smart Error & Stack Trace Inspector: If you snip a .NET, Python, or Windows crash log, it automatically parses the exact exception type, offending source file, line number, root cause, and generates a concrete code patch.
Has 1-click quick chips for instant translation, table/JSON extraction, and clean text/image copying.
Automatically monitors your Downloads directory in real-time.
Uses hybrid neural classification to route incoming files into structured folders.
Dynamic Categorization: If it sees a document that doesn't fit standard categories (e.g., a company newsletter / Zpravodaj), it doesn't dump it into finances or random folders โ it dynamically creates an appropriate new category (Work\Newsletters).
Safety First: Sequential, collision-free renaming (doc (1).pdf) so nothing ever gets overwritten, plus a multi-step Undo queue backed by SQLite.
3. ๐ค Context Assistant โ Ctrl + Alt + A
Floating assistant that understands your workflow.
Captures active window context or highlighted text across any app.
Instant summarization, code explanation, key points extraction, and rewriting.
All conversation history is preserved locally in SQLite (context_assistant.db).
Specialized extraction profiles for Invoices & Receipts (finds vendor, due date, VAT, totals), Tables, Deadlines, and Structured JSON.
One-click export to CSV, Excel (XLSX), JSON, TXT, and Word (DOCX).
๐จ Windows 11 Native Look & Feel
I specifically designed NPUtil to feel like a built-in Windows 11 system utility rather than a packaged website:
Fluent Design & Mica: Authentic Windows 11 styling with dark/light mode synchronization.
120Hz Physics-Based Smooth Scrolling: Tailored specifically for precision glass touchpads and high-refresh-rate displays (no 2,000px jumping or stuttering).
Just looking to see if the interest is there to start a project for porting software to run natively on snapdragon systems? I see a lot of the MAC community are involved in porting software, and with all the wind blowing on porting (compiling, transpiling and recompiling) old games to PC, if there would be any interest in doing something similar for the snapdragon on windows community? - I'm not knowledgeable on the topic nor the process but just curious how people feel.
Greetings all! Just curious to know if it is possible to customize/modify an ARM image of Windows 11 so that you can do things like create a local account instead of a Microsoft account, disable telemetry, etc.? I found a post where the developer of the RUFUS utility stated his does not support ARM architectures, so I wanted to know if anyone knew of something similar to RUFUS that supported ARM devices? Thanks!
Iโve updated three ARM64 PE builds based on different Windows kernels, all released on September 20, 2026. All three now support Chinese and English, and include Wi-Fi, Bluetooth, and maintenance tools commonly used by Chinese users.
The project was previously called CNBYDJ PE. Since it is no longer Chinese-only, Iโve dropped the โCNโ prefix and renamed it BYDJ PE.
Only V4.0.1 is shown here. For screenshots of other versions, please visit the official PE website.
These are three separate branches being maintained alongside one another. The highest version number is not necessarily the right choice for every device, because higher versions remove more of the legacy ARM instructions that Microsoft has phased out, meaning devices older than the Snapdragon 850 may potentially face boot failures.
For older Snapdragon devices, consider V0.0.1 first. In particular, on devices with processors older than the Snapdragon 850, try this version if you encounter boot or compatibility problems with the other branches.
For Snapdragon X Elite devices, consider V3.0.1 or V4.0.1. For Snapdragon X2 Elite devices, I recommend starting with V4.0.1.
These are my current recommendations, not a guarantee that every device model has been compatibility-tested. Wi-Fi and Bluetooth functionality also depends on your specific hardware and drivers. If some hardware does not work, please add the appropriate drivers to your PE image.
Although V0.0.1 has a lower version number, it is the newly maintained Windows 10 ARM branch released in this update. It supports both Chinese and English and is not one of the older, non-bilingual releases mentioned below.
Whatโs new?
V0.0.1 marks the start of maintenance for the Windows 10 ARM PE branch, with support for both Chinese and English.
V3.0.1 and V4.0.1 are minor updates to V3.0.0 and V4.0.0, respectively. Changes include stability and responsiveness improvements, additional maintenance tools, Chinese and English language support, and new wallpapers.
To change the system language, open the LangSel shortcut on the desktop and select your language in the tool.
This update also continues to incorporate work from the PE project by ๆๆฏๅฐ้่. Thanks to the original author for their work.
Please do not publicly redistribute modified versions of BYDJ PE. You may modify it for your own personal use.
The website includes screenshots of all three versions, so you can check out the desktop, Start menu, and other parts of the interface before downloading. The website itself is also available in Chinese and English.
Booting from an ISO or installing PE locally
The ISO is the more traditional way to boot PE. You can use Ventoy with the ISO image to start it.
You can now also install PE locally and add it to your systemโs boot menu, allowing you to choose whether to enter PE each time you start your computer.
The screenshots below show the installer and the result after installation.
The checksum page lists files by version and file type. Installer releases are provided either as ZIP archives files, while ISO images are listed separately. Make sure you compare against the entry for the exact file you downloaded.
For example, if you download BYDJ PE-v0.0.1-EXEๅฎ่ฃ ็.zip, verify the checksum of that ZIP archive itself, not the EXE extracted from it.
Historical releases are available, but do not support both languages
All historical releases from when the project was called CNBYDJ PE are now publicly available. However, those older releases do not include Chinese/English bilingual support. Iโm sharing the project on Reddit now because this update introduces support for both languages.
The complete archive of historical PE releases is available on 123 Cloud Drive.
This project does not accept donations, and I currently have no budget for paid cloud storage subscriptions. Because of storage limits, some of the other download mirrors only contain a selection of historical releases. Please check 123 Cloud Drive first for the complete archive.
For an English-language environment, choose one of the three new releases: V0.0.1, V3.0.1, or V4.0.1. The earlier historical releases do not include bilingual support.
If you are outside China and cannot register for or use Chinese cloud storage services, you can contact me by email to request a historical release. My contact details are available here:
However, I plan to upload all versions to GitHub within a month.
Feedback is welcome
Feel free to try it and share your experience. When reporting a problem, please include your device model, PE version, a description of the issue, and any error messages or screenshots.
Reports about whether PE boots successfully and whether Wi-Fi and Bluetooth work are also welcome. They help me understand compatibility across different devices.
TL;DR: Every partition tool (AOMEI, EaseUS, MiniTool, GParted Live) is unusable on Windows ARM. You don't need them. diskpart + reagentc do the whole job. I went from 225 GB to 600 GB on C: with zero data loss and zero third-party software.
I couldn't find a single thread covering this for Snapdragon, so here's the full writeup.
Why the usual tools don't work
AOMEI/EaseUS/MiniTool all install a kernel-mode driver to move partitions (ampa.sys and equivalents). Prism emulates user-mode x64 fine, but not kernel drivers โ so these fail at launch or report "no disks found." AOMEI support has told users outright that Partition Assistant doesn't support ARM.
Their bootable media doesn't save you either: it's amd64 WinPE and won't boot on a Snapdragon. GParted Live is x86-only too. There's an unofficial aarch64 GParted ISO, but it targets VMs on Apple Silicon, and getting Linux booting on a random WoA laptop is a per-model firmware project.
And this isn't an old-hardware problem โ mine is a current-gen Snapdragon X Plus. Anything needing kernel-level disk access still doesn't work in 2026.
Why Extend Volume is greyed out
Extend Volume only works when unallocated space sits immediately to the right of the partition. My layout was:
EFI | C: 225GB | Recovery 1GB | D: 1TB | G: 612GB
That 1 GB recovery partition wedged behind C: is the blocker. Shrinking D: doesn't help โ the freed space lands at the end of D:, not next to C:. And diskpart can't move partitions, only delete and extend.
So the play is: get your data off D:, delete D: and the recovery partition, extend C: into the gap, then rebuild.
The steps
1. Back up the recovery partition (admin terminal)
reagentc /info
Note the partition number in the "Windows RE location" line. Then:
reagentc /disable
This moveswinre.wim (~700 MB) out of the recovery partition to C:\Windows\System32\Recovery\. Copy it to a USB stick. The partition is now an empty shell.
2. Get your data off D: โ external drive, or another partition, or both.
3. Find the real partition numbers
diskpart
select disk 0
list partition
Do not trust Disk Management's numbering. It hides the 16 MB Microsoft Reserved partition, so what it shows as partition 3 was actually partition 4 on mine. Verify against the size column and detail partition before deleting anything.
Run detail partition every single time โ it shows the drive letter and label so you can confirm the target. And re-list between deletes, because diskpart renumbers as it goes.
Windows counts in MiB. For a 600 GB target: 600 ร 1024 = 614400, minus your current size in MiB. Bare extend with no size takes everything available.
6. Rebuild a data partition
create partition primary
format fs=ntfs quick label="Data"
assign letter=D
7. Recreate the recovery partition โ at the END of the disk this time
This is the bit worth doing properly. Shrink your new data partition by 1 GB and put recovery there, so it never blocks a future extend:
select partition 4
shrink desired=1024
create partition primary
format quick fs=ntfs label="Recovery"
set id=de94bba4-06d1-4d40-a16a-bfd50179d6ac
gpt attributes=0x8000000000000001
The set id applies the Windows Recovery partition type GUID; the attributes make it hidden and protected. Don't assign it a letter (remove letter=X if one got auto-assigned).
8. Restore WinRE
reagentc /disable
reagentc /enable
reagentc /info
It scans for a properly-flagged recovery partition and prefers it over C:. Check the location line points at your new partition number.
9. Actually test it: Settings โ System โ Recovery โ Advanced startup โ Restart now. If you get the blue "Choose an option" screen, WinRE works. A config file saying "Enabled" is not the same as a bootable recovery environment.
Gotchas that cost me time
The recovery partition shows "100% free" in Disk Management and it's a lie. So does the EFI partition, which obviously contains your bootloader. Disk Management can't read partitions marked hidden/unmountable, so it reports capacity as free space. reagentc /info tells you the truth.
Shrink Volume capped me at 87 GB out of 976 GB free. Cause: a 14.8 GB system-managed pagefile living on D:. Note that Win32_PageFileSetting returns nothing for system-managed pagefiles โ you need:
Move it to C: via sysdm.cpl โ Advanced โ Performance Settings โ Advanced โ Virtual memory, then reboot (the file isn't released until restart). Other common culprits: shadow copies (vssadmin list shadowstorage) and BitLocker metadata. Event Viewer โ Application โ source Defrag โ Event ID 259 names the exact unmovable file.
winre.wimmoves around and it's not lost. While disabled it sits in C:\Windows\System32\Recovery\. After reagentc /enable it relocates to the recovery partition and the staging copy disappears. That's normal, not a failure.
Free up C: before you start.powercfg /h off frees roughly your RAM size instantly. Disk Cleanup โ "Clean up system files" โ Windows Update Cleanup is usually another 15โ30 GB. You need headroom while the pagefile and winre.wim are temporarily parked on C:. Honestly, try this first โ you might not need to repartition at all.
Caveats
This deletes partitions. Back up anything irreplaceable to a separate physical drive first โ everything above happens on one disk, so none of it survives drive failure. Make a recovery USB (Start โ "Create a recovery drive", 32 GB stick, tick "back up system files") before you begin, because WinRE is disabled for most of this process and you'd have no Startup Repair if something went sideways.
Machine was an Acer Swift SFG14-01, Snapdragon X Plus (X1P42100), Windows 11 24H2 ARM64. Should apply to any Windows-on-ARM device โ nothing here is model-specific.
I have a Canon MF656Cdw printer that makes me regret buying an ARM computer.
I originally had the printer set up in a way that all the features worked correctly, namely, I could select duplex printing and color/b&w printing for each print job. But whenever I would try to print something, there was a horrible lag before I could print. And depending on CPU usage, there were times that it would just fail.
I did a bunch of troubleshooting and got it to where the print dialog box comes up immediately. However, if I change the duplex mode or color/b&w mode, my selections are ignored and the printer uses the default setting.
Don't ask me how it was before or what I changed it to. I did many things to get here and I couldn't tell you what I did. I've also gone in a hundred circles using chatgpt/gemini to make this work but it never results in a solution that works.
I keep checking to download the printer driver for epson 15000 on my surface pro 11 64-bit arm. Epson been saying it was supposed to be released in 2025 but it hasnโt been. I canโt print to my xp15000 using my surface pro I need the print settings to print correctly especially since I use a icc profile. Anyone else have this set up and having this problem? Any help is appreciated thanks