Windows IoT Core

How To Install the FFU Image Platform: UP board (UP-CHT01)

Revision: 01 DRAFT 01

Update Date: 9 February 2018

Prepared For: Aling Wu, AAEON UP Sales & Marketing Manager

Prepared By: Karen Chen UP Evangelist Revision History

The following table contains the information regarding the history and revisions of this living document.

Version Date Contributor Changes Description

01 09 Feb 2018 Karen Chen Initial Creation

Document Attributes

The following table contains the list of files that are associated with this living document.

Filename Description

UP-CHT01-Flash-2-00.ffu The UP board specific Windows IoT Core FFU image to flash.

Copyright © AAEON Page 2 of 12

1 Executive Summary ...... 4

1.1 Objectives ...... 4

1.2 Goals ...... 4

1.3 About the IoT Dashboard ...... 4

2 Requirements ...... 5

2.1 MacOS, BSD, Linux and older Windows versions ...... 5

3 Configure BIOS Settings ...... 6

3.1 Getting into the BIOS ...... 6

3.2 Set the Boot > OS Selection ...... 6

3.2.1 I2C and HSUART: Set to Windows ...... 6

3.2.2 GPIO: Set to Windows IoT Core ...... 6

3.3 HAT Configurations ...... 7

3.3.1 I2C and High-Speed UART ...... 7

3.3.2 GPIO ...... 8

4 Create the Bootable USB Device with Windows IoT Core ...... 9

5 FAQs ...... 11

5.1 DISM Failed. Error: 0xffffffff ...... 11

6 References ...... 12

Copyright © AAEON Page 3 of 12 1 Executive Summary

Windows IoT, formerly Windows Embedded, is a family of operating systems from designed for use in embedded systems. To release Windows IoT Core for end user installations, manufacturers must package and release an FFU image that is compatible with the specific boards, BIOS and drivers.

UP has released an FFU image specific to the UP Board device that requires an updated BIOS. See the requirements section for the specific versions that are compatible.

1.1 Objectives

We will follow an alternative method to flash the FFU image to a USB device using DISM instead of Microsoft’s IoT Dashboard.

Also to enable specific functionality of the UP boards such as I2C, GPIO and High-Speed UART, we will choose which we want to enable and configure the UP BIOS settings accordingly.

1.2 Goals

 Instructions on how to create a bootable USB device using the UP supplied FFU image.  Outline how non- operating systems can also create the bootable USB device.  Set the BIOS to the mode we want to use: I2C, GPIO or HSUART.  End with a working UP device booting into Windows IoT Core.

1.3 About the IoT Dashboard

The Windows IoT Dashboard is useful to remotely controlling headless Windows IoT Core installation as well as flashing an FFU image to an USB device.

However, since the UP boards can be used as a full standalone desktop by connecting a monitor, keyboard and mouse, we can bypass the IoT Dashboard and instead flash the FFU image directly to a USB device to get going quickly.

You are not restricted from following Microsoft’s procedure for installing the IoT Dashboard. Do note that as the time of this writing, you will need the Windows 10 Insider Preview edition enabled. For more information, please see the link below. https://developer.microsoft.com/en-us/windows/iot

Copyright © AAEON Page 4 of 12 2 Requirements

 UP Board with BIOS 0.8 (UP-CHT01 R0.8) or later installed.  A working Windows 10 installation.  The specific FFU image created for your exact board and BIOS version. The FFU file differs between UP Board, UP Squared and UP Core; so, be sure to use the one specific to your device.  A USB flash device being at least 16GB. Recommended are USB3 devices.

2.1 MacOS, BSD, Linux and older Windows versions

If you do not have Windows 10 installed on your local machine, there is an alternative method. You can install an evaluation edition of Windows 10 into a Virtual Machine Manager, such as VirtualBox. From within the running VM, you can attach your USB device and flash the FFU image.

 Download Microsoft’s latest Windows 10 ISO from the link below. https://www.microsoft.com/en-us/software-download/windows10ISO  Install VirtualBox from the link below. https://www.virtualbox.org/wiki/Downloads  When prompted to enter a “Key”, look for the “I do not have a key” or “Skip this step” link and click it. This will install an evaluation edition of Windows 10 that can be used to flash the FFU image.  Finally, when Windows 10 starts up inside of the virtual machine, you will need to “attach” your USB device to your virtual machine. Windows 10 should then detect it as a normal USB device.

From this point, you will be able to follow the rest of this guide.

NOTE: you will have to “Eject” the drive twice to properly close all open files. Once from within the Windows 10 virtual machine, and again from your host machine.

Copyright © AAEON Page 5 of 12 3 Configure BIOS Settings

Before we start, we need make changes in the BIOS to enable the specific function we want to use.

3.1 Getting into the BIOS

Start by connecting a monitor and keyboard to the UP Board and boot into the BIOS. You can do this by powering on the device, waiting for the AAEON logo to appear and then pressing ESC several times until the BIOS screen appears. If prompted for a Password, press ENTER for an empty password.

