IntuneDeep dive

Windows feature update and upgrade error codes (0xC1900101 and more): a quick reference

Look up a failed Windows feature update or upgrade: 0xC1900101 rollback extend codes, compatibility blocks, disk space and setup errors, with the usual cause and the first check.

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.log
  • 0xC1900101 - 0x20004: Safe OS phase failed installing the recovery environment (out-of-date drivers)SetupDiag results / setupact.log
  • 0xC1900101 - 0x2000C: unspecified error applying the image in the Safe OS phaseSetupDiag results / setupact.log
  • 0xC1900101 - 0x20017: Safe OS boot failure, a driver caused an illegal operationSetupDiag results / setupact.log
  • 0xC1900101 - 0x30017: a driver caused a problem during the first bootSetupDiag results / setupact.log
  • 0xC1900101 - 0x30018: a device driver stopped responding to setup.exeSetupDiag results / setupact.log
  • 0xC1900101 - 0x3000D: first boot failed during MIGRATE_DATA (display driver)SetupDiag results / setupact.log
  • 0xC1900101 - 0x4000D: second boot failed during MIGRATE_DATA, driver configuration rollbackSetupDiag results / setupact.log

+ 46 more codes in the tables below.

How this guide is organized: How to read these codes → 0xC1900101 rollback codes → 0x800xxxxx codes with extend codes → Setup engine and compatibility codes → Other upgrade codes → How to verify a fixFlow diagram of the article's sections in reading order: 1. How to read these codes. 2. 0xC1900101 rollback codes. 3. 0x800xxxxx codes with extend codes. 4. Setup engine and compatibility codes. 5. Other upgrade codes. 6. How to verify a fix. Toolbox: 0xC1900101, 0x80070070, 0x80070002, setupact.log, setuperr.log.1How to read these codes20xC1900101 rollback codes30x800xxxxx codes withextend codes4Setup engine and compatibilitycodes5Other upgrade codes6How to verify a fixTOOLBOX0xC19001010x800700700x80070002setupact.logsetuperr.logHow this guide is organized: How to read these codes → 0xC1900101 rollback codes → 0x800xxxxx codes with extend codes → Setup engine and compatibility codes → Other upgrade codes → How to verify a fixFlow diagram of the article's sections in reading order: 1. How to read these codes. 2. 0xC1900101 rollback codes. 3. 0x800xxxxx codes with extend codes. 4. Setup engine and compatibility codes. 5. Other upgrade codes. 6. How to verify a fix. Toolbox: 0xC1900101, 0x80070070, 0x80070002, setupact.log, setuperr.log.1How to read these codes20xC1900101 rollback codes30x800xxxxx codes with extend codes4Setup engine and compatibility codes5Other upgrade codes6How to verify a fixTOOLBOX0xC19001010x800700700x80070002setupact.logsetuperr.log
At a glance: how this guide is organized · 6 sections · 5 key settings and tools

How to read these codes#

