Windows on ARM with a Qualcomm X Elite

Hello, can anyone share his experience with the new ARM Chips for Windows on ARM in terms of compiling speeds etc. ?
Mine will arrive tomorrow and after a bit of research, some say Windows on ARM x86 emulation slows down the compiling time to minutes for easy Sketches.

Thank you

1 Like

Same question here. How about running Arduino IDE with a Snapdragon X Elite or X Plus?

@25matzero how is it working for you?

1 Like

Uno R3 works fine, no issues, no slowness.

Uno R4 minima and ESP32 however, are unusable. It seems that there is no DFU-RT driver available for windows on arm. The IDE can see the board, but can't upload. Both work fine with the same cable on my x86 laptop

Cannot open DFU device 2341:0069 found on devnum 1 (LIBUSB_ERROR_NOT_FOUND)
No DFU capable USB device available
Failed uploading: uploading error: exit status 74

1 Like

Hi @amoore204.

I suggest using Zadig to install the WinUSB driver. I don't have a Windows ARM machine so I can't try it out, but the Zadig developer seems to be quite involved in the Windows ARM world and they say it works:

https://github.com/pbatard/libwdi/issues/155#issuecomment-1450642313

I have verified that the UNO R4 Minima works fine with the WinUSB driver installed via Zadig on a Windows x86 machine. I didn't bother to test it with an ESP32 board, but I'm sure it will work as well.

Unfortunately, Zadig has failed to install any drivers.

ESP32 will work, but you can't use the setup.exe. Download the Windows Universal Driver from Silicon Labs. Find silabser.inf and right-click>install to get the driver to install. Don't use setup.exe. It will tell you that it's not compatible. Just got this working today.

1 Like

Please provide a detailed description of what you mean by this in a reply on this forum thread, including:

  • What did you do?
  • What were the results you expected from doing that thing?
  • What were the results you observed that did not match your expectations?

Make sure to include the full and exact text of any error or warning messages you might have encountered.

Quite simply,

  • I run Zadig as an admin with the R4 connected.
  • Zadig identifies the device as DFU-Port (Interface 2).
  • I have tried to install WinUSB, USB Serial, and libusb-win32
  • Install Driver, or Install WCID Driver, neither changes the outcome.
  • Zadig gives the same errors each time.
    • As a popup: "The driver installation failed."
    • At the bottom of the Zadig window: "Driver Installation: FAILED (Operation not supported or not implemented)"

I have also tried installing the DFU-RT_Port_(Interface_2).inf file directly by extracting them, but they also fail with: "A certificate chain processed, but terminated in a root certificate which is not trusted by the trust provider"

pbatard has stated that Win11 on arm64 won't accept Zadig drivers without disabling DSE. And my Galaxy Book4 Edge steadfastly refuses to boot with DSE disabled.
https://github.com/pbatard/libwdi/issues/289#issuecomment-1848986132

Edition Windows 11 Home
Version 24H2
Installed ‎2024-‎08-‎26
OS build 26100.1591
Experience Windows Feature Experience Pack 1000.26100.18.0

Zadig WinUSB Log:

