Windows Factory OS

Windows Factory OS is targeted at two use cases: factory floor and driver development.

  • For the factory floor, it can be configured to be very lightweight for fast booting and testing.
  • For development, you can add a variety of tools that let you develop and validate your drivers and test them right away.

Benefits

  • Easier to build tools that work across device types: Universal Windows apps and drivers are supported in Factory OS, allowing you to create and test apps and drivers that can be used on a variety of new devices.
  • Allows a wider variety of apps and drivers to help you test your devices: With a quick configuration change, you can run apps and drivers that don't meet the Universal Windows Platform standards.
  • Fast flashing and booting: Factory OS doesn't include many packages or tools by default. Your devices can boot fast and start working right away in your test environment or factory floor.
  • More reliable, especially while developing for pre-release versions of Windows: OEMs can develop and test in a stable environment that's independent of new OS features still under development. This can avoid costly problems due to retail features impeding manufacturing tests.

Features

Languages

Factory OS images can be built with language support for:

  • en-US
  • zh-CN
  • zh-TW

See Add languages to Factory OS to learn how to add languages.

Factory OS product configurations

Factory OS is available in several different configurations. These configurations use Factory OS as their base, and add additional functionality. You can configure a product configurations with the -productconfiguration option when you run prepwskworkspace to create a workspace:

Product Configuration Description
Manufacturing Base set of tools you need to run Factory OS
Development Enhanced set of tools that allows you to run Factory OS
win32_manufacturing/win32_development A version of Factory OS that can run diagnostic win32 apps in a container

Managing your device

Connect and configure your device

Once Factory OS is running, you can use Windows Device Portal to configure and manage the device.

Copying files for testing

When you copy files to a Storage Spaces-enabled Factory OS device, copy files to %DataDrive% or its subfolders.

Included feature manifests

When you use the Windows system kit to generate a workspace for the Factory OS product, you'll get an OEMInput.xml file that includes the following feature manifests:

  • WindowsCoreProductionFM.xml
  • FOSNonProductionFM.xml
  • WindowsCoreNonProductionFM.xml
  • GenericDeviceFM.xml

These feature manifests include information about package payloads that are added to an image, and also defines the features that can be enabled in an image. If you remove any of these included feature manifests from your OEMInput.xml file, your image won't be built with all the packages it needs.

Features added by Microsoft

When you use the Windows System Kit to create a Factory OS workspace, the following features are included in the generated OEMInput.xml file. You can add or remove features based on your device design. See available features to see all available options.

FeatureID Description
WCOS_EVENTLOG_SERVICE Enables the event log service. Factory OS devices don't include the Event Viewer, but you can use the DiagnosticLog CSP to generate and collect diagnostic information from a Factory OS device. See Channel-based tracing for more information.
WCOS_PNP_RUNTIMEDEVICEINSTALL Allows using pnputil to install INFs while the device is running and dev mode is enabled. Requires the STATESEPARATION_DEVMODE feature.
FONTSIZE_15 For console mode, sets the font to size 15. Recommended for VM and desktop HW images.
SERVICING_STACK Allows you to install new or updated OS or BSP Packages without having to re-flash the device, via offline servicing.
ALLOW_CONNECTEDSTANDBY Enables support for connected standby (Always on always connected, Modern standby).
MICROSOFT_EDGE Adds Microsoft Edge (UWP) to Factory OS.
DEVICEPORTAL_OPTIONAL_MONITORCONFIG Device portal monitor configuration feature
OEM_IMAGE Recommended for factory builds. Enables full kernel crash dumps, which are saved to C:\data\memory.dmp.
SHELL_BOOT Configures the image to boot to the Factory Composer app.
MANUFACTURING_TOOLS Adds a few test tools under %WINDIR%\System32\manufacturing\mfgtest.
STATESEPARATION_ON Enables State Separation. The MainOS files, SYSTEM hive, and SOFTWARE hive are read-only unless modified by a servicing operation or on an image mounted in mass storage mode.
WCOS_TESTSIGNING_ON Enables test signing
ENABLE_WOW Enables WOW for both AMD64 (x86 WOW) and Arm64 (Arm WOW) images, at the cost of a 160-170MB increase in FFU size/disk space.
WCOS_DEVICEPORTAL Enables device portal
WCOS_DEVICEPORTAL_WOW Enables device portal
WCOS_POWERSHELLCORE Enables PowerShell Core
FACTORY_ORCHESTRATOR_SERVICE Enables the Factory Orchestrator service
STORAGESPACES_LAYOUT Enables storage spaces on the device. A spaces enabled device layout must also be provided for the device to boot.
CAD_CHARGING Installs the Charging Arbitration Driver (CAD) stack. May be required for some BSPs.
UEFI_HARDWARE Added to UEFI-based physical devices.
UEFI_VM Added to UEFI-based virtual machines (Hyper-V Generation 2).

