Skip to content
lalitha-oruganti edited this page Jun 6, 2024 · 78 revisions

Installing Windows 10 IoT Enterprise LTSC 2021 on the NXP i.MX8 PLUS ARM EVK

This guide explains how to install Windows 10 IoT Enterprise LTSC 2021 Arm Edition on an NXP i.MX8 PLUS EVK Board. The process outlined in this guide shows one method which should take about an hour. References to additional options and background information are included in the appendix.

Prerequisite Hardware

  • Host PC – running Windows 10 or ideally Windows 11
  • NXP i.MX 8M plus EVK w/power cable & USB type C cable
  • MicroSD card (8-32GB). Note: If the only available microSD card is larger than 32 GB, see steps in the appendix
  • MicroSD adapter
  • USB mouse & keyboard for the NXP board
  • USB hub which allows multiple USB devices
  • HDMI monitor
  • HDMI cable



EVK Board.png

i.MX 8M Plus EVK Board

Host PC Setup

  1. Create a folder on the root of your Host PC named c:\nxp. Downloaded items in future steps should be saved in this folder unless otherwise specified
  2. Go to nxp.com and set up an account to download the BSP prebuild binaries

Prerequisite Software

  1. Download the NXP BSP Prebuild Binaries for Windows IoT to the NXP folder
  2. Download the Microsoft ADK with support for Windows 10, version 2004 to the NXP folder
  3. Download the Microsoft Windows PE add-on for ADK version 2004 to the NXP folder
  4. Download the X23-15068 Win 10 IoT Enterprise 2021 LTSC Base 21H2 Arm64 English OPK to the NXP folder

Note: The OPK download requires a Microsoft CLA Customer License Agreement with Microsoft.

  1. The UUU (Universal Update Utility) download is also necessary but will be shown in a later step

PART 1 – Verifying Initial EVK Functionality

The EVK ships with linux installed on the onboard eMMC but will be erased in further steps. Before proceeding with the Windows setup, you can validate the EVK hardware and your test setup by following these steps:

  1. Ensure the board is powered off
  2. Set the DIP switches to eMMC boot mode


eMMC boot.png


  1. Connect monitor to the HDMI port
  2. Plug in power adapter to USB C Port 0
  3. Toggle power switch to ON
  4. Ensure red power LED illuminates
  5. Ensure the linux desktop displays on the HDMI monitor

PART 2 – Host PC Software Installation

  1. Unzip the NXP BSP prebuild binaries for Windows IoT
  2. Install ADK by running adksetup.exe. Use default settings
  3. Install the WinPE ADK add-on by running adkwinpesetup.exe. Use default settings

PART 3 – Preparing the Windows 10 IoT Ent Arm Installer and Flashing it to the MicroSD Card

Prepare Windows Image

  1. If necessary, unzip the Windows OPK download
  2. Locate the Windows 10 IoT Ent Arm64 ISO Image file. Path and file names may vary depending on version. Here is an example of where to access the file:

C:\nxp\ARM version\X23-15068 Win 10 IoT Enterprise 2021 LTSC Base 21H2 Arm64 English OPK\SW DVD9 Win 10 IoT Enterprise 2021 LTSC Base 21H2 Arm64 OEM\Layer\19044.1288.211006-0501.21h2_release_svc_refresh_CLIENT_ENTERPRISES_OEM_A64FRE_en-us.iso

  1. Rename this file to win10.img

Note: By using the img file extension, the mount option will be available in the next step.

  1. Right click on win10.img and select MOUNT which should mount the ISO as a drive on your system
  2. Navigate to the source folder on the Win 10 IoT Ent LTSC 2021 Arm ISO that is mounted
  3. Locate the install.wim file and copy it into memory by right clicking and selecting copy
  4. Navigate back up to your root nxp folder and then into the folder where you previously unzipped the NXP BSP prebuild binaries for Windows IoT. Enter the IoTEntOnNXP folder and paste the install.wim file into this folder

Inject NXP Drivers into the Image

  1. Open the command prompt as an administrator and navigate to that same IoTEntOnNXP folder
  2. Run the following command to prepare the WinPE image for the microSD Card:

make-winpe-enterprise.cmd / disable_updates / test_signing

Note: This command can take approximately 30 minutes. When finished, an out folder will have been created with the necessary operating system and driver files inside.


Intall.wim.png

