Peripheral driver issues on Windows 11 ARM: how-to guide and solution

Last update: 10/09/2025
Author Isaac
  • The drivers They must be Arm64: there is no emulation in the kernel and without them the hardware it does not work.
  • x86/x64 emulation is configurable: adjust cache, hybrid mode and multithreading for compatibility.
  • Known Limitations: Anti-cheat, Fax and Scanner, certain antivirus and apps of shell.
  • Developers: Build native Arm64, resolve dependencies, and test on ARM hardware/VM.

Drivers and peripherals in Windows 11 ARM

If you have made the jump to a team with Windows 11 on ARM and you're struggling with a peripheral that just isn't working, you're not alone: Drivers are the key piece and must be adapted to Arm64While many x86 and x64 apps run just fine through emulation, system drivers don't go through that layer, so it's a good idea to understand the rules of the game.

In addition to drivers, Arm support combines several ingredients: Configurable emulation, best development practices, known limitations, and diagnostic toolsIn this guide, we've compiled everything you need to know to identify why a device or driver-dependent app is failing, how to fine-tune emulation, and what developers need to do to compile natively for Arm64.

What's happening with drivers in Windows 11 ARM?

En Windows on ARM, All kernel-mode drivers, User-Mode Driver Framework (UMDF) drivers, and printing drivers must be compiled for the operating system architecture.That is, if the system is Arm64, the driver must also be Arm64; there's no emulation layer for the kernel, so the requirement is strict.

This means that an x86 application can run via emulation without any problems, but If you need your own or a third-party driver, that specific piece must exist as Arm64Until the driver is recompiled for Arm64, functions that depend on it will not appear or will fail.

In practice, devices and peripherals will only work if your drivers are integrated into Windows 11 or the manufacturer offers specific Arm64 drivers. This applies to sensitive categories such as antivirus and antimalware, printing software or PDF, assistive technologies, optical disc utilities and virtualization software.

Therefore, when you install third-party software or hardware, Make sure to download and install the manufacturer's driver specifically for Arm computersIf a driver only lists x86/x64 compatibility or doesn't mention Arm64, it most likely won't work on your ARM-based computer.

ARM-powered devices have become popular due to their energy efficiency, battery life, and NPUs for IA, But This efficiency does not replace the need for native Arm64 drivers.. If you depend on a critical peripheral, check before its manufacturer releases support for Arm64.

Driver compatibility on ARM computers

x86 and x64 emulation on ARM and how to adjust compatibility

Windows on ARM runs Arm apps natively, while x86 and x64 apps run using emulationWith Windows 11, x64 emulation arrived to expand compatibility, and with the Prism engine on Copilot+ devices with Snapdragon X, the performance of emulated apps has been significantly improved compared to previous generations.

If an app is acting strangely, you can use the program compatibility troubleshooterRight-click the .exe and choose Compatibility Troubleshoot to try the recommended settings or select specific symptoms, such as it opens but looks bad, requires permissions, or the problem isn't listed.

Additionally, in the Compatibility tab of the executable properties you will see a section for Windows 10 on ARM or Windows 11 on ARM. From there you can change full emulation settings or enable advanced settings to experiment with individual options designed to prioritize stability over performance when problems arise.

  Ultimate guide to fix black screen in Windows 11 step by step
Emulation settings That makes
Disable application cache Forces the system to recompile the emulated code blocks on each run, eliminating the cache to reduce side effects at the expense of performance.
Disable hybrid execution mode Avoid CHPE binaries with a mix of x86 and Arm64 and forces to use only x86 binaries, increasing compatibility with some sensitive apps.
Additional light protections Enables global safeguards that affect volatile metadata and can influence performance in favor of stability.
Strict compatibility with self-modifying code It guarantees that the self-modifying code to work correctly in emulation, with a noticeable impact on performance when that pattern is frequent.
Disable optimization on RWX pages Removes a performance optimization for code into readable, writable, and executable pages which may clash with certain apps.
Disable JIT optimization (x64 only) Deprecated option that will no longer be available in future versions.
Disable floating point optimization (x64 only) Force to emulate x87 with 80-bit full precision, increasing accuracy in FP at the cost of lower performance.

