Troubleshooting Windows upgrades
Why a device isn't moving to the approved Windows version, what Windows' error codes mean and how to fix them.
Updated
Start in Patching → Windows versions. Every device that isn't on the approved version has a status and a reason; expand it for readiness and the last attempt, with each method's result.
Statuses
| Status | Meaning | What to do |
|---|---|---|
| Behind | Waiting for its maintenance window or its ring's delay | Nothing, or Upgrade Windows now |
| In progress | Upgrading, or installed and awaiting restart and verification | Restart the device if restarts are off |
| Blocked | Something stops it: hardware, disk space, a safeguard hold, upgrades switched off on the device | See below |
| Failed | An attempt failed; the reason is shown | See the error codes |
Common blocks
- Hardware doesn't meet Windows 11's requirements (TPM 2.0, Secure Boot, processor). On devices already on Windows 11 24H2, see Upgrades on unsupported hardware.
- Not enough free disk space for a full upgrade. Free at least 25 GB on the system drive.
- Microsoft safeguard hold. Microsoft holds the upgrade back for a known problem on that hardware or software. Its ID is shown while it's active (lifted holds are marked lifted). Wait for it to lift, or try on a test device that overrides safeguard holds (Test devices).
- Switched off on this device (
feature_upgrade = false) or patching off locally. See Local controls. - Held on its current version in the device's Settings → Windows version.
- Agent too old. Upgrades need agent 0.6.0.
Error codes
| Code | Means | Do this |
|---|---|---|
0xC1900101 (with 0x2…, 0x3…, 0x4…) | A driver stopped the upgrade, which rolled back | Update storage, display, network and chipset drivers; disconnect docks and USB devices; remove third-party antivirus or disk encryption during the upgrade. SetupDiag's diagnosis names the driver when it can |
0xC1900208 | An incompatible app blocks it | Uninstall or update the app (often an old antivirus or VPN client) |
0xC1900200, 0xC1900202 | The hardware doesn't meet the requirements | Replace the hardware, or turn on TPM / Secure Boot in the firmware |
0x80070070, 0xC190020E | Not enough disk space | Free at least 25 GB on the system drive |
0xC1900107 | A clean-up from an earlier upgrade is pending | Restart the device and retry |
0x800F0922 | The system reserved partition is full, or .NET or a VPN blocked it | Free space on the reserved partition; disconnect VPN software |
| Safeguard hold | Microsoft holds the upgrade back for a known problem | Wait (it lifts by itself), or test on a device that overrides safeguards |
"Didn't complete"
A device that reports it restarted but still runs the old version is marked failed ("didn't complete"): Windows rolled back without saying so. Check the error codes above with the device's setup logs, fix the cause and retry.
Retries
A failed upgrade is retried in later windows up to the policy's retry limit, then waits for you: Upgrade Windows now on the device, or Retry failed on the deployment.
Turn on Windows upgrade failed in Settings → Notifications to be told each time, with the reason. The
patching.feature_upgrade_failed webhook fires too.
Download methods are skipped
Without a verified download from Revo for that version and processor type, only Windows Update is used. Windows setup media isn't offered yet, so Windows 10 and Windows 11 23H2 devices upgrade only when Windows Update offers the new version to them.