Windows 10 IoT Core Insider Preview Overview

Windows 10 IoT Core
Insider Preview
Overview and Getting
Started
Version 1.0
April 2015
Proprietary Notice
© 2015 Microsoft. All rights reserved. This document is provided “as-is”. Information and views
expressed in this document, including URL and other Internet website references, may change without
notice. You bear the risk of using it. Some examples depicted herein are provided for illustration only and
are fictitious. No real association or connection is intended or should be inferred.
This document does not provide you with any legal rights to any intellectual property in any Microsoft
product. You may copy and use this document for your internal, reference purposes.
Table of Contents
Overview ---------------------------------------------------------------------------- 1
WHAT IS WINDOWS 10 IOT CORE INSIDER PREVIEW? ------------------------------------------------------------------------- 1
HOW DOES WINDOWS 10 IOT CORE INSIDER PREVIEW COMPARE TO WINDOWS EMBEDDED COMPACT?---------------- 2
Key Concepts ----------------------------------------------------------------------- 2
HEADED/HEADLESS ---------------------------------------------------------------------------------------------------------------- 2
SHELL AND DEVICE EXPERIENCE -------------------------------------------------------------------------------------------------- 3
Getting Started -------------------------------------------------------------------- 4
WINDOWS 10 IOT CORE INSIDER PREVIEW HARDWARE REQUIREMENTS ----------------------------------------------------- 4
BUILDING DEVICE DRIVERS ---------------------------------------------------------------------------------------------------------7
GETTING STARTED WITH UNIVERSAL DRIVERS ---------------------------------------------------------------- 8
BUILDING UNIVERSAL DRIVERS ----------------------------------------------------------------------------- 8
BUILDING APPLICATIONS ---------------------------------------------------------------------------------------------------------- 8
BUILDING UNIVERSAL APPLICATIONS ----------------------------------------------------------------------- 9
TOOLS ------------------------------------------------------------------------------------------------------------------------------ 10
VISUAL STUDIO ------------------------------------------------------------------------------------------ 10
WINDOWS ASSESSMENT AND DEPLOYMENT KIT (ADK) ----------------------------------------------------- 10
IMAGE CONFIGURATION DESIGNER (ICD) ------------------------------------------------------------------ 10
PORTING ------------------------------------------------------------------------------------------------ 11
SETTING UP YOUR DEVICE & FIRST STEPS --------------------------------------------------------------------------------------- 11
REMOTE DEVICE MANAGEMENT ------------------------------------------------------------------------------------------------- 11
INITIATING A REMOTE POWERSHELL (PS) SESSION ---------------------------------------------------------- 12
COMMONLY USED UTILITIES ------------------------------------------------------------------------------- 12
SECURING YOUR DEVICE WITH A TPM 2.0 -------------------------------------------------------------------------------------- 14
GETTING STARTED WITH A DISCRETE TPM MODULE OR TPM-SIMULATOR ------------------------------------- 15
Appendix --------------------------------------------------------------------------- 15
DETAILED TOPICS ----------------------------------------------------------------------------------------------------------------- 15
SHELL CONFIGURATION DETAILS -------------------------------------------------------------------------- 16
FOR MORE INFORMATION: -------------------------------------------------------------------------------------------------------- 19
1
Overview
What is Windows 10 IoT Core Insider
Preview?
Windows 10 IoT Core Insider Preview is a small footprint version of Windows 10 that is based on the
Windows 10 common core and enables lower cost devices with fewer resources. Windows IoT Core
targets devices with a minimum of 256 MB of RAM in a configuration without a screen (headless), or 512
MB of RAM with Windows Video display capabilities (headed), both with a minimum storage requirement
of 2 GB.
Windows IoT Core is similar in concept to previous versions of Windows Embedded Standard or
Windows Embedded Compact in that it targets dedicated devices, not traditional consumer PCs. It
enables many new low cost devices that can be quickly acquired, developed and deployed. In addition to
the numerous commercial embedded Windows customers, with the Visual Studio developer experience
and the alignment with other editions of Windows 10, Windows IoT Core enables hobbyists and Makers
to use inexpensive hardware to quickly develop designs based on Windows 10.
While Windows IoT Core shares a common platform with other editions of Windows 10, there are a
number of key differences. These include Windows IoT Core being brand new, without duplicated Win32
code. While full backward compatibility with other devices or products is not a goal for Windows IoT
Core, app and driver migration is straight forward, and tools and documentation will be provided to ease
the migration process.
Windows IoT Core is based on the modern app model used on Windows 10, though with an expanded
API set. Windows IoT Core achieves its footprint reduction by eliminating redundant APIs, converging
into a common platform across all editions of Windows 10 and removing inbox applications and the
Windows shell experience.
How does Windows 10 IoT Core
Insider Preview compare to Windows
Embedded Compact?
Windows 10 IoT Core Insider Preview shares a great deal conceptually with Windows Embedded
Compact (Windows CE). Both target resource constrained devices, support multiple chipsets, use the
Visual Studio tool chain for development.
Windows IoT Core however deviates from Windows Embedded Compact in a number of ways.
Windows IoT Core shares a common platform (the core OS, kernel and middleware) with other Windows
10 editions and, in many cases, has binary capability with other Windows 10 platforms. Windows
Embedded Compact never provided binary compatibility with other Windows products and used a
custom developed kernel which was different from the rest of the Windows.
Another difference between Windows Embedded Compact and Windows IoT Core is in the image
creation model. Windows Embedded Compact was highly componentized creating complex and error
prone process that had an impact on the API surface and SDK creation. As a result of the complicated
creation process images were often created with everything the OS had to offer. Windows IoT Core is a
feature complete OS focused on minimizing the resource requirements of the full image rather than
significant componentization, resulting in a balance between size, function, and simplicity of image
creation. It also results in a model where a common Windows IoT Core SDK could be created simplifying
application and driver development and porting, and provides a platform that can share applications and
drivers across the Windows 10 line of products.
Key Concepts
Headed/Headless
Windows 10 IoT Core Insider Preview supports both headed and headless device configurations.
Headed devices have a video display and uses the Windows Video subsystem & drivers to address it.
Headed devices have what would be recognized as a “typical” consumer display as you might see on a
laptop or tablet that in industry space would be things like ATMs, kiosks, digital signs and many others.
2
Headless devices have no display and do not require the Windows Video subsystem or drivers.
Headed vs Headless boot mode is controlled by configuration settings (read at boot time.) See the
section on Shell configuration for more detail.
Shell and Device Experience
Windows 10 IoT Core Insider Preview targets appliance type devices that will have OEM branded, custom
user experiences. The consumer Windows experience is seldom the best experience for these types of
devices. As such, the device maker will have complete freedom to create a modern user experience
highlighting their branding and have the ability to have deep integration into devices, hardware and
functionality while still having the familiar development model and tools as the rest of the Windows 10
line of products.
The primary visible user interface face for a Windows IoT Core headed device is a Universal Windows
Platform app (UWP app), that is developed with Visual Studio and deployed to the device. Visual Studio
is used for development and in the case of the UWP app and Visual Studio can package the application
and configuration into an APPX package (APPX is a file format similar to CAB or MSI, with improved
lifecycle management metadata.)
A platform Board Support Package (BSP), the Windows IoT Core OS, the various applications and services
and any provisioning/configuration data are combined in Windows Imaging and Configuration Designer
(ICD) to create an image that can be deployed onto a device. APPX packages are added to a device
image while being created with the ICD tool. (APPX packages can also be added to devices post image
deployment in a variety of ways including device management options).
In Windows, a number of functions and features are provided by the shell. In Windows IoT Core a
minimum custom shell layer will be provided to provide necessary features and to load and manage
OEM applications and manage their capabilities and lifecycle, including application and service watchdog functionality to ensure apps that unexpectedly exit are restarted, providing a predictable experience
for end users
3
Getting Started
Windows 10 IoT Core Insider Preview
Hardware Requirements
The following table lists the minimum requirements for Windows 10 IoT Core Insider Preview (subject to
change). For more detail see “Minimum Hardware Requirements for Windows 10” on the Windows
Hardware Dev Center at https://msdn.microsoft.com/en-us/windows/hardware/dn859155
4
Component
Windows IoT Core
Processor
400 MHz or faster x86 processor or SoC
With PAE, NX SSE2.
ARM SoC requirements are TBD, and will be provided in a future
update
x64 support coming at a later release
Faster processor performance may be required based on the design
and functionality of the device.
RAM
256 MB min. for devices without display support
512 MB min. for devices with display support, depending on
resolution and video implementation
More RAM may be required based on the design and functionality of
the device.
Storage
2 GB min
More Storage may be required based on the design and functionality
of the device.
Security
Trusted
Platform
Module (TPM)
Optional but recommended
If included, the TPM 2.0 must be implemented as either an integrated
firmware-based solution or included as a discrete component.
If implemented, the TPM 2.0 must meet the following requirements:
•
An EK certificate must either be pre-provisioned to the TPM
by the hardware vendor or be capable of being retrieved by the
device during the first boot experience.
•
It must ship with a SHA-256 PCR bank and implement PCRs 0
through 23 for SHA-256. Note it is acceptable to ship TPMs with a
single switchable PCR bank that can be used for both SHA-1 and
SHA-256 measurements.
Note: TPM 2.0 will be required for Windows IoT Core in a future
release.
Display
UEFI Secure
Boot
Optional; Recommended for commercial devices
Screen
Optional
Resolution
Design dependent
5
Bit depth
Touch, touch pad, and digital
pen
Camera
Audio
Wireless
Optional
Rear-facing
camera
Optional
Forwardfacing camera
Optional
Audio codec
hardware
Optional
Primary
microphone
Optional
Secondary
microphone
Optional
Dynamic noise
suppression
Optional
Loudspeaker
Optional
Earpiece
Optional
2G / 2.5G / 3G
(UMTS/EvDO)
/ 4G (HSPA)
cellular radio
Optional (data only; no voice support)
LTE cellular
radio
Optional (data only; no voice support)
Bluetooth
Optional
Wi-Fi
Optional
A-GNSS
Optional
FM radio
Optional
NFC
Optional
Networking
Sensors
Design dependent
Optional
Accelerometer
Optional
Magnetometer
Optional
Ambient light
sensor
Optional
6
Notification
Hardware
buttons
Proximity
sensor
Optional
Gyroscope
Optional
Vibration
mechanism
Optional
NLED
Optional
Power
All buttons are optional
Volume Up/
Volume Down
Start
Back/
Search
Camera
Rotation lock
Connectors
USB
Optional
Headphone/
headset jack
Optional
micro SD card
slot
Optional
Video output
Optional
SIM slot
Optional
Building Device Drivers
Developing drivers for Windows 10 IoT Core Insider Preview uses the same Windows Driver Kit (WDK)
that is used on Windows 10 “Desktop” and other Windows editions. In addition, a developer can take
advantage of the Universal Driver model to write a driver once and have the ability to deploy the driver
to multiple Windows editions.
7
Getting Started with Universal Drivers
A universal driver is a kernel-mode or user-mode driver binary that installs and runs on any UWPenabled edition of Windows 10 Technical Preview. A universal driver calls only device driver interfaces
(DDIs) that are part of the UWP.
Prior to Windows 10 Technical Preview, developers needed to write two separate drivers to get a device
to work on different editions of Windows. For example, a developer had to write one for Windows 8.1
and one for Windows Phone 8.1. Starting with Windows 10 Technical Preview, a developer can write one
driver that runs on both Windows 10 "Desktop" and Windows IoT Core, as well as other Windows 10
Technical Preview versions that share a common set of interfaces. The API set designated for universal
driver development was defined based on existing Windows APIs and as such many drivers require little
to no recoding and may work with a simple recompile. Drivers that adhere to these common APIs are
called universal drivers.
Building Universal Drivers
Windows 10 Technical Preview includes a unified WDK that supports building drivers for desktop,
Windows 10 IoT Core Insider Preview.
In many cases, you can recompile an existing kernel-mode driver that runs on Windows 8.1 to target
both Windows 10 "Desktop" and Windows IoT Core, as long as the driver does not work with any usermode components. WDM and KMDF drivers that work with Windows 8.1 should recompile as universal
drivers targeting Windows 10 Technical Preview with no conversion required.
Existing user-mode drivers may require modification to compile as universal drivers. Specifically, your
driver package must not have any dependencies outside of UWP. For example, only some of the Win32
APIs are part of UWP.
Driver packages should be created in such a way that the pure driver components are packaged
separately so they can easily be used on other platforms.
Visit https://msdn.microsoft.com/en-us/library/windows/hardware/ff554690.aspx for more information
on writing a driver for Windows.
Building Applications
8
Building Universal Applications
UWP is the primary focus for application development on Windows 10 IoT Core Insider Preview. The full
range of UWP languages/frameworks are supports include C++, C#, VB.Net, JS, XAML, HTML, and
DirectX. For headed devices a single UI app can be installed and this UI app owns the entire UI
experience for that device.
In addition to the UI app and existing Windows background task types, Microsoft is introducing “IoT
Background Service” applications that can contain StartupTasks. Any number of these StartupTasks may
be installed and they launch at boot, and they will be auto-restarted by the shell watch-dog if they exit
unexpectedly. In addition to their ability to start at system boot, without a UI app registering them, these
tasks are unique in that they are allowed to execute forever without resource management constraints.
This enables the common patterns in the IoT world where there are continuously running apps
monitoring the device and sensors, processing and reporting data, and controlling external devices.
New UWP Supported Languages and Frameworks
In addition to supporting the traditional UWP languages and frameworks, Microsoft is expanding
support for those that are favored by the IoT community. These are Python, Node.js, and Wiring
platforms that run in UWP and deliver the development experience expected and desired by these
communities. This support will come in the form of extensions to the Python Tools for Visual Studio and
Node.js Tools for Visual Studio packages as well as a new one for Wiring. The application code
developers write will be almost identical (except for native extensions) and will have the same remote
tooling experience all other UWP apps have.
More information on supported languages and frameworks can be found on the Windows Software Dev
Center at http://dev.windows.com/en-us/iot
New APIs
In addition to supporting IoT scenarios by introducing new application types, Windows IoT Core includes
include a broad range of WinRT APIs to support important IoT scenarios. These APIs fall into three basic
buckets
1.
Device and Bus Access
a.
APIs for controlling devices attached through common IoT busses
b. Supported now: GPIO, SPI, I2C, UART, Serial
2.
Connectivity
a.
APIs for communicating with between apps on different machines and on the same
machine
b. Examples: “Application Services” allows different applications on the same machine to
easily communicate with each other while the Windows 10 Alljoyn APIs make it easy to
talk to any devices that support the Alljoyn protocols
3.
System Administration
9
a.
As there is no longer a visible shell on the machine, developers need to be able to take
over some of the OS administration APIs that users usually get by interacting with the
Windows shell. Windows 10 IoT Core Insider Preview includes APIs to give this control to
apps on these IoT Devices
b. Examples: Wireless network password setting, system time zone, power management
All of the security sensitive APIs being added will be protected behind the existing capability
infrastructure. Individual apps on IoT Devices will be able to request and get these capabilities, but apps
that do not do so will run with the same level of sandboxing they would have on any other OS edition.
This approach expands the capabilities of apps on these devices while still maintaining security and
making it easy to prioritize security reviews for the applications that have these extended capabilities.
Tools
Visual Studio
Visual Studio 2015 will be the primary development tool for Windows 10 IoT Core Insider Preview
application development. UWP applications will be built with the same project templates and tools used
for all other UI based UWP apps. Additional templates have been added to make it very easy to build IoT
Background Services.
When configuring a project you can choose to debug the app either locally or on a remote machine.
Local development can be used for applications that are UI only and don’t have direct device
dependencies. Other applications will use the same remote development tools used for mobile/phone
application development and will have the same seamless F5 deploy/launch/debug experience.
Windows Assessment and Deployment Kit (ADK)
The Windows® Assessment and Deployment Kit (Windows ADK) is a collection of tools that you can use
to customize, assess, and deploy Windows operating systems to new computers. Information on
downloading the Windows ADK as well as documentation about how to use the Windows ADK tools are
available on the Windows Hardware Dev Center at
https://msdn.microsoft.com/library/windows/hardware/dn247001.aspx.
Image Configuration Designer (ICD)
You can build a customized Windows 10 IoT Core Insider Preview image using the new Windows
Imaging and Configuration Designer (ICD) tool. The tool allows you to add new drivers, Applications as
10
well as custom settings or policies to an existing Windows IoT Core image and create a new deployable
customized image from it. The tool will provide common mechanism and interface for image
customization for all Windows 10 Editions. For RTM you will also be able to use the tool to create
provisioning packages that can be applied to devices that have already been imaged without needing to
re-image. The Windows ICD tool ships as part of the Windows Assessment & Deployment Kit (ADK). You
will also need to download the Unified Windows Driver Kit (WDK) from the Windows Hardware Dev
Center at https://msdn.microsoft.com/en-us/windows/hardware/dn859155.
Porting
Windows 10 IoT Core Insider Preview is a new UWP based OS and as a result is very limited backward
compatible with applications built with Windows CE or Windows Embedded. However, a large number of
the APIs, Win32 and .Net, which these applications will have used are present on Windows IoT Core and
available to applications. These apps can either be left as classic Win32 or .net apps or migrated to UWP.
UI apps will need to be migrated as the only UI frameworks on Windows IoT Core are the UWP UI
frameworks.
Migration tools will be provided in upcoming releases that will analyze existing app binaries and provide
reports indicating which API calls will need to be removed/changed in order to work property on UWP
and Windows IoT Core.
Setting up your device & First Steps
Included in the Windows 10 IoT Core is a set of tutorials that include setting up your development
environment, flashing the device with Windows IoT Core and have a number of code samples to get you
started developing on Windows IoT Core. Start with the index.htm file in the Docs folder of your
Windows IoT Core release.
Remote Device Management
You can remotely configure and manage any Windows 10 IoT Core Insider Preview device using
Windows PowerShell. PowerShell is a task-based command-line shell and scripting language, designed
especially for system administration.
11
Initiating a Remote PowerShell (PS) session
To start a PS session with your Windows 10 IoT Core Insider Preview device, you’ll first need to create a
trust relationship between your host PC and your device. After booting your Windows IoT Core device,
an IP address will be shown on the screen attached to the device. Next, launch an administrator PS
console on your local PC and type the following:
Set-Item WSMan:\localhost\Client\TrustedHosts -Value [IP Address]
Enter Y to confirm the change.
Note: [IP Address] should be replaced with the IP address shown on the display attached to
your device.
Now, you can start a session with you Windows IoT Core device. From you administrator PS console,
type:
enter-pssession –computername [IP Address] -credential Administrator
In the credential dialog enter the following default password: p@ssw0rd (We recommend that
the default password on the devices is changed as soon as possible.)
Note: [IP Address] should be replaced with the IP address shown on the display attached to your
device.
Commonly used utilities
Below is a list of common configuration tasks and corresponding utilities that have been made available
in PowerShell.