Using inf name: DFU-RT_Port_(Interface_2).inf
Successfully extracted driver files.
Installing driver. Please wait...
libwdi:info [extract_binaries] Successfully extracted driver files to 'C:\Users\amoor\usb_driver'
libwdi:info [wdi_prepare_driver] Successfully created 'C:\Users\amoor\usb_driver\DFU-RT_Port_(Interface_2).inf'
libwdi:info [wdi_prepare_driver] Creating and self-signing a .cat file...
libwdi:info [wdi_prepare_driver] Test signing is: Disabled
libwdi:debug [AddFileHash] 'wdfcoinstaller01011.dll': PE type
libwdi:info [ScanDirAndHash] added hash for 'C:\Users\amoor\usb_driver\amd64\wdfcoinstaller01011.dll'
libwdi:debug [AddFileHash] 'winusbcoinstaller2.dll': PE type
libwdi:info [ScanDirAndHash] added hash for 'C:\Users\amoor\usb_driver\amd64\winusbcoinstaller2.dll'
libwdi:debug [AddFileHash] 'dfu-rt_port_(interface_2).inf': INF type
libwdi:info [ScanDirAndHash] added hash for 'C:\Users\amoor\usb_driver\dfu-rt_port_(interface_2).inf'
libwdi:debug [AddFileHash] 'wdfcoinstaller01011.dll': PE type
libwdi:info [ScanDirAndHash] added hash for 'C:\Users\amoor\usb_driver\x86\wdfcoinstaller01011.dll'
libwdi:debug [AddFileHash] 'winusbcoinstaller2.dll': PE type
libwdi:info [ScanDirAndHash] added hash for 'C:\Users\amoor\usb_driver\x86\winusbcoinstaller2.dll'
libwdi:info [CreateCat] Successfully created file 'C:\Users\amoor\usb_driver\DFU-RT_Port_(Interface_2).cat'
libwdi:info [RemoveCertFromStore] Deleted existing certificate 'CN=USB\VID_2341&PID_0069&MI_02 (libwdi autogenerated)' from 'Root' store
libwdi:info [RemoveCertFromStore] Deleted existing certificate 'CN=USB\VID_2341&PID_0069&MI_02 (libwdi autogenerated)' from 'TrustedPublisher' store
libwdi:debug [CreateSelfSignedCert] Set Enhanced Key Usage, URL and CPS
libwdi:debug [CreateSelfSignedCert] Created new key container
libwdi:debug [CreateSelfSignedCert] Generated new keypair...
libwdi:info [CreateSelfSignedCert] Created new self-signed certificate 'CN=USB\VID_2341&PID_0069&MI_02 (libwdi autogenerated)'
libwdi:debug [SelfSignFile] Successfully created certificate 'CN=USB\VID_2341&PID_0069&MI_02 (libwdi autogenerated)'
libwdi:info [SelfSignFile] Added certificate 'CN=USB\VID_2341&PID_0069&MI_02 (libwdi autogenerated)' to 'Root' and 'TrustedPublisher' stores
libwdi:info [SelfSignFile] Successfully signed file 'C:\Users\amoor\usb_driver\DFU-RT_Port_(Interface_2).cat'
libwdi:info [SelfSignFile] Successfully deleted private key
libwdi:debug [wdi_install_driver] Using progress bar mode
libwdi:debug [installer process] got parameter DFU-RT_Port_(Interface_2).inf
libwdi:debug [process_message] Got request for device_id
libwdi:debug [installer process] got device_id: 'USB\VID_2341&PID_0069&MI_02\5&17EB51C6&0&0002'
libwdi:debug [process_message] Got request for hardware_id
libwdi:debug [installer process] got hardware_id: 'USB\VID_2341&PID_0069&REV_0100&MI_02'
libwdi:debug [installer process] got user_sid: 'S-1-5-21-2089560545-203185343-3362014413-1001'
libwdi:debug [installer process] using syslog 'C:\WINDOWS\inf\setupapi.dev.log'
libwdi:debug [installer process] syslog reader thread started
libwdi:debug [installer process] successfully disabled the system restore point creation setting
libwdi:debug [process_message] Switching timeout to infinite
libwdi:debug [installer process] Installing driver for USB\VID_2341&PID_0069&REV_0100&MI_02 - please wait...
libwdi:debug [syslog]  {Unconfigure Driver Package: C:\WINDOWS\System32\DriverStore\FileRepository\rtu53cx22arm64d.inf_arm64_8f16925bab3853c4\rtu53cx22arm64d.inf} 18:43:55.689
libwdi:debug [syslog]      inf:                          Config Options = IsolationCompat
libwdi:debug [syslog]      inf:                          Class GUID     = {4d36e972-e325-11ce-bfc1-08002be10318}
libwdi:debug [syslog]      inf:                          Class Options  = Configurable
libwdi:debug [syslog]      sto:                          No active drivers -- nothing to unconfigure.
libwdi:debug [syslog]      sto:                     {Unconfigure Driver Package: exit(0x00000000)} 18:43:55.704
libwdi:debug [syslog]      idb:                     {Unpublish Driver Package: C:\WINDOWS\System32\DriverStore\FileRepository\rtu53cx22arm64d.inf_arm64_8f16925bab3853c4\rtu53cx22arm64d.inf} 18:43:55.720
libwdi:debug [syslog]      idb:                          Clearing active driver package 'rtu53cx22arm64d.inf_arm64_8f16925bab3853c4'.
libwdi:debug [syslog]      cpy:                          Unpublished 'oem169.inf'.
libwdi:debug [syslog]      idb:                          Deindexed 136 device IDs for 'rtu53cx22arm64d.inf_arm64_8f16925bab3853c4'.
libwdi:debug [syslog]      sto:                          Flushed driver database node 'DRIVERS'. Time = 0 ms
libwdi:debug [syslog]      sto:                          Flushed driver database node 'SYSTEM'. Time = 0 ms
libwdi:debug [syslog]      idb:                     {Unpublish Driver Package: exit(0x00000000)} 18:43:55.770
libwdi:debug [syslog]      idb:                     {Unregister Driver Package: C:\WINDOWS\System32\DriverStore\FileRepository\rtu53cx22arm64d.inf_arm64_8f16925bab3853c4\rtu53cx22arm64d.inf} 18:43:55.779
libwdi:debug [syslog]      idb:                          Unregistered driver package 'rtu53cx22arm64d.inf_arm64_8f16925bab3853c4' from 'oem169.inf'.
libwdi:debug [syslog]      idb:                          Deleted driver package object 'rtu53cx22arm64d.inf_arm64_8f16925bab3853c4' from DRIVERS database node.
libwdi:debug [syslog]      idb:                          Deleted driver INF file object 'oem169.inf' from DRIVERS database node.
libwdi:debug [syslog]      idb:                     {Unregister Driver Package: exit(0x00000000)} 18:43:55.784
libwdi:debug [syslog]      cpy:                     {Delete Directory: C:\WINDOWS\System32\DriverStore\FileRepository\rtu53cx22arm64d.inf_arm64_8f16925bab3853c4} 18:43:55.784
libwdi:debug [syslog]      cpy:                     {Delete Directory: exit(0x00000000)} 18:43:55.786
libwdi:debug [syslog]      sto:                     {DRIVERSTORE DELETE END} 18:43:55.787
libwdi:debug [syslog]      sig:                          Uninstalled catalog 'oem169.cat'.
libwdi:debug [syslog]      sto:                     {DRIVERSTORE DELETE END: exit(0x00000000)} 18:43:55.791
libwdi:debug [syslog]      sto:                {Core Driver Package Delete: exit(0x00000000)} 18:43:55.795
libwdi:debug [syslog]      sto:           {Unstage Driver Package: exit(0x00000000)} 18:43:55.796
libwdi:debug [syslog]      dvs:      {Driver Setup Delete Driver Package - exit (0x00000000)} 18:43:55.797
libwdi:debug [syslog]      dvs: {DrvSetupUninstallDriver - exit(00000000)}
libwdi:debug [syslog] <<<  Section end 2024/08/29 18:43:55.801
libwdi:debug [syslog] <<<  [Exit status: SUCCESS]
libwdi:debug [syslog] >>>  [Verify Driver Store Integrity]
libwdi:debug [syslog] >>>  Section start 2024/08/29 18:43:55.804
libwdi:debug [syslog]       cmd: "C:\WINDOWS\system32\cleanmgr.exe" /autocleanstoragesense /d C:
libwdi:debug [syslog]      sto: Flags          = 0x00000102
libwdi:debug [syslog]      sto: Verified 186 driver packages.
libwdi:debug [syslog] <<<  Section end 2024/08/29 18:43:55.988
libwdi:debug [syslog] <<<  [Exit status: SUCCESS]
libwdi:debug [syslog] >>>  [Device Install (UpdateDriverForPlugAndPlayDevices) - USB\VID_2341&PID_0069&REV_0100&MI_02]
libwdi:debug [syslog] >>>  Section start 2024/08/29 19:52:47.218
libwdi:debug [syslog]       cmd: "C:\Users\amoor\usb_driver\installer_arm64.exe" "DFU-RT_Port_(Interface_2).inf"
libwdi:debug [syslog]                  Unpublished 'oem147.inf'.
libwdi:debug [syslog]      idb:                          Deindexed 22 device IDs for 'rtu55arm64_0001_ext.inf_arm64_be119edb0205f8ae'.
libwdi:debug [syslog]      sto:                          Flushed driver database node 'SYSTEM'. Time = 0 ms
libwdi:debug [syslog]      idb:                     {Unpublish Driver Package: exit(0x00000000)} 18:43:55.555
libwdi:debug [syslog]      idb:                     {Unregister Driver Package: C:\WINDOWS\System32\DriverStore\FileRepository\rtu55arm64_0001_ext.inf_arm64_be119edb0205f8ae\rtu55arm64_0001_ext.inf} 18:43:55.565
libwdi:debug [syslog]      idb:                          Unregistered driver package 'rtu55arm64_0001_ext.inf_arm64_be119edb0205f8ae' from 'oem147.inf'.
libwdi:debug [syslog]      idb:                          Deleted driver package object 'rtu55arm64_0001_ext.inf_arm64_be119edb0205f8ae' from SYSTEM database node.
libwdi:debug [syslog]      idb:                          Deleted driver INF file object 'oem147.inf' from SYSTEM database node.
libwdi:debug [syslog]      idb:                     {Unregister Driver Package: exit(0x00000000)} 18:43:55.565
libwdi:debug [syslog]      cpy:                     {Delete Directory: C:\WINDOWS\System32\DriverStore\FileRepository\rtu55arm64_0001_ext.inf_arm64_be119edb0205f8ae} 18:43:55.565
libwdi:debug [syslog]      cpy:                     {Delete Directory: exit(0x00000000)} 18:43:55.570
libwdi:debug [syslog]      sto:                     {DRIVERSTORE DELETE END} 18:43:55.571
libwdi:debug [syslog]      sig:                          Uninstalled catalog 'oem147.cat'.
libwdi:debug [syslog]      sto:                     {DRIVERSTORE DELETE END: exit(0x00000000)} 18:43:55.573
libwdi:debug [syslog]      sto:                {Core Driver Package Delete: exit(0x00000000)} 18:43:55.576
libwdi:debug [syslog]      sto:           {Unstage Driver Package: exit(0x00000000)} 18:43:55.576
libwdi:debug [syslog]      dvs:      {Driver Setup Delete Driver Package - exit (0x00000000)} 18:43:55.579
libwdi:debug [syslog]      dvs: {DrvSetupUninstallDriver - exit(00000000)}
libwdi:debug [syslog] <<<  Section end 2024/08/29 18:43:55.581
libwdi:debug [syslog] <<<  [Exit status: SUCCESS]
libwdi:debug [syslog] >>>  [SetupUninstallOEMInf - oem169.inf]
libwdi:debug [syslog] >>>  Section start 2024/08/29 18:43:55.581
libwdi:debug [syslog]       cmd: "C:\WINDOWS\system32\cleanmgr.exe" /autocleanstoragesense /d C:
libwdi:debug [syslog]      inf: Flags: 0x00000000
libwdi:debug [syslog]      dvs: {DrvSetupUninstallDriver - C:\WINDOWS\INF\oem169.inf}
libwdi:debug [syslog]      dvs:      Flags: 0x00000001
libwdi:debug [syslog]      dvs:      {Driver Setup Delete Driver Package: oem169.inf} 18:43:55.638
libwdi:debug [syslog]      ump:           Delete flags: 0x00000002
libwdi:debug [syslog]      pol:           {Driver package policy check} 18:43:55.658
libwdi:debug [syslog]      pol:           {Driver package policy check - exit(0x00000000)} 18:43:55.660
libwdi:debug [syslog]      sto:           {Unstage Driver Package: C:\WINDOWS\System32\DriverStore\FileRepository\rtu53cx22arm64d.inf_arm64_8f16925bab3853c4\rtu53cx22arm64d.inf} 18:43:55.660
libwdi:debug [syslog]      inf:                Provider       = Realtek
libwdi:debug [syslog]      inf:                Class GUID     = {4d36e972-e325-11ce-bfc1-08002be10318}
libwdi:debug [syslog]      inf:                Driver Version = 07/27/2023,1153.13.19.420
libwdi:debug [syslog]      inf:                Catalog File   = rtu53cx22arm64.cat
libwdi:debug [syslog]      inf:                Version Flags  = 0x00000003
libwdi:debug [syslog]      sto:                {Core Driver Package Delete: rtu53cx22arm64d.inf_arm64_8f16925bab3853c4} 18:43:55.679
libwdi:debug [syslog]      sto:                     {DRIVERSTORE DELETE BEGIN} 18:43:55.679
libwdi:debug [syslog]      sto:                     {DRIVERSTORE DELETE BEGIN: exit(0x00000000)} 18:43:55.689
libwdi:debug [syslog]      sto:                     {Unconfigure Driver Package: C:\WINDOWS\System32\DriverStore\FileRepository\rtu53cx22arm64d.inf_arm64_8f16925bab3853c4\rtu53cx22arm64d.inf} 18:43:55.689
libwdi:debug [syslog]      inf:                          Config Options = IsolationCompat
libwdi:debug [syslog]      inf:                          Class GUID     = {4d36e972-e325-11ce-bfc1-08002be10318}
libwdi:debug [syslog]      inf:                          Class Options  = Configurable
libwdi:debug [syslog]      sto:                          No active drivers -- nothing to unconfigure.
libwdi:debug [syslog]      sto:                     {Unconfigure Driver Package: exit(0x00000000)} 18:43:55.704
libwdi:debug [syslog]      idb:                     {Unpublish Driver Package: C:\WINDOWS\System32\DriverStore\FileRepository\rtu53cx22arm64d.inf_arm64_8f16925bab3853c4\rtu53cx22arm64d.inf} 18:43:55.720
libwdi:debug [syslog]      idb:                          Clearing active driver package 'rtu53cx22arm64d.inf_arm64_8f16925bab3853c4'.
libwdi:debug [syslog]      cpy:                          Unpublished 'oem169.inf'.
libwdi:debug [syslog]      idb:                          Deindexed 136 device IDs for 'rtu53cx22arm64d.inf_arm64_8f16925bab3853c4'.
libwdi:debug [syslog]      sto:                          Flushed driver database node 'DRIVERS'. Time = 0 ms
libwdi:debug [syslog]      sto:                          Flushed driver database node 'SYSTEM'. Time = 0 ms
libwdi:debug [syslog]      idb:                     {Unpublish Driver Package: exit(0x00000000)} 18:43:55.770
libwdi:debug [syslog]      idb:                     {Unregister Driver Package: C:\WINDOWS\System32\DriverStore\FileRepository\rtu53cx22arm64d.inf_arm64_8f16925bab3853c4\rtu53cx22arm64d.inf} 18:43:55.779
libwdi:debug [syslog]      idb:                          Unregistered driver package 'rtu53cx22arm64d.inf_arm64_8f16925bab3853c4' from 'oem169.inf'.
libwdi:debug [syslog]      idb:                          Deleted driver package object 'rtu53cx22arm64d.inf_arm64_8f16925bab3853c4' from DRIVERS database node.
libwdi:debug [syslog]      idb:                          Deleted driver INF file object 'oem169.inf' from DRIVERS database node.
libwdi:debug [syslog]      idb:                     {Unregister Driver Package: exit(0x00000000)} 18:43:55.784
libwdi:debug [syslog]      cpy:                     {Delete Directory: C:\WINDOWS\System32\DriverStore\FileRepository\rtu53cx22arm64d.inf_arm64_8f16925bab3853c4} 18:43:55.784
libwdi:debug [syslog]      cpy:                     {Delete Directory: exit(0x00000000)} 18:43:55.786
libwdi:debug [syslog]      sto:                     {DRIVERSTORE DELETE END} 18:43:55.787
libwdi:debug [syslog]      sig:                          Uninstalled catalog 'oem169.cat'.
libwdi:debug [syslog]      sto:                     {DRIVERSTORE DELETE END: exit(0x00000000)} 18:43:55.791
libwdi:debug [syslog]      sto:                {Core Driver Package Delete: exit(0x00000000)} 18:43:55.795
libwdi:debug [syslog]      sto:           {Unstage Driver Package: exit(0x00000000)} 18:43:55.796
libwdi:debug [syslog]      dvs:      {Driver Setup Delete Driver Package - exit (0x00000000)} 18:43:55.797
libwdi:debug [syslog]      dvs: {DrvSetupUninstallDriver - exit(00000000)}
libwdi:debug [syslog] <<<  Section end 2024/08/29 18:43:55.801
libwdi:debug [syslog] <<<  [Exit status: SUCCESS]
libwdi:debug [syslog] >>>  [Verify Driver Store Integrity]
libwdi:debug [syslog] >>>  Section start 2024/08/29 18:43:55.804
libwdi:debug [syslog]       cmd: "C:\WINDOWS\system32\cleanmgr.exe" /autocleanstoragesense /d C:
libwdi:debug [syslog]      sto: Flags          = 0x00000102
libwdi:debug [syslog]      sto: Verified 186 driver packages.
libwdi:debug [syslog] <<<  Section end 2024/08/29 18:43:55.988
libwdi:debug [syslog] <<<  [Exit status: SUCCESS]
libwdi:debug [syslog] >>>  [Device Install (UpdateDriverForPlugAndPlayDevices) - USB\VID_2341&PID_0069&REV_0100&MI_02]
libwdi:debug [syslog] >>>  Section start 2024/08/29 19:52:47.218
libwdi:debug [syslog]       cmd: "C:\Users\amoor\usb_driver\installer_arm64.exe" "DFU-RT_Port_(Interface_2).inf"
libwdi:debug [process_message] Switching timeout back to finite
libwdi:debug [installer process] This version of Windows is refusing to trust the installed certificate.
libwdi:debug [process_message] Installer process completed
Driver Installation: FAILED (Operation not supported or not implemented)
1 device found.
libwdi:debug [wdi_create_list] Hardware ID: USB\VID_2341&PID_0069&REV_0100&MI_02
libwdi:debug [wdi_create_list] Compatible ID: USB\COMPAT_VID_2341&Class_fe&SubClass_01&Prot_01
libwdi:debug [wdi_create_list] Driverless USB device (5): USB\VID_2341&PID_0069&MI_02\5&17EB51C6&0&0002
libwdi:debug [wdi_create_list] Device description: 'DFU-RT Port (Interface 2)'