How to read a failed feature update, from code to logStep 1: Find the result and extend codes. Update history, the Intune feature update report, or SetupDiag's results. Step 2: Read SetupDiag's last failure. When it lists several failures, the last one is typically the fatal one. Step 3: Decode the extend code. The first digit is the phase (1 downlevel to 5 uninstall); the last two are the operation. Step 4: Open setupact.log for that phase. $Windows.~BT\Sources\Panther (downlevel), \Rollback after a rollback, %windir%\Panther later. Step 5: Find the last result code, read upward. setupact.log is the most useful; setuperr.log lists errors only. Step 6: Retry and confirm the new version. A rollback with a different extend code means you fixed one blocker and met the next.1Find the result and extendcodesUpdate history, the Intune featureupdate report, or SetupDiag'sresults.2Read SetupDiag's last failureWhen it lists several failures, thelast one is typically the fatal one.3Decode the extend codeThe first digit is the phase (1downlevel to 5 uninstall); the lasttwo are the operation.4Open setupact.log for thatphase$Windows.~BT\Sources\Panther(downlevel), \Rollback after arollback, %windir%\Panther later.5Find the last result code,read upwardsetupact.log is the most useful;setuperr.log lists errors only.6Retry and confirm the newversionA rollback with a different extendcode means you fixed one blockerand met the next.How to read a failed feature update, from code to logStep 1: Find the result and extend codes. Update history, the Intune feature update report, or SetupDiag's results. Step 2: Read SetupDiag's last failure. When it lists several failures, the last one is typically the fatal one. Step 3: Decode the extend code. The first digit is the phase (1 downlevel to 5 uninstall); the last two are the operation. Step 4: Open setupact.log for that phase. $Windows.~BT\Sources\Panther (downlevel), \Rollback after a rollback, %windir%\Panther later. Step 5: Find the last result code, read upward. setupact.log is the most useful; setuperr.log lists errors only. Step 6: Retry and confirm the new version. A rollback with a different extend code means you fixed one blocker and met the next.1Find the result and extend codesUpdate history, the Intune feature update report, orSetupDiag's results.2Read SetupDiag's last failureWhen it lists several failures, the last one is typically thefatal one.3Decode the extend codeThe first digit is the phase (1 downlevel to 5 uninstall);the last two are the operation.4Open setupact.log for that phase$Windows.~BT\Sources\Panther (downlevel), \Rollbackafter a rollback, %windir%\Panther later.5Find the last result code, read upwardsetupact.log is the most useful; setuperr.log lists errorsonly.6Retry and confirm the new versionA rollback with a different extend code means you fixedone blocker and met the next.
Figure 1 · Process How to read a failed feature update, from code to log. Decode the result and extend codes first: they give the phase, and the phase tells you which setup log folder to open.

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.xml and under HKLM\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 digitPhase
1Downlevel (still running the old Windows)
2Safe OS
3First boot
4OOBE boot (the second boot)
5Uninstall

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.

PowerShell
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.log

0xC1900101 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.

CodeMeaningUsual causeFirst check
0xC1900101MOSETUP_E_SETUP_PLATFORM: generic rollbackAn incompatible driver causing blue screens, hangs or restartsSetupDiag results, then the extend code
0xC1900101 - 0x20004Safe OS phase, installing the recovery environmentOut-of-date driversRemove third-party antivirus and unused SATA devices; update drivers and BIOS
0xC1900101 - 0x2000CUnspecified error applying the image in Safe OSOutdated driver or disk corruptionchkdsk; update drivers; disconnect all but mouse, keyboard and display
0xC1900101 - 0x20017Safe OS boot failure: a driver caused an illegal operationDrivers or non-Microsoft disk encryption; occasionally hardwaresetuperr.log and setupact.log in %windir%\Panther for the driver
0xC1900101 - 0x30017A driver caused a problem at first bootThird-party antivirus or antispyware, outdated driversRemove the security software, disconnect peripherals, update drivers
0xC1900101 - 0x30018A device driver stopped responding to setup.exeA hanging driver during the sysprep operationRollback\setupapi\setupapi.dev.log for the last device installed
0xC1900101 - 0x3000DFirst boot failed during MIGRATE_DATADisplay driverUpdate or uninstall the display driver
0xC1900101 - 0x4000DSecond boot failed during MIGRATE_DATADriver configuration, incompatible driversRollback log and setupmem.dmp for the stop code; free space
0xC1900101 - 0x40017Failure after the second restartA faulty driver such as an antivirus filter or encryption driverClean boot, then retry
0xC1900101 - 0x4001ESecond boot failed during PRE_OOBEGeneric OOBE-phase errorThe 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.