Update account password:
It is highly recommended that you update the default password for the Administrator account.
To do this, you can issue the following command: net user Administrator [new password]
where [new password] represents a strong password of your choice.

Create local user accounts:
If you wish to give others access to your Windows 10 IoT device, you can create additional local
user accounts using PS by typing in net user [username] [password] /add. If you wish to add
this user to other groups, such as the Administrator group, use net localgroup Administrators
[username] /add.
12

Query and set device name:
To identify your current device name, simply type hostname. To change the name of your
Windows 10 IoT device, type SetComputerName [new machinename]. You may need to
restart your device for the name change to take effect.

Basic network configuration:
Many of the basic network configuration utilities you may already be familiar with are available in
Windows 10 for IoT, including commands such as ping.exe netstat.exe, netsh.exe, ipconfig.exe,
nslookup.exe, tracert.exe and arp.exe.

Copy utilities:
Microsoft is providing familiar tools, including sfpcopy.exe as well as xcopy.exe.

Process Management:
To view currently running processes, you can try either get-process or alternatively tlist.exe. To
stop a running process, type kill.exe [pid or process name]. To start a process,

Setting startup app:
Use the startup editor to configure startup apps on your Windows 10 IoT device. To see a list of
current startup apps, type startup.exe /d. To add an app to startup, type startup.exe /a
[Name] [Command]. For further help, try startup.exe /?