You can also adjust how the app uses multiple cores: fast, strict, very strict or force a single coreThese options change the number of memory barriers used to synchronize access between threads; increasing the number of barriers reduces subtle errors at the expense of speed, and single-core mode removes barriers and serializes threads onto a single core.

If changing a specific option causes the error to disappear, Microsoft requests that details be sent to woafeedback@microsoft.com to integrate that feedback into future improvements to the emulator.

Emulation settings on Windows ARM

Drivers: kernel, UMDF and printing

All system drivers must match the architecture: There is no emulation in the Windows kernelThis has a particular impact on virtualization and any scenario requiring low-level access.

If an x86 application installs or needs its own driver, The app itself can be started under emulation, but features tied to that driver will not appear until an Arm64 version of the driver exists.

To compile Arm64 drivers with guarantees, Developers should follow the Arm64-specific WDK guide, which details the preparation of the environment, projects and signature.

Shell extensions, IMEs, and other system DLLs

Applications that attempt to link to Windows components or inject DLLs into system processes must compile those DLLs for Arm64. This is where things come into play input method editors, assistive technologies and shell extensions that place icons or context menus.

Whenever you load code inside Windows processes, match the binary architecture with that of the systemRecompiling these DLLs ensures that the component runs natively without relying on emulation.

Best practices with WOW and architecture detection

A common error pattern occurs when the app detects that it is under WOW and mistakenly assumes the system is x64. From there it tries to install its x64 variant, looks in the native registry view, or assumes there is a 64-bit .NET.

To avoid such failures, Don't make assumptions about the host when detecting WOW and minimizes interactions with native OS components unless you control the architecture.

If you need to check compatibility, uses the isWow64Process2 API instead of the original isWow64ProcessThe first correctly distinguishes between process and host combinations and helps determine code paths and log views without confusion.

Dynamic code generation and mitigations

Emulating x86 desktop apps generates Arm64 instructions at runtime, so Blocking code generation or modification in the process breaks compatibilityIf your app enables mitigation using SetProcessMitigationPolicy with ProcessDynamicCodePolicy, disable it to allow emulation.

  How to install Arduino IDE on Windows 11 step by step

If you suspect that your application uses self-modifying techniques, enables strict compatibility with self-modifying code in the advanced emulation settings, knowing that it will significantly impact performance.

Virtual Machines and Hyper-V Support

The Windows Hypervisor platform is not supported. Qualcomm 835 on the Mobile PC Platform, so Hyper-V won't work on that specific hardware. Microsoft indicates that it continues to invest in these technologies for future Qualcomm chipsets.

Known Limitations: Games, Antivirus, Fax & Scanner and more

Some games will not work if Your anti-cheat driver doesn't have a version for Windows 11 on ARM.. Check with the game publisher or check compatibility at worksonwoa.com, a collaborative resource that tracks the status of apps and games.

On Windows 10 on ARM, x64 apps don't run: You need Arm64, Arm32, or x86 versions. There are also restrictions such as OpenGL above 1.1 and anti-cheat packages without ARM support. On Windows 11 on ARM, x64 emulation expands the range of supported applications.

Applications that customize the Windows shell, such as some IMEs, assistive technologies, or cloud integrations, may present problems if they do not offer Arm64 binariesThe final decision rests with the developer of each app.

There are also third-party antivirus suites that you won't be able to install unless they are created or updated for ARMMeanwhile, Windows Security offers built-in protection for the life of your device.

A lesser-known peculiarity: The Fax and scanner Windows is not available on computers with Windows 11 on ARM, so it is advisable to look for alternatives.

Native apps available and the new Prism engine

The ecosystem now offers more native Arm64 builds than ever before, with Microsoft 365 in its fastest execution in Teams, Outlook, Word, Excel, PowerPoint, OneDrive and OneNote, plus Chrome, Slack, Spotify, Zoom, WhatsApp, Blender, Affinity Suite and DaVinci Resolve, among many others.

For apps without native binary, the new emulation engine Prism improves the performance of emulated apps on Copilot+ devices with Snapdragon X and coming to more Windows 11 devices.