3.2 Set the Boot > OS Selection

Navigate to Boot > OS Selection.

3.2.1 GPIO, I2C and HSUART: Set to Windows 10 IoT Core For all functions, select “Windows 10 IoT Core” as shown below.

Copyright © AAEON Page 6 of 12 3.3 HAT Configurations

The UP Board BIOS comes preconfigured for I2C and HSUART by default. Only the GPIO functionality requires changes to the HAT configurations.

3.3.1 I2C and High-Speed UART To specify the HAT Configuration options needed to be set for I2C and HSUART default functions, simply restore the BIOS to factory defaults as shown below.  Navigate to “Save & Exit” > “Restore Defaults”

Copyright © AAEON Page 7 of 12 3.3.2 GPIO In the BIOS, navigate to Advanced > HAT Configurations.  Set all LPSS functions to “Disable”  Set I2C0/GPIO and I2S/GPIO function select “GPIO”  Set the SCC SDIO function select “Disabled”

 Scroll down to the HAT Pins Configuration and set the HAT pins to your desired states of either an Input or an Output being Low/High.

 Press ESC, navigate to Save & Exit and select Save Changes and Reset. Copyright © AAEON Page 8 of 12 3.3.3 SPI Windows IoT Core not support SPI on UP-CHT01

Copyright © AAEON Page 9 of 12 4 Create the Bootable USB Device with Windows IoT Core

You will be running Windows IoT Core from a USB Device as Microsoft only allows booting from USB devices as the time of this writing.

NOTE: Microsoft’s FFU format contains the exact partition sizes and layout to create when imaging a USB device. Therefore, you need a USB device of at least 16GB to fit the FFU image.

1. Open an Administrator command prompt (Press START, type “CMD”, right-click on “Command Prompt” and select “Run as Administrator”). Accept the UAC if prompted.

2. Change directories with cd to where you downloaded the FFU file to. For example:

C:\WINDOWS\system32>cd \Users\MyUsername\Downloads C:\Users\MyUsername\Downloads>

3. Plug-in your USB device to be flashed.

On non-Windows 10 machines using the Virtual Machine method mentioned in Section 2.1 above, this is where you will need to “attach” the USB to your running VM.

Copyright © AAEON Page 10 of 12 4. Find the disk “number” that corresponds to your USB device. We can use DISKPART to find this. Type diskpart at the C: prompt and hit enter:

diskpart

Now, type list disk at the DISKPART> prompt to see a list of all devices:

DISKPART> list disk

Disk ### Status Size Free Dyn Gpt ------Disk 0 Online 120 GB 92 GB * Disk 1 Online 57 GB 57 GB

On this machine, the 64 GB USB 3.0 device shows up as “Disk 1.” Therefore, I will be using the number “1” in Step 5 below. If you cannot determine the disk, eject your USB stick from the machine, run list disk, plug in the USB device and run list disk again to compare.

Type exit to get out of DISKPART:

DISKPART> exit

5. Run dism.exe to image the USB device. Enter the following command all on one line.

Remember to replace the ”N” in PhysicalDriveN with the Disk # from step 3 above.

dism.exe /Apply-Image /ImageFile:"up-board-XYZ123.ffu" /SkipPlatformCheck /ApplyDrive:\\.\PhysicalDriveN

6. Once the flash completes, click on the "Safely Remove Hardware" icon in your task tray and select your USB SD card reader to safely remove it from the system. Failing to do this can cause corruption of the image.

Copyright © AAEON Page 11 of 12 5 Application Installation

5.1 Install

http://device-ip-address:8080/

Login ID: Administrator

Password: p@ssw0rd

1. select application.appx

2. select application.cer

3. (optional) Dependencies\x64\Microsoft.xxxx.xx.xx.appx

4. click Go

Copyright © AAEON Page 12 of 12

6 FAQs

Q: How to configure I2S? A: Intel has not supplied the low-level kernel drivers for Windows to enable I2S. Therefore, they are unavailable under Windows 10 and Windows IoT Core.

6.1 DISM Failed. Error: 0xffffffff

If trying to run dism.exe and you get this error, most likely it cannot find the FFU image.  Check that changed to the directory as outlined in Section 4, Step 2.  Check the FFU image exists by running dir and pressing enter.  Does the filename match what you passed into dism via the “ImageFile” parameter?  Lastly, check the log file to see what the error might have been.

Copyright © AAEON Page 13 of 12 7 References

Microsoft Windows IoT Core https://developer.microsoft.com/en-us/windows/iot

Microsoft Windows 10 Download https://www.microsoft.com/en-us/software-download/windows10

Oracle VirtualBox Download https://www.virtualbox.org/wiki/Downloads

Use DISM to flash Windows 10 IoT Core https://docs.microsoft.com/en-us/windows/iot-core/connect-your-device/dism

Copyright © AAEON Page 14 of 12