Headless vs. headed boot:
Windows 10 IoT devices can be set to headed (when display capabilities are required) or
headless (when a display is not required or available) device mode. To change this setting, use
setbootoption.exe [headed | headless].

Task scheduler:
To view the current list of scheduled tasks, use the schtasks.exe command. You can create new
tasks with the /create switch or run on-demand tasks with the /run switch. For a full list of
supported parameters, use schtasks.exe /?

Device drivers:
The device console utility is useful in identifying and managing installed devices and drivers. For
a full list of parameters, use devcon.exe /?

Registry Access:
If you need to access the registry to view or modify settings, use the reg.exe /? Command for
the full list of supported parameters.

Services:
13
Managing Windows services can be accomplished via the net.exe command. To see a list of
running services, type net start. To start or stop a specific service, type net [start | stop]
[service name]. Alternatively, you can also use the service control manager via sc.exe
command.

Boot configuration:
You can make changes to the boot configuration of your Windows IoT Core device using
bcdedit.exe. For instance, you can enable testsigning with bcdedit –set testsigning on
command.

Shutdown/restart device:
To shut down your device, type shutdown /s /t 0. To restart the device, use the /r switch instead
with the command shutdown /r /t 0.
Securing your device with a TPM 2.0
Trusted Platform Modules (TPMs) bring enhanced security to the world of IoT. This widely adopted,
industry standard provides numerous security benefits, including a trusted execution environment,
strong cryptographic identity and the secure storage and management of keys and sensitive assets –
traits that are highly desirable in IoT-class devices.
In Windows IoT Core, Microsoft will support firmware TPM as well as discrete TPM2.0 implementations
over the currently supported LPC interface as well as SPI and I 2C buses for IoT devices. Additionally, in
order to facilitate development and provide a full set of tools to developers, Microsoft will make available
a TPM2.0 software simulator* that can be leveraged during the development cycle on devices that do not
have a firmware or discrete TPM implementation.
* Important Note: The TPM simulator is only a development aid. It provides absolutely
NO security functionality and should never be thought of or used as a replacement for a
firmware-based TPM or a discrete TPM solution.
14
Getting started with a discrete TPM module or TPMsimulator
You may wish to try out test modules currently available from select TPM manufacturers or enable the
TPM simulator in Windows 10 IoT Core Insider Preview. To do this, first, you’ll need to enable test
signing on your device. Initiate a remote PowerShell session to your Windows IoT Core device and once
logged-in, run the following command to enable test signing:
bcdedit –set testsigning on
Next, you’ll need to get the appropriate ACPITABL.DAT files for the corresponding TPM you wish to use.
1.
Download the complete set here and unzip.
2.
Copy the TPM’s corresponding DAT file onto your device under \Windows\System32:
TPM Manufacturer
Bus Type
NationZ
SPI
NationZ
I2C
Infineon
I2C
STMicro/Infineon/Nuvoton
SPI
TPM Simulator
N/A
Filename
3.
Rename above filename to ACPITABL.DAT and reboot device
4.
Your TPM is now initialized and ready for use.
Appendix
Detailed Topics
15
Shell Configuration Details
16
Background and Detail
As Windows IoT Core will be a custom, fixed purpose device rather than a consumer PC, the user
experience and user interface is expected to be defined and implemented by the OEM/device creator.
On an in-car entertainment unit for example there may be some buttons on the device as well as UI on
the screen allowing the user to do things like control the CD player, set FM stations, provide navigation
functionality, etc. but that user experience will have little resemblance to what we know of as the
consumer Windows experience.
Some devices in fact will have NO visible UI on a video monitor at all – a wireless access point is a great
example of that where the device provides ongoing functionality without user intervention and any user
interaction is remote through an HTML experience in the users browser. In both cases Windows IoT Core
has to provide the APIs and services to allow the OEM/device maker to create the user experience for
their device and to manage the applications and services for the device.
In Windows IoT Core scenarios OEMs may prefer to have no visible Windows or Microsoft presence. As
such, Windows IoT Core will not include the Windows shell or any inbox applications and OEMs will
create the entire end-to-end experience for their device using the tools and features provided for use
with all Windows 10 editions, including Windows IoT Core.
Device Lockdown
IoT Core shell will allow an OEM/Maker to take complete control of their device experience while
aligning with “lock-down” features on other versions of Windows. Here is a comparison of lock-down
features and how IoT Core aligns:
Feature
Explanation
IoT Core
Assigned
Restrict a user account to access a single app
IoT Core shell functionality is minimal for
Access/Restrict
(on PC/RT) or a set of apps (on Handheld).
OEMs/device makers;
Available Apps
Users cannot access additional system
functionality beyond the intended purpose
of the device, which may include switching to
End user experiences are implemented by the
OEM.
other apps, viewing the start screen,
receiving system notifications, etc…
Suppress System
Turns off Task manager, Lock screen, Camera,
Not needed for IoT Core since no system controls
Controls
Accessibility Options, Hides power buttons
are visible to users.
on the welcome screen
Dialog Filter
Controls which dialog boxes and windows
System dialogs are not present in IoT Core.
are displayed on the screen, and to
filtering capabilities provide a way to intercept
automatically handle dialog boxes by taking
certain notifications and route to OEM shell.
a default action, such as to close/show dialog
box, or always show dialogs from specific
processes
App Launcher
Starts a Windows Store app immediately
IoT Core shell will expose settings to enable this.
after a user signs in, helps configure the
behavior when the app exits – shutdown,
restart, restart the app. Different apps can be
launched for different users
Shell Launcher
Helps replace the default Windows shell with
IoT Core shell will expose settings to enable this.
a custom shell - any app or executable can
be used as custom shell. Different shell can
be launched for different users
Gesture Filter
Helps disable the edge and corner gestures.
Not needed since IoT Core shell does not expose
Gesture Filter enables you to block edge
edge and cornet gestures.
gestures (left, right, top extended swipe, and
each corner) individually.
Toast Notification
Prevents modern system toast notifications
Not needed since toast notifications are not part
Filter
from displaying
of Windows IoT Core shell. The OEM device/shell
design should handle it as appropriate.]
Keyboard Filter
Helps suppress undesirable key presses or
Not needed for Windows IoT Core
key combinations, such as Ctrl+Alt+Delete,
Ctrl+Shift+Tab. Works with Physical
keyboards, onscreen keyboard, touch
keyboard. Detects dynamic layout changes
USB Filter
Helps allow trusted USB devices to connect
Extended filtering capability is being evaluated for
to a system. USB Filter intercepts device
Windows IoT Core. For most scenarios the OEM
connect requests and only allows USB
code handles these scenarios directly and can be
devices with matching device product ID,
managed directly. In some limited cases filtering
device vendor ID, or device class ID
can further assist but it is a much smaller set than
on other Windows versions.
17
Unified Write Filter
Helps protect physical storage media,
Not Supported
including most standard writable storage
types such as physical hard disks, solid-state
drives, internal USB devices, external SATA
devices, etc. Provides capability to configure
exclusions – files, folders, registry etc.
The IoT shell infrastructure will determine if this is a headless installation and decide whether or not to
launch the compositor and then will launch a single (registry configurable by appid) APPX package. If
this package is a normal APPX package then there will be a single app experience that is always visible
and always has focus.
Although only one UWP foreground application can be used in a headed configuration, as many
background applications and services as resources will allow can get be configured to load and execute –
in either headed or headless modes.
Shell Configuration Service Provider (CSP)
Since the OEM UI is implemented as a UWP app, the shell needs to be configurable as to which app
should be loaded as the main local, onscreen UI. We provide a configuration service provider (CSP) to
configure the shell and OEM apps, including the list of applications to launch at start-up, the order to
execute them and any application configuration settings (reg keys) necessary. (Background tasks and
services launched by the shell are managed by the APPX manifests since multiple background tasks and
services are supported. Only in the case of the local, on-screen UI does the shell have to differentiate
between UWP apps as more than one could be available.
A configuration CSP is required to isolate the implementation specifics above from the actual
management and configuration process. To accomplish this a CSP will be implemented that can be used
to configure the above settings in a more user friendly way.
Notes:

The Shell Configuration Service Provider (CSP) is for Windows IoT Core only.

This CSP does not cover the install scenarios

The APPX must be preinstalled for this functionality to work.
Shell configuration commands
During development the shell can be configured quickly from a remote command line (PowerShell) with
IoTStartUp.exe.
Usage:
18
Shell Registry Reference
The following is provided for reference only. The preferred method of configuring the shell and start up
apps is with the provided CSP using either device management or ICD.

Hklm\system\currentcontrolset\control\wininit DWORD headless == 1

Hklm\software\microsoft\windows nt\currentversion\winlogon\iotshellextension


Hklm\software\microsoft\windows nt\currentversion\winlogon\iotshellextension\cbt


appid string value is the appid/aumid to launch.
String values under this are package family and entrypoint for cbts to activate
Hklm\software\microsoft\windows nt\currentversion\winlogon\iotshellextension DWORD
EnableRemoteCommandPrompt.

If this is set to 1 then we will launch a remote command prompt that is accessible over
the network in addition to the appx app and CBTs
For more information:
For more information including tutorials and code samples go to www.WindowsOnDevices.com.
19