none
Build Custom Windows 10 IoT image RRS feed

Answers

All replies

  • Hi all,

    Could you please provide information on how to build a custom Windows 10 IoT Core image for Raspberry Pi 2.

    I followed the following link

    https://blogs.msdn.microsoft.com/iot/2015/12/14/windows-10-iot-core-image-creation/

    Even after the installations are complete, FMFiles, MSPackages and OEMInputSamples are not found in the directory.

    Please provide your valuable input.

    Thanks.

    Regards,

    Shwetha


    Monday, January 18, 2016 5:28 AM
  • Hello Friend,

    For Windows 10 IoT Core Image customization, i think it is not open for ordinary developers now.

    Because the BSPs are not open for all people. For more info, you can refer to the "Commercialization" page on www.windowsondevices.com

    https://www.windowsforiotdevices.com/


    Keep Fighting


    Monday, January 18, 2016 8:50 AM
  • is it a double post as you already asked the same question?

    https://social.msdn.microsoft.com/Forums/en-US/005ce724-2184-4dad-8ad5-0fee4c63f045/buid-custom-windows-10-iot-core-image?forum=WindowsIoT

    Monday, January 18, 2016 12:51 PM
    Moderator
  • NOTE: I have merged the two questions as suggested by cyberh0me.

    Hi Swetha,

    Can you please clarify exactly where the blog steps failed for you?

    Sincerely,

    IoTGirl

    Wednesday, January 20, 2016 6:44 PM
    Moderator
  • Hi,

    Thank u for the info.

    Am able to build it successfully.

    Thanks.

    Regards,

    Shwetha

    Thursday, January 21, 2016 10:34 AM
  • Hi Shwetha,

    Can you please provide details as to what was wrong and how you fixed it?  My assumption is the AK was either not installed or failed to install correctly.

    Sincere thanks,

    IoTGirl

    Thursday, January 21, 2016 6:25 PM
    Moderator
  • Hi,

    Yes, your assumption is correct. ADK was not installed correctly.

    Thanks.

    Regards,

    Shwetha

    Friday, January 22, 2016 9:41 AM
  • Hi Shwetha,

    Many thanks for the confirmation.

    Sincerely,

    IoTGirl

    Saturday, January 23, 2016 6:05 AM
    Moderator
  • I've applied for BizSpark so I can try building my own FFU.  If anyone else has access to the tools now, it'd be great to hear if this actually works.
    Thursday, March 3, 2016 1:36 AM
  • All documentation that I've read so far seems to indicate that anyone wishing to employ Windows 10 IoT can only do so by choosing one of the supported boards.  However, Toradex offers a Windows 10 IoT starter kit, so obviously there is a process for porting Windows 10 IoT to one's custom hardware.  Unfortunately, I haven't been able to find any explanation on how to pursue that option.

    How does an individual or company obtain the necessary resources to port Windows 10 IoT to their own custom hardware, similar to how one might use the Yocto project to bring Embedded Linux to their hardware?


    Tuesday, March 29, 2016 2:22 AM
  • Hello Jin,

    Please read the blog posted by Marcus Russell mentioned in the initial post of this thread.

    Sincerely,

    IoTGirl

    Tuesday, March 29, 2016 6:44 AM
    Moderator
  • IoTGirl,

    That blog post is not related to my question because it builds off of one of the already supported boards.  I'm wondering how those board manufacturers (MinnowBoard, Raspberry Pi, DragonBoard, etc...) obtained the resources to port Windows 10 IoT to their hardware.

    To restate a different way:  I'm not interested in customizing Windows 10 IoT for one of the supported boards; I'm interested in porting Windows IoT to an entirely different board.

    You shouldn't have moved my post here.  The two questions are quite different and the presence of my question makes this thread incohesive.

    Tuesday, March 29, 2016 9:15 AM
  • @JinShil the process for is the same, you have to build your own custom windows iot core image, the only difference is you have to create your own bsp...
    Tuesday, March 29, 2016 1:39 PM
    Moderator
  • Hello Jin,

    Further to cyberhome's correct response, if you are targeting an ARM based board, starting with the Raspberry Pi public BSP is a great option.  You will want to review it either way to see how it is configured so that you can modify it for your board.

    In answer to "I'm wondering how those board manufacturers (MinnowBoard, Raspberry Pi, DragonBoard, etc...) obtained the resources to port Windows 10 IoT to their hardware" You will need to start with your Silicon Vendor and ensure they are onboard to support Windows 10 IoTCore on their chipsets (Intel, Broadcom & Qualcomm obviously do support IoT Core on their chipsets, if you are looking for a different Chipset Vendor, you will have to reach out to them directly).

    NOTE: Toradex worked with NVidia and created an IoT BSP for their board so it is certainly possible to do exactly what you are asking (An NVidia T30 ARMv7 with NEON based SOM https://www.toradex.com/windows-iot-starter-kit).

    Sincerely,

    IoTGirl


    Tuesday, March 29, 2016 4:58 PM
    Moderator
  • Of course I realize that eventually I will have to build a custom OS image, but that is not the subject of my question.  I am looking for information on creating a BSP.

    All of the information one needs from the Silicon Vendors to build a BSP is publicly available in the form of datasheets and manuals at the Silicon Vendors' website.  I can write all the code necessary to create the silicon side of the BSP with the information the Silicon Vendor publicly provides.  I don't need the Silicon Vendor to do it for me, and I don't need them to serve as a redundant middleman between me and Microsoft.

    What I can't do is write the Windows 10 IoT side of the BSP without information from Microsoft.  Whoever created the BSPs for the Minnowboard, Raspberry Pi 2, etc... did so with resources from Microsoft.  What is the nomenclature Microsoft uses for those resources, and how can I obtain them?


    Tuesday, March 29, 2016 11:50 PM
  • Hi JinShil,

    Your question tells me that you have not read the blog as everything you need is addressed there. Let me pull out the relevant part for you:

    ----------8<----------

    Creating a Windows 10 IoT Core image

    Developers can configure and create Windows 10 IoT Core images. First, install prerequisites for image creation:

    1. Download and install the Windows 10 Assessment and Deployment Kit, or ADK
    2. Download and install the Windows 10 IoT Core OS Packages, available for download through the MSDN download center with subscription.

    ---------->8----------

    You are asking about Windows 10 IoT Core OS Packages

    Microsoft does NOT recommend deploying to a chipset that is not supported by the Silicon Vendor. Please do work with the Silicon Vendor to ensure they condone your efforts.

    Sincerely,

    IoTGirl 

    Wednesday, March 30, 2016 5:56 PM
    Moderator
  • Of course I read the blog post and saw that those downloads are needed for building an image, but it doesn't specifically say that the ADK and Windows 10 IoT Core OS Packages are the same resources Microsoft provides to silicon vendors when they create their BSP.  Perhaps it is.  Perhaps there's more.  Perhaps you don't know.

    Obviously I will only choose a chipset supported by the silicon vendor, but the silicon vendor only needs to support the chipset itself.  The chipset has to have a resource profile capable of running Windows 10 IoT, but that can be determined by comparing Windows 10 IoT requirements with the chipset's specs, or empirically through testing; all within reach without the silicon vendor's blessing or direct involvement.

    I would be interested in knowing why you think it is necessary to get the silicon vendors' blessing?  Everything one needs to create a BSP, from the silicon vendors' perspective, is publicly available on their websites.  The missing pieces are the resources from Microsoft (which may be behind the MSDN paywall, but I'm hesitant to pay for the subscription until I know for sure). 

    You seem to imply that Microsoft has a set of resources that they only supply to silicon vendors, thus requiring us to go through them to obtain said resources.  If that's the case, please directly say so.  If the ADK and the Windows 10 IoT Core OS Packages are all that's required to create a BSP, again, please directly say so.


    • Edited by JinShil Thursday, March 31, 2016 4:58 AM Typos
    Thursday, March 31, 2016 12:21 AM
  • Hello Jin,

    I believe your question has been answered and I can only point you again to the documentation at

    https://msdn.microsoft.com/en-us/library/windows/hardware/dn916104%28v=vs.85%29.aspx

    ----------8<----------

    • Use the BSP.config.xml file you downloaded as part of the BSP kit, or,
    • Generate your own BSP.config.xml by running the BSP kit configuration tools from the SoC vendor and selecting your component drivers.

    ---------->8----------

    Sincerely,

    IoTGirl

    Thursday, March 31, 2016 4:24 PM
    Moderator
  • No, the question has not been answered.

    "Generate your own BSP.config.xml by running the BSP kit configuration tools from the SoC vendor and selecting your component drivers."

    That requires a BSP from the silicon vendor, but what you clearly don't understand is I am the one creating the BSP, not the silicon vendor.  Thus there is no "BSP kit configuration tools from the SoC vendor" to be had.  I don't know why that is so difficult for you to understand.

    Microsoft must provide some resources to the silicon vendor in order for them to create a BSP supporting Windows 10 IoT.  Perhaps those resources are behind the MSDN paywall, or perhaps those resources are only available to silicon vendors after signing an NDA.  Either way what those resources are and how one can obtain them has not been unambiguously stated in this discussion.

    Perhaps someone with real industry experience would be willing to clarify.



    • Edited by JinShil Thursday, March 31, 2016 6:44 PM
    Thursday, March 31, 2016 6:33 PM
  • Hi Jin,

    I am sorry you are getting frustrated. If you absolutely insist on attempting a chipset that does not have an SOC Vendor Supported BSP Kit, you can start with the first point and use either the Broadcom BSP for ARM or the Intel BSP for X86 and "hack" your own solution. However, I am concerned at your reticence at having a direct relationship with the SOC Vendor.

    Sincerely,

    IoTGirl


    Thursday, March 31, 2016 7:58 PM
    Moderator
  • No "hacking" will be required if you'd just share the same information that was provided to Intel, Broadcom, Minnowboard.org, the Raspberry Pi Foundation, and whoever else when they created their BSPs.  There's no reason I can't follow the same process they did to create my BSP.

    Suppose I did contact the SOC vendor... what do you think that conversation would look like?

    Me: Hi I'd like to create a Windows 10 IoT BSP for a custom board I'm building based around your <insert model here> SOC.

    SOC Vendor: We don't have a Windows 10 IoT BSP for that SOC.

    Me: I know; I'm going to create one.

    SOC Vendor: So.... what do you need from us?

    Me: Nothing.  Everything I need from you is publicly available on your website.  The only thing I need are Microsoft's resources.

    SOC Vendor: We are not Microsoft, so we don't have those resources.  Why don't you contact Microsoft?

    Me:  I did, but they told me to contact you.

    SOC Vendor: Well, I don't know what I'm supposed to do for you.

    Me: Neither do I.

    What, specifically, am I supposed to ask them for if I'm the one who's creating the BSP?  And why are you so "concerned"?  I have all of the information about the SOC I need; all I need to do is write the code for the Windows 10 IoT side of things.

    According to your signature you work for Microsoft, and likely have privileged contacts within that organization.  So why don't you find someone there that worked with the board vendors mentioned above, and ask them what process they went through & what resources were shared, then reply with that information in this thread?

    For anyone else interested in BSP development, and have the displeasure of reading this thread, here are a couple of resources that will be required, but have not yet been mentioned:

    * Windows Driver Kit (WDK)

    * Windows Driver Frameworks (WDF)

    I discovered those in this PDF which also mentions some of the debugging tools needed in the BSP development process.


    • Edited by JinShil Friday, April 1, 2016 1:01 AM
    Friday, April 1, 2016 1:00 AM
  • Hi Jin,

    Again, you seem frusrated and yet I have addressed your question. Your mythical conversation with your SOC Vendor could easily result in a "Yes, we are already working with Microsoft and have the following Kit for you" or "No we have attempted a port to that chipset and it does not support the Windows Compiler" potentially saving you a great amount of effort. 

    I have followed the steps in the blog and have already confirmed I have seen other boards customized, and I have even pointed you to the NVidia sample given above that was accomplished by Toradex.

    I wish you the best in your endeavors and hope you accomplish great things.  I would also be very interested if you plan to blog about your porting experience, with or without the support of you SOC Vendor. 

    Sincerely,

    IoTGirl 

    Friday, April 1, 2016 4:30 PM
    Moderator
  • You have not addressed the question directly and completely.

    You keep pointing to the blog post which doesn't discuss BSP creation and I've already shown to be insufficient because it doesn't include the WDK. WDF, or debugging tools.  What other resources are you unaware of?

    You also keep stating we are dependent on the silicon vendor to provide a kit.  This might be true as a byproduct of policy or business strategy by Microsoft, but it is not true from a technical perspective if Microsoft would disseminate information about the process and make the required resources available.

    Everything one needs to write code for the SOC is publicly available from their website.  Why would I ask them for something that I don't want or need, and which they don't even have.  Even if they did have one, I would still want to do it independently to understand the process and the information and tools required to bring support to an SOC where none currently exists.  Microsoft had to provide the vendors something, what is it?  If said resources are only provided to silicon/board vendors as a matter of policy, please say so.  That would also be an acceptable answer to my question.

    If the ADK and Core OS Packages (along with the WDK, WDF, and debugging tools that you failed to mention) are the complete set of resources, please say so.  That would also be an acceptable answer to the question.

    I haven't made any future plans yet, because I can't even get the required information from you to proceed past the first step.  What I might blog about is the horrible experience I'm having trying to get a direct answer to my question.

    What resources does Microsoft provide to board vendors and silicon vendors when they create their BSPs, and what's the process for obtaining said resources?  Not what resources are required to create an image once you have a BSP; that is thoroughly covered in the blog post.  What resources did the vendors receive from Microsoft to create their BSPs?

    Please directly and completely answer that question.





    • Edited by JinShil Saturday, April 2, 2016 1:14 AM
    Friday, April 1, 2016 11:17 PM
  • @JinShil its not completely true when you say "Everything one needs to write code for the SOC is publicly available from their website" i can assure not everything is publicly available but i am sure you will see it by yourself

    I think an individual will have a hard time to build BSP's as Microsoft works closely with silicon vendors and independent hardware vendors to offer Board Support Packages (BSPs) and it make sense if both work together

    anyway what you try to find is similar like this How to Create a Board Support Package (which is for Windows Embedded CE 6.0) but for Windows IoT Core which does currently not exist

    Saturday, April 2, 2016 10:20 AM
    Moderator
  • I've (actually we've) already created hardware abstraction layers for the SOCs I have in mind, and even ported a few specialized RTOSs.  Everything we needed to do that work was publicly available. We now only need to adapt that work to Windows 10 IoT.  Perhaps you could identify what specifically you think is required but not publicly available.

    About a year ago, we met with one of the SOC vendors and they said they were no longer creating BSPs for the Windows platform because it had become too obscure.  The alternative platforms are now saturated with boards, so I saw new opportunity with Windows 10 IoT because there are so few supported boards. 

    The SOC vendors for the hardware we've invested in appear to have abandoned Windows, so we can't rely on them to create the BSPs.  Even if they did, it has become a liability to have to rely on them.  I thought I was doing something positive for this ecosystem by volunteering my talents to bring Windows 10 IoT to where it doesn't currently exist, and show others how they can do the same.

    I appreciate you taking the time to share your thoughts and advice, but this discussion would greatly benefit from more transparency and cooperation, and less doubt.



    • Edited by JinShil Saturday, April 2, 2016 12:03 PM
    Saturday, April 2, 2016 12:00 PM
  • your answer shows me you may have read my posting but you did not understand it

    especially this part

    anyway what you try to find is similar like this How to Create a Board Support Package (which is for Windows Embedded CE 6.0) but for Windows IoT Core which does currently not exist

    Saturday, April 2, 2016 12:41 PM
    Moderator
  • Of course I read and understood your post, and your last statement shows you clearly understand what I am looking for.  You claim such resources don't currently exist for Window 10 IoT, and it certainly appears that way.  IoTGirl seems to imply that everything I need is available in the previously referenced blog post (or behind the paywall at MSDN).  Perhaps you two could reconcile your differences.

    • Edited by JinShil Saturday, April 2, 2016 1:19 PM
    Saturday, April 2, 2016 1:04 PM
  • I worked for several OEMs, HTC, Nokia, i-mate and MediCIS that supported Microsoft Windows on their custom hardware/devices and who created custom drivers and BSPs for Microsoft OSs such as Windows Phone/Windows Mobile and Windows CE.<o:p></o:p>

    The resources that an ISV such as say Qualcomm or an OEM such as above will get from Microsoft but an individual developer will 'not' get are covered by a paid subscription covered by a Microsoft Support contract.<o:p></o:p>

    This means, Microsoft will assign a TAM (Technical Account Manager) to the OEM/ISV which will supply any needed resources to them upon request. The resources encompass both publicly available source code and build and debug tools as well as private tools and source code and most importantly custom patches to the OS/Driver code that are 'not' available in the official OS release. <o:p></o:p>

    For example you might want to support a certain resolution for digitizing your Audio, and say the OS doesn’t support it then you could ask the TAM to add that feature as a patch to the current version of the OS specifically released to you, so you can move on with your development until the feature is fully Forward Integrated into the OS release.<o:p></o:p>

    For this reason, without this support it would be impossible for an individual to create a BSP because almost certainly the OS will not support certain features and functionalities that are required by custom hardware and devices. <o:p></o:p>

    Even worse, sometimes not even the OEM with paid support will be able to acquire all the needed components for a custom BSP or the needed OS feature will simply take too long to develop which would unfortunately exceed the lifetime of the project in practice. This for example, happened to Sendo and drove it to near bankruptcy: https://en.wikipedia.org/wiki/Sendo<o:p></o:p>

    I think without knowing exactly all the specs and requirements of your custom hardware it would  be impossible for IoTGirl or anybody, to answer your question whether or not you will have “everything” to create a custom BSP.<o:p></o:p>


    Monday, September 5, 2016 8:59 AM
  • Microsoft is changing the approach to porting than what has been done in the past. Many hard lessons learned about porting Windows CE - poor documentation, incorrect or missing code, always changing OS, every ARM SoC is different in some way, constant feature requests, etc. A great community helped with Windows CE ports, but it was time consuming and expensive.

    Since there is one core OS now, the approach is to work with the silicon vendors to get ports completed and avoid the pain and other problems of the past. If you want BSP support, you have to go to your silicon vendor. If the silicon vendor doesn't want to work with Microsoft on a port, then you need to look for a different silicon vendor. Even if you have the capability to do a port yourself, you still need to go through the silicon vendor. Maybe you can convince the silicon vendor to do the port for them, but the business deal and IP issue are something that need to be resolved between companies.


    Sean Liming - Book Author: Starter Guide SIM (WEI), Pro Guide to WE8S & WES 7, Pro Guide to POS for .NET - www.annabooks.com / www.seanliming.com

    Monday, September 5, 2016 5:27 PM
  • Hello,

    I'm trying to build my first windows IoT image for windows 10 using IoT_ADK_AddOnKit.

    I followed all the steps described in the setup page but when running the command:

    buildimage ProductA Test

    I have following error in the .log file:

    info: Imaging: Marking partition 'MainOS' as Compact...
    info: Imaging: Creating Windows layout for partition 'Data'...
    00000005@2016/11/21:14:10:53.710 (F) onecore\base\wcp\sil\merged\ntu\ntsystem.cpp(2898): Error STATUS_FILE_IS_A_DIRECTORY originated in function Windows::Rtl::SystemImplementation::DirectFileSystemProvider::SysCreateFile expression: (null)
    fatal error : Imaging!UpdateImage: Failed call CreateNewWindows with error code: -2147024891 (0x80070005)
    info: DismountVirtualHardDiskByFileName: dismounting image C:\Users\rzaiti\AppData\Local\Temp;\410b6c5f41ca4fca864b61d786a644d5.vhd
    info: DismountFullFlashImage:[0,25] Cleaning up temporary paths.
    info: CleanupTemporaryPaths: Cleaning up temporary path C:\Users\rzaiti\AppData\Local\Temp\IMG2DFC.tmp\.
    info: Storage Service: Dismounting the image in 0,3 seconds.
    info: Imaging: See Flash.cbs.log and Flash.csi.log for details.
    info: Imaging: Performance Results:
    info:     Total Run Time:    00:00:11.9822750
    info:     Image Creation Time:    00:00:00.0261095
    info:         Writing FFU Time:    00:00:00
    info:     Storage Stack Time:    00:00:10.5197294

    where on the console I have following message:

    Error : Build failed. See Log for details.

    I made sure to have no storage device connected as described in the tutorial but the issue is still present.

    Any help on this topic ?

    BR,

    Réda

    Monday, November 21, 2016 2:27 PM
  • Hi Réda

    80070005 is an access denied error. Do you know if you have permissions to the area where the image is being built? Any other thoughts on where the denial may be occurring?  Note that your TMP/TEMP folder is under the USERS folder and you must have appropriate permissions to change files in that location.

    Sincerely,

    IoTGirl


    Monday, November 21, 2016 6:57 PM
    Moderator
  • I found this thread most interesting. I totally understand JinShil's points and he is correct and right on point.

    While the RBP2/3 Windows IoT BSP claims to be open source it is far from. Only a very small portion of the BSP source code is publically available on ms-iot github. Most all the components of the BSP are delivered as CAB file components, not source code. While this makes cloning the BSP and adding special drivers to the target BSP possible (which is what they show in the labs) it still is only useful for that (RBP2/3) target board. Not very useful as examples for porting to other SOC's. I would think MS would welcome seeing IoT running on other platforms but without full source on at least one platform its an steep uphill climb. This seems to be the typical corporate stance (and not just from Microsoft)...release just a little source code so you can claim you are "Open Source" but not enough to be of any use to anyone. Then when anyone asks give them the "ask the vendor/ask Microsoft" runaround.


    Dave

    Monday, November 21, 2016 10:29 PM
  • Hi Dave,

    What I have seen as the key to success to porting IOT Core to other chipsets is not really the RPi BSP but also the guidance from the chip manufacturer.  All successful ports thus far involved the chip producer and some without any Microsoft involvement.

    Note that Intel independently shares their BSP with their partners as well. See https://software.intel.com/en-us/node/622251

    Sincerely,

    IoTGirl


    Tuesday, November 22, 2016 6:40 AM
    Moderator
  • Thank you for the link. It is very helpful.Also, I don't disagree with your assessment but the simple facts are some chip manufactures (I won't name any) are not at all interested in supporting any such effort like this. maybe because of past experiences with MS or maybe they are just too committed to Android/Linux to devote any resources to such an effort. I believe the community (and some former chip vendors employees) are more than capable of taking on the task ..that is given the proper documentation and examples.  

    Dave

    Tuesday, November 22, 2016 9:19 PM
  • Hi,

    If I want to bring up windows 10 IoT in some other platform, Where will i get the boot sequence and architecture related documents?

    Is there any developer guide available, which clearly explains how the development process should be?

    Any document available for UEFI, firmware and BSP porting for different platform?

    Regards

    Monday, November 28, 2016 7:36 AM
  • Hi _NaN,

    For BSP information you will need to work with your Silicon Vendor.  I recommend you review this thread as well: https://social.msdn.microsoft.com/Forums/en-US/e55cf502-1a64-49b0-8b78-a1f6b2bf3295/windows-10-iot-core-for-other-targets?forum=WindowsIoT

    The Raspberry Pi BSP & UEFI are available on GITHUB as samples but the silicon vendor will need to provide you with the relevant information for their chipset along with the drivers for their hardware.

    Sincerely,

    IoTGirl

    Monday, November 28, 2016 6:38 PM
    Moderator
  • Hello IoTGirl,

    Thanks for the response, I've been late to give you an answer. I succeeded to make it work. It was related to the fact that I was not using the good version of ADK.

    Thanks

    Tuesday, December 6, 2016 6:08 PM
  • Many thanks for following up!
    Tuesday, December 6, 2016 8:09 PM
    Moderator
  • IoTGirl,

    What was at this link? As it is now a page not to be found.

    Thank you,

    C-Coder

    Thursday, January 19, 2017 10:23 PM
  • If you mean the Intel link, I think it was for the MinnowBoard Max BSP - or in this case the device drivers. Here is a different active link:

    https://downloadcenter.intel.com/download/25618/Intel-Embedded-Drivers-for-Windows-10-IoT-Core-32-bit-


    Sean Liming - Book Author: Starter Guide SIM - www.annabooks.com / www.seanliming.com

    Friday, January 20, 2017 4:37 PM