Deploy Image to MicroSD Card

  1. If not already open, open a command prompt as administrator
  2. Run the diskpart command and type list disk to show the disks on the Host PC
  3. Insert the microSD card into the host PC (using an adapter if necessary)
  4. Run list disk again in order to identify the disk # of your microSD card. Take note of which disk # is shown for the microSD card
  5. Type EXIT to leave the diskpart console
  6. Navigate to the IoTEntOnNXP folder
  7. Type the following command: make-winpe-enterprise.cmd /apply 1

Note: The example command below uses disk 1 for the microSD card disk. It is important to note the correct disk number to avoid losing data on a drive on your host PC with the following command. Change the command below to match your microSD card disk number. Note: This command can take 10 to 15 minutes to complete.

  1. View the microSD card from your host PC and notice that it contains some files indicating the Windows PE operating system has been loaded. Results may vary but the used disk space should be approximately 5 GB



Windows operating system.png


  1. Safely eject microSD card from host PC.

At this point the Windows installer is loaded onto the microSD card. It is now time to load the NXP bootloader to the onboard eMMC.

PART 4 - Flashing NXP Bootloader Firmware to eMMC

By flashing the bootloader to the eMMC memory, it will be possible for the board to boot and then later install Windows from a microSD. Note: The UUU tool requires UUU boot support to be enabled (as in this design). However, for security reasons, it is recommended to disable UUU download support in U-Boot in final designs.

  1. To flash the bootable firmware to eMMC, we recommend downloading the UUU (Universal Update Utility) 1.5.21 tool used for BSP testing from: https://github.com/nxp-imx/mfgtools/releases/tag/uuu_1.5.21
  2. Navigate to the firmware directory. In the source package, it is in imx-windows-iot\BSP\firmware
  3. Create a directory, tools and inside this directory, create a directory uuu
  4. Download the UUU tool and copy it into the firmware\tools\uuu\ directory
  5. Power off board
  6. Switch the target board to USB download mode using DIP switches


USB download mode.png

  1. Connect a USB-C cable to the desktop and the board's USB-C port. Then turn on the board
  2. Execute the command: .\flash_bootloader.cmd /device MX8M_PLUS_EVK /secure 0

Note: The command syntax is as follows:

.\flash_bootloader.cmd /device <device_name> /secure <insecure=0, secure=1>

  1. When the process is complete, power off the board. Disconnect the USB-C cable and connect the board to the PC. Failure to disconnect from the PC may cause errors in subsequent steps

Note: If you receive a message, “Failure open usb device” this may be related to the driver not having been loaded. Simply remove the USB cable, power cycle the board, reinsert the USB cable, and try again.

At this point the board is capable of booting from onboard eMMC.

PART 5 – Installing Windows

  1. Ensure the board is powered off
  2. Remove the microSD card from the host PC and insert it into the board
  3. Adjust DIP switches on the board to enable microSD card boot mode


SD card boot.png

  1. Connect monitor to HDMI port
  2. Plug in power adapter to USB C Port 0
  3. Toggle power switch to ON
  4. Ensure red power LED illuminates
  5. Ensure that the Windows installation process can be seen on the HDMI monitor
  6. Connect a USB hub to USB port 1 and connect a mouse and keyboard to the hub
  7. Carry out the Windows installation process

PART 6 – Booting the Board into Windows from eMMC

  1. Ensure the board is powered off
  2. Set the DIP switches back to eMMC boot mode. (The microSD may remain installed but is no longer necessary.)


Switch back to eMMC boot.png

  1. Toggle power switch to ON
  2. Ensure Windows displays on the HDMI monitor
  3. Power cycle the board to confirm that Windows operates properly. Try opening certain applications and running them while noting that there are certain limitations in Windows PE

Appendix

This quick start guide contains all necessary steps to install Windows IoT Enterprise LTSC 2021 Arm Edition on an NXP i.MX8 PLUS EVK Board. Many of these steps came from the following resources. For further information, please review them directly.

  1. Windows 10 IoT Enterprise for i.MX Applications Processors Main Website
  2. NXP i.MX Windows 10 IoT Enterprise Quick Start Guide
  3. Microsoft Getting Started with Windows 10 IoT Enterprise on the NXP i.MX 8M Plus EVK YouTube Video
  4. How to Install Windows IoT Enterprise on an ARM NXP I.MX8M Plus Board

MicroSD card densities larger than 32 GB may also be used with some changes. A 64 GB card was tested to work as long as the make-winpe-enterprise.cmd file is modified before running the command. Edit the make-winpe-enterprise.cmd file at or near line 807 as follows:

Before: echo create partition primary >> diskpart.txt

After: echo create partition primary size=32000 >> diskpart.txt