CodeMeaningUsual causeFirst check
0x80040005 - 0x20007Unspecified driver error in Safe OSMore than one possible causeQuick fixes, then the logs
0x80070002, 0x80073BC3 or 0x80073B92 - 0x20009Partition analysis failed: system device not found, sharing violation or multiple matchesMore than one system partition, such as an old system drive still attachedDisconnect the extra drive (reconnect after) or delete the unused system partition
0x80070003 - 0x20007Driver installation failed in Safe OSA problem driverLogs for the driver
0x80070490 - 0x20007Incompatible device driver presentA problem driverLogs for the driver
0x8007025D - 0x2000CFailure while applying the imageCorrupt ISO metadata or a storage problem, such as RAM with bad blocksDownload the media again; test memory
0x800700B7 - 0x2000ASetup terminated by another processBackground software such as antivirusUninstall it and retry
0x800704B8 - 0x3001AExtended error during first bootThird-party antivirus or unnecessary devicesRemove the antivirus, disconnect devices, clean boot
0x8007001F - 0x3000DData migration failed in first bootUser profiles: corrupt ProfileList entries or invalid files in \UsersRemove stale entries under HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList; the logs name the profile
0x80070004 - 0x3000DData migration problem in first bootSeveral possible causesMIG entries in setupact.log
0x800707E7 - 0x3000DUser profile suffix mismatchA file or object blocking profile migrationSetupDiag result and the profile it names
0x8007042B - 0x4000DSecond boot MIGRATE_DATA failed; setup ended unexpectedlyFile system, app or driver issue, or a background processThe object in the logs; clean boot
0x8007001F - 0x4000DGeneral failure: an attached device isn't functioningFaulty deviceDisconnect, update or replace it
0x80070005 - 0x4000DAccess denied while migrating dataPermissions on a migrated itemThe denied data point in the logs
0x8007042B - 0x4001ESecond boot failed during PRE_OOBEMore than one possible causeQuick fixes, then the logs
0x80070004 - 0x50012Windows Setup failed to open a fileFile access problemThe file named in the logs
0x80070070 - 0x50011, 0x50012 or 0x60000ERROR_DISK_FULL: not enough free spaceLow disk spaceFree at least 20 GB on 64-bit Windows (16 GB on 32-bit)

Setup engine and compatibility codes (0xC19…)#

CodeMeaningUsual causeFirst check
0xC1900200MOSETUP_E_COMPAT_SYSREQ_BLOCK: minimum requirements not met (often - 0x20008)Hardware below requirements, such as a missing TPM 2.0Device Readiness Report (hardware readiness)
0xC1900201MOSETUP_E_COMPAT_SYSREQ_CANCEL: minimum requirements not passedAs aboveFirmware and hardware vendor updates
0xC1900202MOSETUP_E_COMPAT_DOWNLOADREQ_BLOCK: requirements to download not metAs aboveDevice Readiness Report
0xC1900204MOSETUP_E_COMPAT_MIGCHOICE_BLOCK: migration choice unavailableFor example Enterprise to HomeMedia edition matches the installed edition
0xC1900206MOSETUP_E_COMPAT_DEVICEREQ_BLOCK: fails the device scanA device or driver flagged as incompatibleSetupDiag; CONX compatibility lines in setupact.log
0xC1900208MOSETUP_E_COMPAT_INSTALLREQ_BLOCK: actionable compatibility issue (often - 0x4000C)An incompatible appUninstall the app named in the logs and retry
0xC1900209MOSETUP_E_COMPAT_INSTALLREQ_CANCEL: compatibility scan failedInstalled apps that can't be migratedUninstall the blocking app
0xC190020CMOSETUP_E_DOWNLOADDISKSPACE_BLOCK: no space to downloadLow disk spaceFree space
0xC190020EMOSETUP_E_INSTALLDISKSPACE_BLOCK: no space to installLow disk spaceFree space
0xC19001DFMOSETUP_E_DISK_FULL: out of disk spaceDisk filled during setupFree space
0xC1900210MOSETUP_E_COMPAT_SCANONLY: scan only, no compatibility issue foundsetup.exe ran a compatibility scan only; not a failureNothing to fix
0xC1900107MOSETUP_E_CLEANUP_PENDING: earlier attempt's cleanup pendingRestart neededRestart and retry; then Disk Cleanup of temporary and system files
0xC1900216MOSETUP_E_ROLLBACK_PENDING: pending OS rollback foundA previous rollback hasn't finishedRestart, then retry
0xC190011FMOSETUP_E_PROCESS_CRASHED: installation process crashedSetup itself failedSetupDiag; run it offline against the logs for crash analysis
0xC19001E2MOSETUP_E_PREINSTALL_SCRIPT_FAILEDA preinstall script failed or returned an errorCustom scripts you run during feature updates and their exit codes
0xC19001E3MOSETUP_E_PRECOMMIT_SCRIPT_FAILEDA precommit script failed or returned an errorAs above
0xC1900403MOSETUP_E_UA_CORRUPT_PAYLOAD_FILES: corrupt payloadDamaged downloadReset the Windows Update download cache and retry