Available features

In addition to the features that are available for all Factory OS products, the following features are available for Factory OS. You can add these features in your image configuration (OEMInput) file.

Features available in all Factory OS images

The following features are available on all Factory OS images. You don't have to specify any additional FMs to add these features.

Bolded features are included in OEMInput.xml files that are generated by the Windows System Kit.

FeatureID Description
ALLOW_CONNECTEDSTANDBY Enables support for connected standby (Always on always connected, Modern standby).
ENABLE_WOW Enables WOW for both AMD64 (x86 WOW) and Arm64 (Arm WOW) images, at the cost of a 160-170MB increase in FFU size/disk space.
OEM_IMAGE Required for all OEM retail builds, recommended for factory builds. Enables full kernel crash dumps, which are saved to %DataDrive%\memory.dmp.
MANUFACTURING_POWER_SCHEME Changes the power scheme from a balanced to a high-performance scheme. This scheme is tuned for performance to increase factory throughput and reliability. Note: for either scheme, in Factory OS display timeouts are disabled.
TESTSIGNING_ON Allows for the deployment of test-signed content by including the Microsoft product and OEM test root certificates on the image, and turning on BCD test signing.
FACTORY_ORCHESTRATOR_SERVICE Enables the Factory Orchestrator service
State Separation - Choose one (required):
STATESEPARATION_ON Enables State Separation. The MainOS files, SYSTEM hive, and SOFTWARE hive are read-only unless modified by a servicing operation or on an image mounted in mass storage mode.
● STATESEPARATION_DEVMODE Monitors State Separation but does not enforce State Separation rules.
Debugging - Choose zero or one:
● KDNETUSB_ON Enables KDNET with EEM debugging. windbg.exe -k net:port=50000,key=1.2.3.4
● KDSERIAL_ON Enables the serial debugger on COM1. Primarily for VM debugging. windbg -k com:port=COM1,baud=115200
● KDUSB_ON Enables KDUSB debugging. windbg.exe -k USB2:targetname=WOATARGET
Boot environment - Choose one (required):
● CONSOLE_BOOT Configures the image to boot to console mode. UWP apps can't run with this option enabled.
● POWERSHELL_BOOT Configures the image to boot to a PowerShell Core environment. UWP Apps can't run with this option enabled.
SHELL_BOOT Configures the image to boot to the Factory Composer app.
Font size - Choose zero or one: For console mode, if none of the below options are chosed, the default font size is 20.
FONTSIZE_15 For console mode, sets the font to size 15. Recommended for VM and desktop HW images.
● FONTSIZE_30 For console mode, sets the font to size 30. Recommended for small form factor images.
Device/Firmware - Choose one (required):
UEFI_HARDWARE Use for UEFI-based physical devices.
UEFI_VM Use for UEFI-based virtual machines (Hyper-V Generation 2).
CAD_CHARGING Installs the Charging Arbitration Driver (CAD) stack. May be required for some BSPs.
SERVICING_STACK allows you to install new or updated OS or BSP Packages without having to re-flash the device, via offline servicing.
DEVICEPORTAL_OPTIONAL_MONITORCONFIG Device portal monitor configuration feature
MANUFACTURING_TOOLS Adds a few test tools under %WINDIR%\System32\manufacturing\mfgtest.
MICROSOFT_EDGE Adds Microsoft Edge (UWP) to Factory OS.
FACTORY_ORCHESTRATOR_SERVICE_IN_TESTCONTENT Allows you to use your own build of Factory Orchestrator, run from %DataDrive%\TestContent\Container\FactoryOrchestrator. The Factory Orchestrator service binaries must be in the <TestContent> directory set in your OEMInput in the Container\FactoryOrchestrator subdirectory.
SETTINGS_APP Adds the settings app to the image. Only basic hardware functionality is supported.
WCOS_APP_CENTENNIALRUNTIME Packaged Win32 app support.
MANUFACTURING_MODE_EMPTY_PROFILE Allows drivers and apps to use the ExIsManufacturingModeEnabled() and GetOsManufacturingMode() APIs for forked behavior when running on Factory OS, as both will return true when this feature is included..