Thanks for the clarification, and for the link to the valuable information in that related issue.

Unfortunately I'm completely out of my depth here due to lack of knowledge regarding the low level workings of driver certificates and Zadig, and due to lack of a Windows ARM machine to run any experiments on. So I don't think I can be of further assistance to you. Hopefully one of the other forum helpers who are more knowledgeable on the subject matter can help.

If you haven't already, I would recommend spending some time investigating this. If you can find a way to disable driver signing enforcement then I think you will be home free, and although you should be very careful when it comes to drivers, I do think you can trust the driver provided by Zadig; most especially WinUSB since this actually Microsoft's own driver.

I recommend focusing your efforts on WinUSB.

I don't think USB Serial will work since this is the DFU-RT device rather than the CDC device.

Although it probably is appropriate for the device, I'm not sure whether the libusb-win32 driver is available for ARM hosts. The situation for libusb-win32 might be similar to that described for libusbK:

https://github.com/pbatard/libwdi/issues/155#issuecomment-1446020096

there will be no libusbK.sys for ARM/ARM64. Rather the focus is to support WinUSB.

After a few months, do you have any experiences with your ARM Windows, now?
I plan to buy a Surface 11 Pro, but developing for both, Arduino Uno and ESP32 must be possible.

Did anyone get this to work I have a new Surface 11 with an ARM processor and cant update my Uno R4. I have tried Zadig with all its options, tried installing the drivers manually, I even looked on the Renesas web site to see if they had new drivers, with no success.