Other upgrade codes#

CodeMeaningUsual causeFirst check
0xC1900223Problem downloading and installing the selected updateTransient; Windows Update retries laterNothing at first; if it repeats, connectivity to Windows Update
0xC1800118WSUS downloaded content it can't use (missing decryption key)The device scans WSUS, not Microsoft UpdateMicrosoft's WSUS steps for this code, or move the device off WSUS
0x800F0923A driver or other software isn't compatible with the upgradeIncompatible driver or appSetupDiag result; update or remove what it names
0x800F0922Couldn't connect to Windows Update servers, or System Reserved partition too fullA VPN in the path, or a small System Reserved partitionRetry off VPN; check that partition's free space
0x80300024Disk operation not supported by the target disk, partition or volumeThe target disk can't be used for installationMinimum requirements and the disk layout
0x80200056Upgrade interrupted by a restart or sign-outThe user restarted or signed outRetry with the device plugged in and left on
0x80090011Device driver error during user data migrationOutdated driversUpdated drivers from the hardware vendor
0x80070522Missing privilege or credentials to upgradeSetup run without administrator rightsRun it elevated as a local administrator
0x80244018Download failed through a proxy serverProxy configurationAutomatic proxy detection and the WinHTTP proxy
0x80190001Unexpected error downloading upgrade filesDownload failureRetry; fall back to fresh installation media
0x80240017Upgrade unavailable for this edition; policies may block itEdition or an update policy such as a target versionEdition 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#

  1. Retry the upgrade: Check for updates in Settings › Windows Update for policy-driven feature updates, or rerun setup from media.
  2. Confirm the new version: Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion' | Select-Object DisplayVersion, CurrentBuild.
  3. Run SetupDiag again if in doubt; its rules include one that decides from the logs whether the upgrade succeeded.
  4. 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#

Written and checked against current Microsoft Learn documentation. Test changes with a pilot group before rolling them out to everyone, and if an admin center path has moved since, search for the setting name instead.

Spotted a mistake, or did this fix work differently for you? Email me or message me on LinkedIn — corrections are credited in the article.

Written by

Omer Eltayeb

M365 Subject Matter Expert, former Microsoft Cloud Solutions Architect, Microsoft Certified Trainer and Microsoft Innovative Educator Expert (2024–26) and Microsoft Elevate Educator Expert (2026–27). I share practical, step-by-step guides, study plans, scripts and toolkits for Microsoft Intune, Configuration Manager, Microsoft Entra ID, Microsoft Defender, Exchange and Microsoft 365 with the community.

Microsoft Certified Trainer (MCT) 2026Microsoft Innovative Educator Expert 2025–2026Microsoft Elevate Educator Expert 2026–2027ISC2 Certified Information Systems Security Professional (CISSP)Microsoft 365 Certified: Enterprise Administrator Expert (MS-102)