A feature update that fails on an Intune-managed PC usually rolls back quietly and leaves one code behind, often 0xC1900101 with an extend code such as 0x4000D. This reference lists the upgrade codes Microsoft documents (rollback extend codes, compatibility and disk space blocks, setup engine errors) with the meaning, the usual cause and the first check. Quality update and servicing codes are in the Windows Update error code reference.
Codes in this quick reference
0xC1900101 MOSETUP_E_SETUP_PLATFORM: generic rollback, usually an incompatible driverSettings > Windows Update / setupact.log0xC1900101 - 0x20004: Safe OS phase failed installing the recovery environment (out-of-date drivers)SetupDiag results / setupact.log0xC1900101 - 0x2000C: unspecified error applying the image in the Safe OS phaseSetupDiag results / setupact.log0xC1900101 - 0x20017: Safe OS boot failure, a driver caused an illegal operationSetupDiag results / setupact.log0xC1900101 - 0x30017: a driver caused a problem during the first bootSetupDiag results / setupact.log0xC1900101 - 0x30018: a device driver stopped responding to setup.exeSetupDiag results / setupact.log0xC1900101 - 0x3000D: first boot failed during MIGRATE_DATA (display driver)SetupDiag results / setupact.log0xC1900101 - 0x4000D: second boot failed during MIGRATE_DATA, driver configuration rollbackSetupDiag results / setupact.log
+ 46 more codes in the tables below.
How to read these codes#
Where to find the code:
- On the device. Settings › Windows Update › Update history shows the failed feature update and its code. During a rollback the user sees Restoring your previous version of Windows.
- In Intune. The Windows feature update report under Reports › Windows updates shows each device's Update State, Update Substate, aggregated status and latest Alert Type; the Windows Feature Update Device Readiness Report flags hardware that can't upgrade. Devices that never get offered the update are a different problem (feature update not offered).
- SetupDiag. SetupDiag ships with Windows Setup and runs automatically after a failed upgrade. Its analysis lands in
%WinDir%\Logs\SetupDiag\SetupDiagResults.xmland underHKLM\SYSTEM\Setup\SetupDiag\Results. When it lists several failures, the last one is typically the fatal one.
Windows Setup returns a result code and an extend code, written as 0xC1900101 - 0x4000D; some tools capture only the result code. A result code starting with 8 is a Win32 error and one starting with C is an NTSTATUS value; the last four digits identify it (0x80070070 is ERROR_DISK_FULL). In the extend code, the first digit is the phase and the last two digits are the operation:
| First digit | Phase |
|---|---|
| 1 | Downlevel (still running the old Windows) |
| 2 | Safe OS |
| 3 | First boot |
| 4 | OOBE boot (the second boot) |
| 5 | Uninstall |
Operation digits you will meet most: 04 install recovery environment, 07 install drivers, 0C apply image, 0D migrate data, 17 boot, 18 sysprep and 1E pre-OOBE. So 0x4000D is a data migration failure during the second boot.
The setup logs are hidden. setupact.log is the most useful and setuperr.log lists errors only: look in $Windows.~BT\Sources\Panther for downlevel failures, $Windows.~BT\Sources\Rollback after a rollback (with setupmem.dmp and setupapi\setupapi.dev.log), and %windir%\Panther or %windir%\Panther\NewOS for later phases (Windows upgrade log files). Find the last occurrence of the result code and read upward.
Get-ItemProperty 'HKLM:\SYSTEM\Setup\SetupDiag\Results' -ErrorAction SilentlyContinue
Select-String -Path 'C:\$Windows.~BT\Sources\Panther\setupact.log' -SimpleMatch `
-Pattern 'Shell application requested abort', 'Abandoning apply due to error for object' |
Select-Object -Last 5
# Manual run from an elevated prompt (needs .NET Framework 4.7.2 or later)
.\SetupDiag.exe /Output:C:\SetupDiag\Results.log0xC1900101 rollback codes#
0xC1900101 is a generic rollback code that can appear in any phase except downlevel. It usually means an incompatible driver, so the standard first moves are current drivers and firmware, unplugged peripherals, no third-party security software during the upgrade, and enough free space.
| Code | Meaning | Usual cause | First check |
|---|---|---|---|
0xC1900101 | MOSETUP_E_SETUP_PLATFORM: generic rollback | An incompatible driver causing blue screens, hangs or restarts | SetupDiag results, then the extend code |
0xC1900101 - 0x20004 | Safe OS phase, installing the recovery environment | Out-of-date drivers | Remove third-party antivirus and unused SATA devices; update drivers and BIOS |
0xC1900101 - 0x2000C | Unspecified error applying the image in Safe OS | Outdated driver or disk corruption | chkdsk; update drivers; disconnect all but mouse, keyboard and display |
0xC1900101 - 0x20017 | Safe OS boot failure: a driver caused an illegal operation | Drivers or non-Microsoft disk encryption; occasionally hardware | setuperr.log and setupact.log in %windir%\Panther for the driver |
0xC1900101 - 0x30017 | A driver caused a problem at first boot | Third-party antivirus or antispyware, outdated drivers | Remove the security software, disconnect peripherals, update drivers |
0xC1900101 - 0x30018 | A device driver stopped responding to setup.exe | A hanging driver during the sysprep operation | Rollback\setupapi\setupapi.dev.log for the last device installed |
0xC1900101 - 0x3000D | First boot failed during MIGRATE_DATA | Display driver | Update or uninstall the display driver |
0xC1900101 - 0x4000D | Second boot failed during MIGRATE_DATA | Driver configuration, incompatible drivers | Rollback log and setupmem.dmp for the stop code; free space |
0xC1900101 - 0x40017 | Failure after the second restart | A faulty driver such as an antivirus filter or encryption driver | Clean boot, then retry |
0xC1900101 - 0x4001E | Second boot failed during PRE_OOBE | Generic OOBE-phase error | The general steps above, then SetupDiag |
0x800xxxxx codes with extend codes#
These are general Windows errors (timeouts, failing devices, processes ending unexpectedly) raised during setup; the extend code tells you where.
| Code | Meaning | Usual cause | First check |
|---|---|---|---|
0x80040005 - 0x20007 | Unspecified driver error in Safe OS | More than one possible cause | Quick fixes, then the logs |
0x80070002, 0x80073BC3 or 0x80073B92 - 0x20009 | Partition analysis failed: system device not found, sharing violation or multiple matches | More than one system partition, such as an old system drive still attached | Disconnect the extra drive (reconnect after) or delete the unused system partition |
0x80070003 - 0x20007 | Driver installation failed in Safe OS | A problem driver | Logs for the driver |
0x80070490 - 0x20007 | Incompatible device driver present | A problem driver | Logs for the driver |
0x8007025D - 0x2000C | Failure while applying the image | Corrupt ISO metadata or a storage problem, such as RAM with bad blocks | Download the media again; test memory |
0x800700B7 - 0x2000A | Setup terminated by another process | Background software such as antivirus | Uninstall it and retry |
0x800704B8 - 0x3001A | Extended error during first boot | Third-party antivirus or unnecessary devices | Remove the antivirus, disconnect devices, clean boot |
0x8007001F - 0x3000D | Data migration failed in first boot | User profiles: corrupt ProfileList entries or invalid files in \Users | Remove stale entries under HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList; the logs name the profile |
0x80070004 - 0x3000D | Data migration problem in first boot | Several possible causes | MIG entries in setupact.log |
0x800707E7 - 0x3000D | User profile suffix mismatch | A file or object blocking profile migration | SetupDiag result and the profile it names |
0x8007042B - 0x4000D | Second boot MIGRATE_DATA failed; setup ended unexpectedly | File system, app or driver issue, or a background process | The object in the logs; clean boot |
0x8007001F - 0x4000D | General failure: an attached device isn't functioning | Faulty device | Disconnect, update or replace it |
0x80070005 - 0x4000D | Access denied while migrating data | Permissions on a migrated item | The denied data point in the logs |
0x8007042B - 0x4001E | Second boot failed during PRE_OOBE | More than one possible cause | Quick fixes, then the logs |
0x80070004 - 0x50012 | Windows Setup failed to open a file | File access problem | The file named in the logs |
0x80070070 - 0x50011, 0x50012 or 0x60000 | ERROR_DISK_FULL: not enough free space | Low disk space | Free at least 20 GB on 64-bit Windows (16 GB on 32-bit) |
Setup engine and compatibility codes (0xC19…)#
| Code | Meaning | Usual cause | First check |
|---|---|---|---|
0xC1900200 | MOSETUP_E_COMPAT_SYSREQ_BLOCK: minimum requirements not met (often - 0x20008) | Hardware below requirements, such as a missing TPM 2.0 | Device Readiness Report (hardware readiness) |
0xC1900201 | MOSETUP_E_COMPAT_SYSREQ_CANCEL: minimum requirements not passed | As above | Firmware and hardware vendor updates |
0xC1900202 | MOSETUP_E_COMPAT_DOWNLOADREQ_BLOCK: requirements to download not met | As above | Device Readiness Report |
0xC1900204 | MOSETUP_E_COMPAT_MIGCHOICE_BLOCK: migration choice unavailable | For example Enterprise to Home | Media edition matches the installed edition |
0xC1900206 | MOSETUP_E_COMPAT_DEVICEREQ_BLOCK: fails the device scan | A device or driver flagged as incompatible | SetupDiag; CONX compatibility lines in setupact.log |
0xC1900208 | MOSETUP_E_COMPAT_INSTALLREQ_BLOCK: actionable compatibility issue (often - 0x4000C) | An incompatible app | Uninstall the app named in the logs and retry |
0xC1900209 | MOSETUP_E_COMPAT_INSTALLREQ_CANCEL: compatibility scan failed | Installed apps that can't be migrated | Uninstall the blocking app |
0xC190020C | MOSETUP_E_DOWNLOADDISKSPACE_BLOCK: no space to download | Low disk space | Free space |
0xC190020E | MOSETUP_E_INSTALLDISKSPACE_BLOCK: no space to install | Low disk space | Free space |
0xC19001DF | MOSETUP_E_DISK_FULL: out of disk space | Disk filled during setup | Free space |
0xC1900210 | MOSETUP_E_COMPAT_SCANONLY: scan only, no compatibility issue found | setup.exe ran a compatibility scan only; not a failure | Nothing to fix |
0xC1900107 | MOSETUP_E_CLEANUP_PENDING: earlier attempt's cleanup pending | Restart needed | Restart and retry; then Disk Cleanup of temporary and system files |
0xC1900216 | MOSETUP_E_ROLLBACK_PENDING: pending OS rollback found | A previous rollback hasn't finished | Restart, then retry |
0xC190011F | MOSETUP_E_PROCESS_CRASHED: installation process crashed | Setup itself failed | SetupDiag; run it offline against the logs for crash analysis |
0xC19001E2 | MOSETUP_E_PREINSTALL_SCRIPT_FAILED | A preinstall script failed or returned an error | Custom scripts you run during feature updates and their exit codes |
0xC19001E3 | MOSETUP_E_PRECOMMIT_SCRIPT_FAILED | A precommit script failed or returned an error | As above |
0xC1900403 | MOSETUP_E_UA_CORRUPT_PAYLOAD_FILES: corrupt payload | Damaged download | Reset the Windows Update download cache and retry |
Other upgrade codes#
| Code | Meaning | Usual cause | First check |
|---|---|---|---|
0xC1900223 | Problem downloading and installing the selected update | Transient; Windows Update retries later | Nothing at first; if it repeats, connectivity to Windows Update |
0xC1800118 | WSUS downloaded content it can't use (missing decryption key) | The device scans WSUS, not Microsoft Update | Microsoft's WSUS steps for this code, or move the device off WSUS |
0x800F0923 | A driver or other software isn't compatible with the upgrade | Incompatible driver or app | SetupDiag result; update or remove what it names |
0x800F0922 | Couldn't connect to Windows Update servers, or System Reserved partition too full | A VPN in the path, or a small System Reserved partition | Retry off VPN; check that partition's free space |
0x80300024 | Disk operation not supported by the target disk, partition or volume | The target disk can't be used for installation | Minimum requirements and the disk layout |
0x80200056 | Upgrade interrupted by a restart or sign-out | The user restarted or signed out | Retry with the device plugged in and left on |
0x80090011 | Device driver error during user data migration | Outdated drivers | Updated drivers from the hardware vendor |
0x80070522 | Missing privilege or credentials to upgrade | Setup run without administrator rights | Run it elevated as a local administrator |
0x80244018 | Download failed through a proxy server | Proxy configuration | Automatic proxy detection and the WinHTTP proxy |
0x80190001 | Unexpected error downloading upgrade files | Download failure | Retry; fall back to fresh installation media |
0x80240017 | Upgrade unavailable for this edition; policies may block it | Edition or an update policy such as a target version | Edition and update policies (checklist) |
Tip: Upgrading with Configuration Manager instead? The same codes apply; see upgrading to Windows 11 with Configuration Manager.
How to verify a fix#
- Retry the upgrade: Check for updates in Settings › Windows Update for policy-driven feature updates, or rerun setup from media.
- Confirm the new version:
Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion' | Select-Object DisplayVersion, CurrentBuild. - Run SetupDiag again if in doubt; its rules include one that decides from the logs whether the upgrade succeeded.
- In Intune, the device's aggregated status in the feature update report leaves Error after the next data refresh.
If it rolls back again with a different extend code, you fixed one blocker and met the next; work through the logs again.
References#
- Windows upgrade resolution procedures (Microsoft Learn): extend codes, causes, mitigations and the mosetup list
- Windows upgrade error codes (Microsoft Learn): result codes, phases and operations
- SetupDiag (Microsoft Learn): automatic analysis and parameters
- Get help with Windows upgrade and installation errors (Microsoft Support): 0x800F0922, 0x800F0923 and other common codes