GenericDeviceFM.xml

GenericDeviceFM contains features that enable booting support regardless of target hardware.

Feature Description
UEFI_HARDWARE Use for UEFI-based physical devices.
UEFI_VM Use for UEFI-based virtual machines (Hyper-V Generation 2).
STORAGESPACES_LAYOUT Enables storage spaces on the device. A spaces enabled device layout must also be provided for the device to boot.

WindowsCoreNonProduction.xml

The following features are intended for development and test usage only.

FeatureID Description Included by default
WCOS_TEST_COMPONENTS Installs the components needed to support tests Yes
Choose zero or one:
OFFLINE_CRASH_DUMP_SUPPORTED No
DISABLE_SCREEN_TIMEOUT Disables the screen timeout No
DEBUGGER_IGNORE_UM_EXCEPTIONS Tells the debugger to ignore usermode exceptions No
Choose zero or one:
WCOS_TEST_GPIOACCESS Enables test signing for GPIO No
WCOS_TESTSIGNING_ON Enables test signing. Yes
WCOS_WDTF_COMPONENTS Provides the platform that enables running Windows Test Framework Tests. Requires the <TESTSIGNING_ON> features to also be included in an image. No
WCOS_POWERSHELL Enables PowerShell Yes, on Factory OS
WCOS_PNP_RUNTIMEDEVICEINSTALL Allows using pnputil to install INFs while the device is running and dev mode is enabled. Requires the STATESEPARATION_DEVMODE feature. Yes, on Factory OS
WCOS_OPENSSH_AUTOSTART Automatically starts the SSH server on the Factory OS device. No

WindowsCoreProductionFM.xml

FeatureID Description Included by default
WCOS_ACCESSIBLITY_NARRATOR The Narrator accessibility feature No
WCOS_DEVICEPORTAL Enables device portal Yes
WCOS_DEVICEPORTAL_WOW Enables device portal Yes
WCOS_DISPLAY_ENHANCEMENT_SERVICE The display enhancement service No
WCOS_DISPLAY_MULTIPLEINTEGRATED_ENABLE Enables support for multiple integrated displays No
WCOS_DRIVERS_USB_ETHERNET Common USB ethernet drivers No
WCOS_EVENTLOG_SERVICE Enables the event log service. Factory OS devices don't include the Event Viewer, but you can use the DiagnosticLog CSP to generate and collect diagnostic information from a Factory OS device. See Channel-based tracing for more information. Yes
WCOS_MDM_PROVISIONING Cellular and enterprise provisioning No
WCOS_CONTAINERS Container support. Needed for Win32 container.
WCOS_APP_WIN32SUPPORT_ARGON Container support. Needed for Win32 container.
WCOS_NET_PROXIMITY_SERVICE Proximity Service, needed for NFC support.
Choose zero or one:
WCOS_HYPERV_GUEST_UEFI Hyper-V features needed for UEFI Factory OS virtual machines No
WCOS_TIMESYNC_MOBILE Mobile operator-aware automatic time management No
WCOS_TIMESYNC_NETWORK NTP automatic time management No
WCOS_TIMESYNC_NETWORK_WOW NTP automatic time management for WOW No
WCOS_NET_CELLULAR_DATA Enables cellular data. Requires the WCOS_NET_RADIO_MANAGEMENT and WCOS_MDM_PROVISIONING features also be included in the image. No
WCOS_NET_RADIO_MANAGEMENT Radio management platform No
WCOS_SPEECH_VOICE_AGENT_SUPPORT Enables support of multi voice agents (MVAs), including Cortana. No

Next steps:

Prepare a workspace