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
- Certified Store applications and Universal Windows drivers
- Apps:
- .NET Core apps with self-contained deployments
- Native apps targeting Windows "umbrella" libraries
- Native Win32 apps inside a container with full hardware access
- SSH
- Powershell Core
- Factory Orchestrator to enable you to run manufacturing tests and tasks for hardware validation and diagnostics during the OEM manufacturing process.
- TAEF support
- Boot to a minimal UWP shell, a UWP, app or a command-line interface.
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 |