So I've got this working for ESP32 now.

In Arduino IDE:

  1. Tools > Board - set your board type

  2. Tools > Port - set your port. I had to manually select the port even though the main drop down was set to COM4

  3. Tools > Flash Mode: DIO

  4. Tools > Programmer: select Esptools

On the Esp32 hold down the Boot button as usual and upload your sketch. That should do it

Just chiming in with the snapdragon plus (surface laptop 7) and not able to upload a sketch to my Uno R4 Minima.

I tried following installation guide for ARM machine from this:

Following section 3.3 Manual Installation instructions (only way for ARM64 according to that documentation) I am unable to successfully install those drivers.

I also have a Arduino MEGA 2560, and confirmed that my ARM64 device was able to upload sketches to that board.

Hey! Have you figured out a potential fix for this issue? I'm currently struggling with the same thing.

I gave up trying to get my snapdragon PC to work with my Uno R4 Minima, and just used another PC I had laying around to flash my sketch. It's unfortunate that some boards work with the snapdragon processor, and some don't.

Hopefully this is addressed soon, as I'm a huge fan of Windows on ARM. Just not when it fails to work in these situations

Adding my 2 cents. Currently, I can't upload sketches to my R4 Minima from my arm64 device. This is because I don't have the WinUSB driver. I have tried installing this driver with Zadig, but of course I need to disable Driver Signature Enforcement in Secure Boot. However, currently arm64 devices have an issue where secure boot is not working and an error code is displayed. So, until Windows fixes this is the next update, or Arduino makes these boards compatible with my device, I can't use them.

