sticky
Summarize of Image Customization for Windows 10 IoT Core RRS feed

  • General discussion

  • If you installed the Windows IoT Core Image via IoT Dashboard, please note that the image downloaded is a Windows 10 IoT Core test image designed for prototyping only. If you are looking to commercialize or you are thinking about mass-producing devices running Windows 10 IoT Core, or you want to use a custom FFU for optimal security, you can use the Windows ADK IoT Core Add-ons to create a test or retail image that it can be quickly flashed onto new devices.

    Generally, a test image includes tools for quickly access and modifying device, custom feature, and custom applications, it is helpful for Developers, hardware vendors, and manufacturers (OEMs) who are trying out new device designs. It is also a good choice for hobbyists and organizations that are creating devices designed to run in non-networked or controlled network environments. When you are creating a test image, you just need to download and install the kits on your development PC, with using the temp certificates. But if you want to create a retail image, which can be made more secure for public or corporate networks while still receiving updates, you must purchase a code-signing certificate from a Certificate Authority (CA) for which Microsoft also issues a cross-certificate.

    More details please see this guidance in Microsoft Document. https://docs.microsoft.com/en-us/windows-hardware/manufacture/iot/iot-core-manufacturing-guide

    Now, here I want to talk about how to troubleshoot when we encounter errors, and provide some solutions for customizing.

        1. How to troubleshoot when exception appears?

    When you fail to create a FFU image, you can try to follow this steps to fix the issue.

          1) It is recommended that the versions of OS, Windows Assessment and Deployment Kit (ADK), and Windows Driver Kit (WDK)should be consistent. If the Windows ADK and WDK are older, you can uninstall them from Control Panel,  then download and install the related version.

         2) When building the image, the add-on kit will log information in these files, e.g. building image for ProductA for Raspberry PI:

    • {MyWorkspace}\Build\arm\ ProductA_Test.log
    • {MyWorkspace}\Build\arm\ProductA\Test\ Flash.ImageApp.log
    • {MyWorkspace}\Build\arm\ProductA\Test\ Flash.ImageApp.cbs.log

    You can find detailed error information in the three files, it is very helpful for troubleshooting the failure.

       3) In general, if an error like “fatal error : Error: Missing package” appears, you can try to rebuild all the packages via New-IoTCabPackage All (or) buildpkg All command, and then build the image again, it would fix this issue.

        4) If you are creating the a custom image for Dragonboard 410c, please refer to this link(

    https://stackoverflow.com/questions/50199851/dragonboard-410c-create-custom-windows-10-iot-core-image), Michael has detailed the steps. The guide in the Qualcomm official portal(https://developer.qualcomm.com/hardware/dragonboard-410c/software)

    seems outdate, because I can not find the MobileOS folder mentioned in Building FFU image section.

         5) If you created and flashed the image on your device without any fail, but you can not use SSH to connect the device, please make sure that the service sshsvc has been started on your device. Please note that, when the device roots at the first time, it is not recommended to reboot the device immediately, because IoT Core need to complete the system configurations for a while.

      2. How to run PowerShell commands when device boots?

    As we know, we can create a batch file(*.bat/*.cmd) or PowerShell script file (*.ps1) on desktop, and then add the file to run task when system starts. In windows iot core, we can also do that, and include the batch file in a FFU image. But how to run PowerShell commands when device boots on Windows iot Core? Please refer to following steps.

    • Create a PowerShell file including the commands, e.g. startup-setup.ps1.
    • Create a batch file named Startup.cmd in ANSI code with following content.

    PowerShell -executionpolicy bypass -File " startup-setup.ps1"

    • Add the command in OEMCustomization.cmd

    schtasks /Create /SC ONSTART /TN <task-name> /TR C:\OEMTOOLS\Startup.cmd

      3. How to add custom display resolution to image?

    When you created a test image, you can navigate to the admin portal, but there is only "640x480 (64 Hz)" listed under Device Settings -> Display Resolution. As we know, the system configuration parameters, which would traditionally be edited and stored using a BIOS, are stored instead in an optional text file named config.txt(https://www.raspberrypi.org/documentation/configuration/config-txt), the full path of config.txt is C:\EFIESP\config.txt.  We can set the display resolution in config.txt and then build the image with the modified config.txt file.   Please refer to this link(https://stackoverflow.com/questions/51604203/file-collision-error-building-iot-core-image-with-modified-config-txt-file), Rita has provide the solution about how to build IoT Core image with the modified config.txt file.

      4. Some retail features have been deprecated in the latest build,  please see the detail information in IoT Core feature list.


    MSDN Community Support Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    Tuesday, February 26, 2019 10:06 AM
    Moderator