If you want to check which apps and games are working, Check the live list at worksonwoa.com. It is a third-party open source project to which Microsoft also contributes compatibility data.

How to port apps and drivers to Arm64

To create a native version of your application, in Visual Studio add a ARM64 solution platform from Configuration Manager, copying the configuration from x64 and creating new project platforms. Then, compile and fix errors.

Once you build in Release, crashes are likely to come from Dependencies that do not offer Arm64 binariesThey will need to be updated, recompiled, or replaced as needed.

If you want to check the resulting binary, use PowerShell and run dumpbin /headers on the .exe to confirm that the header indicates AA64 machine (ARM64). This is a quick check to make sure you're not running the wrong variant.

Testing and debugging are easier if you work on an Arm machine. If you develop from x86/x64, Use remote debugging to a Windows device or VM on ARMMicrosoft documents strategies in its Arm debugging guide.

As recommended prerequisites, use Visual Studio 2022 v17.4 or later with native Arm64 support (VS 17.10 Preview adds improvements), and if you prefer, LLVM Clang 12+ for compiling and linking. The native toolchain offers superior performance compared to emulated versions.

As for frameworks, they are supported .NET 7, .NET 6 LTS, .NET 5.0.8+ and .NET Framework 4.8.1You can also compile C++ with clang-cl, which maintains ABI compatibility with MSVC.

  How to use Dynamic Wallpaper and Lively Wallpaper in Windows 11

Dependencies, Arm64EC and external help

When a library blocks you from compiling, recompile it internally for Arm64 If it is your own, ask the third party for a new version if it is commercial, or look for compatible alternatives if it is open source.

Before changing stacks, check if vcpkg now has an updated version with Arm64, and if not, consider contributing to support. Many communities would appreciate that help.

As an intermediate strategy, Arm64EC allows you to mix your recompiled app with x64 dependencies that run under emulation in the same process. It's not valid to combine them the other way around (you can't use pure Arm64 dependencies in an x64 process).

If you need support, Linaro collaborates with companies and communities to enable software on ARMYou can open a request on their Service Desk to explore support for missing Windows-on-ARM packages.

Testing on hardware or VM, CI/CD and multithreading in emulation

To ensure quality, it is key that the test pass runs on Arm64 architecture: real hardware running Windows on ARM or a compatible VM, so that the results reflect the end-user reality.

Building and testing on the same machine simplifies life, although you can also Extend your build infrastructure to generate cross-platform binaries and then deploy them on a dedicated Arm64 testbed.

If you experience rare sync issues with multi-threaded apps, experiment with strict or very strict multi-core modes, or force single-core mode to see if the problem goes away. This is a useful technique for narrowing down race conditions.

To quickly set up a test environment, Azure offers a quick start to create a Windows VM on ARMIt's a convenient route for CI or manual testing when you don't have physical hardware available.

Installing Windows and Storage Drivers: x86/x64 vs. ARM

If you install Windows 11 or 10 on a computer Intel no units appear, you may need Load the Intel Rapid Storage Technology (IRST) driver during the wizard or disable Intel VMD. This only applies to x86/x64 platforms, not ARM devices.

The typical procedure with IRST consists of download the package from the manufacturer's support page, extract it to a memory USB and use the load driver option on the screen that asks where you want to install Windows so that the installer detects the disks.

As an alternative, it is possible disable Intel Volume Management Device (VMD) on BIOSEnter with F2, switch to Advanced mode with F7, go to the VMD section and disable the driver; save with F10. The nomenclature may vary slightly between models and UEFIs.

On models with Intel Lunar Lake, Manual installation of IRST drivers is not supportedIt is recommended to use Windows 11 24H2 or higher and proceed with a standard installation without loading drivers.

However, if your computer is ARM (for example, with a Qualcomm CPU), ASUS indicates to use the Cloud Recovery from MyASUS on Win to reinstall the system instead of the traditional flow with IRST, which does not apply to this architecture.

see drivers installed with driverquery
Related article:
How to view all installed drivers in Windows with DriverQuery and other tools