Embedded mode

Embedded Mode is a Win32 service. In Windows it only starts if the user, an application, or another service starts it. When the Embedded Mode service is started, it's run as LocalSystem in a shared process of svchost.exe along with other services. Embedded Mode is supported on Windows IoT Enterprise.

Embedded Mode enables:

  • Background Applications
  • Use of the lowLevelDevice capability
  • Use of systemManagement capability

Enable Embedded Mode

To enable embedded mode, create a provisioning package in Imaging and Configuration Designer (ICD) that sets AllowEmbeddedMode=1. To install ICD, you need to download and install the Windows ADK for Windows 10.

  1. When installing the ADK select Imaging and Configuration Designer (ICD)

  2. After installation is complete, run Windows Imaging and Configuration Designer (WICD).

    WICD Icon

  3. Click Advanced provisioning. Name the project AllowEmbeddedMode and click Next.

    Step #3

  4. Choose common to All Windows editions then Next.

    Step #4

  5. Click Finish.

    Step #5

  6. In the search box type EmbeddedMode and then, click on AllowEmbeddedMode.

    Step #6

  7. In the center pane, set the value of AllowEmbeddedMode to Yes

    Step #7

  8. Click Export > Provisioning Package

    Step #8

  9. Click Next.

    Step #9

  10. Click Next.

    Step #10

  11. Click Next.

    Step #11

  12. Click Build.

    Step #12

  13. To install the embedded mode '.PPKG' on Windows IoT Enterprise, double-click on the '.PPKG'.

  14. Click Yes, add it.

    Click yes on the LUA dialog if it appears, and the click Yes, add it on the dialog shown below.

    Step #14 Standard

Background Applications

Background applications run without stopping and without resource limits. If the background application stops for some reason and embedded mode is enabled the system will restart the background application.

While the system will automatically restart background applications, system lockdown features must be enabled to prevent users from stopping or interfering with the operation of Background Applications.

For more information about running background applications, see Background tasks

lowLevel device Capability and lowLevelDevice capability

The lowLevel device Capability gives access to low-level hardware interfaces like GPIO, SPI, and I2C.

The lowLevelDevices Capability allows apps to access custom devices when additional requirements are met. This capability shouldn't be confused with the lowLevel device capability, which allows access to GPIO, I2C, SPI, and PWM devices.

Refer to App capability declarations for details.

systemManagement Capability

When you enable the systemManagement capabilities for your application, the following APIs will be unlocked:  

Debugging Background Applications

When you're debugging on a device and see either of the following error messages, you need to ensure AllowEmbeddedMode is enabled on the device and that the Embedded Mode service is running:

  • There are no more endpoints available from the endpoint mapper.
  • This program is blocked by group policy. For more information, contact your system administrator.