New Arduino user here. FWIW I was not able to achieve any consistent success with compiling/uploading to an ESP32 dev board via the Arduino IDE on Windows 11 ARM (surface pro 11, snapdragon x elite).

I did manage to find a decent workaround though (with the added benefit of running the Arduino IDE as a native arm64 executable!)

The Arduino IDE and CLI cannot flash the esp32 chip running on ARM windows. Even though the USB to UART drivers are ARM drivers, flashing is near impossible. I've bricked an esp32 dev board trying this approach.

Arduino IDE on WSL with USB passthrough

I have found success with flashing ESP32 dev boards using the Arduino IDE running on WSL (ubuntu). Here's the setup process:

  • Do NOT install any drivers on windows (CP210x, etc.). If windows drivers are installed flashing crashes just as it does running the Arduino IDE on windows. Uninstall any USB-UART drivers in Windows Device manager
  • Install usbipd Connect USB devices | Microsoft Learn
  • Plug in the dev board via USB
  • Install WSL (if not already installed) Install WSL | Microsoft Learn
  • Bring up WSL terminal
  • Determine USB bus ID of the USB uart bridge usbipd list
  • Attach the usb device with usbipd usbipd attach --wsl --busid [bus-id-of-device]
  • In WSL terminal, launch arduino This will launch the linux Arduino IDE
    • Can be installed with sudo apt install arduino

Added side benefit - Native compiler!

Since WSL is running native aarch64 (ARM) code, the arduino IDE installed is also native aarch64! This has huge performance and battery impact as there is no x86_64 emulator required. There is currently no aarch64 windows arm arduino IDE; WSL for the win!

Hi, have you ever tried it with digispark attiny85? I followed your guide for attiny85 but it keeps failing attaching (usbipd list says "unknown device" and ubuntu didn't list it in the lsusb. Windows is not able to recognize the device as there's no driver built for WoA.

I have not. I don't have any experience with this particular chip. It appears the attiny85 doesn't have a built in USB to UART bridge though. You might have to find some kernel modules to get the attiny85 to work over USB, or a dedicated programmer (i.e. another arduino UNO).

The Digispark uses a bit-banged USB implementation, both for uploading sketches via the board's Micronucleus bootloader, and for any communication between the sketch application and the computer via the USB connection.

Micronucleus uses libusb, so you can use the libusb-win32 or libusbK Windows drivers. I haven't tried it with the WinUSB driver.

I have tried all of the methods described here, but I am still unable to apply the DUF device driver.
I would appreciate it if an update were available.