When a Configuration Manager client fails to scan for or install software updates, the console and the logs give you a number, not a reason. This quick reference lists the Windows Update Agent, network and servicing codes that software update deployments report most often, with the official meaning, the usual cause in a Configuration Manager environment and the first thing to check.
Codes in this quick reference
0x80072EE2 WININET_E_TIMEOUT: operation timed out reaching the update sourceWUAHandler.log / WindowsUpdate.log0x80072EFD Connection with the update server couldn't be establishedWUAHandler.log / WindowsUpdate.log0x80072EFE WININET_E_CONNECTION_ABORTED: connection closed abnormallyWUAHandler.log / WindowsUpdate.log0x80072F0C Certificate required to complete client authentication (SSL SUP)WUAHandler.log / WindowsUpdate.log0x80072F8F WININET_E_DECODING_FAILED: TLS not configured correctly on the clientWUAHandler.log / WindowsUpdate.log0x8024401B HTTP 407: proxy authentication requiredWUAHandler.log / WindowsUpdate.log0x80244021 HTTP 502: bad gateway (proxy in the path)WUAHandler.log / WindowsUpdate.log0x80240030 Invalid proxy list format (WinHTTP)WUAHandler.log / WindowsUpdate.log
+ 47 more codes in the tables below.
How to read these codes#
- Console: in Monitoring › Deployments, select the software update deployment and View Status; the Error tab groups devices by error code. Software Center shows the code on a failed update.
- WUAHandler.log (in
C:\Windows\CCM\Logs) records scan and install results. It only passes on what the Windows Update Agent reported, so the detail is inWindowsUpdate.log, which you generate withGet-WindowsUpdateLog. - UpdatesDeployment.log and UpdatesHandler.log track deployment evaluation, downloads and installs;
CAS.log,ContentTransferManager.logandDataTransferService.logshow content downloads. - CBS.log holds the detail for servicing stack errors such as
0x800F081F.
The prefix tells you the layer: 0x8024xxxx comes from the Windows Update Agent, 0x80072xxx from the network stack, 0x800Fxxxx and most 0x8007xxxx codes in CBS.log from servicing, and 0x800Bxxxx from certificate trust checks. Configuration Manager's own 0x87D0xxxx codes aren't covered here; use the Error Lookup tool in CMTrace (Tools menu). Some reports show negative decimals, which PowerShell converts:
'0x{0:X8}' -f -2145107934 # returns 0x80244022Feature update failures such as 0xC1900101 are in the feature update and upgrade error codes quick reference; for Intune-managed devices, see the Windows Update error codes for Intune admins.
Scan: reaching the software update point#
These codes appear in WUAHandler.log as a failed scan. Start by testing, from the client, the WSUS URLs that Microsoft's scan troubleshooting uses, with your SUP's name and WSUS port (80/443 or 8530/8531):
$sup = 'http://sup01.contoso.com:8530'
Invoke-WebRequest "$sup/Selfupdate/wuident.cab" -UseBasicParsing | Select-Object StatusCode
Invoke-WebRequest "$sup/ClientWebService/wusserverversion.xml" -UseBasicParsing | Select-Object StatusCode
Test-NetConnection -ComputerName sup01.contoso.com -Port 8530
netsh winhttp show proxyNetwork and proxy#
| Code | Meaning | Usual cause | First check |
|---|---|---|---|
0x80072EE2 | WININET_E_TIMEOUT: the operation timed out | The client can't reach the SUP: firewall, wrong port, DNS, or the SUP is down | Test the WSUS URLs above and the port with Test-NetConnection |
0x80072EFD | WinINet: a connection with the server couldn't be established (Microsoft lists it with the time-out errors) | A firewall rule or proxy blocking the SUP | Test-NetConnection to the SUP port; proxy settings |
0x80072EFE | WININET_E_CONNECTION_ABORTED: the connection was closed abnormally | A proxy, firewall or inspection device cutting the session, or a BITS problem | bitsadmin /list /allusers /verbose for the failing URL |
0x80072F0C | A certificate is required to complete client authentication | HTTPS SUP whose WSUS website or virtual directories accept or require client certificates | Set client certificates to Ignore on the WSUS site and virtual directories in IIS |
0x80072F8F | WININET_E_DECODING_FAILED: content decoding failed | TLS isn't configured correctly on the client | Client TLS 1.2 settings and the SUP certificate |
0x8024401B | WU_E_PT_HTTP_STATUS_PROXY_AUTH_REQ: HTTP 407, proxy authentication required | Scans run as SYSTEM through WinHTTP and the proxy wants user credentials | netsh winhttp show proxy; bypass the proxy for the SUP FQDN |
0x80244021 | WU_E_PT_HTTP_STATUS_BAD_GATEWAY: HTTP 502, bad gateway | A proxy between the client and the SUP | Add the SUP to the proxy bypass list |
0x80240030 | WU_E_INVALID_PROXY_SERVER: the proxy list format is invalid | A malformed WinHTTP proxy setting | netsh winhttp show proxy, then reset or reimport it |
0x8024402C | WU_E_PT_WINHTTP_NAME_NOT_RESOLVED: proxy or server name can't be resolved | DNS for the SUP FQDN, or a proxy name that doesn't resolve | Resolve-DnsName for the SUP and proxy names |
HTTP status returned by WSUS or a proxy#
| Code | Meaning | Usual cause | First check |
|---|---|---|---|
0x80244017 | WU_E_PT_HTTP_STATUS_DENIED: HTTP 401, authentication required | Authentication changed on the WSUS virtual directories, or a proxy in the path | IIS log on the SUP for the client's requests |
0x80244018 | WU_E_PT_HTTP_STATUS_FORBIDDEN: HTTP 403, request declined | IIS restrictions or a proxy blocking the client | IIS log on the SUP; proxy logs |
0x80244019 | WU_E_PT_HTTP_STATUS_NOT_FOUND: HTTP 404 | Wrong port, or a damaged WSUS website | The Selfupdate and ClientWebService URLs above |
0x8024401C | WU_E_PT_HTTP_STATUS_REQUEST_TIMEOUT: HTTP 408 | An overloaded SUP or a slow link | WsusPool state and IIS log; run the scan again |
0x8024401F | WU_E_PT_HTTP_STATUS_SERVER_ERROR: HTTP 500 | An error inside WSUS: database, application pool or metadata | Application event log and IIS log on the SUP |
0x80244022 | WU_E_PT_HTTP_STATUS_SERVICE_UNAVAIL: HTTP 503, service temporarily overloaded | The WsusPool application pool has stopped, often at its memory limit | Start WsusPool in IIS and review its private memory limit |
0x80244023 | WU_E_PT_HTTP_STATUS_GATEWAY_TIMEOUT: timed out waiting for a gateway | A proxy or gateway in the path | Bypass the proxy for the SUP |
WSUS protocol and policy#
| Code | Meaning | Usual cause | First check |
|---|---|---|---|
0x80244007 | WU_E_PT_SOAPCLIENT_SOAPFAULT: SOAP fault | Windows can't renew its Windows Update cookies with WSUS | Microsoft's article on 0x80244007 during WSUS scans; WSUS health |
0x80244010 | WU_E_PT_EXCEEDED_MAX_SERVER_TRIPS: too many round trips to the server | A very large catalog with many superseded or unneeded updates in WSUS | WSUS cleanup and declining superseded updates; run another scan |
0x80244011 | WU_E_PT_SUS_SERVER_NOT_SET: WUServer policy value missing | Configuration Manager's local policy wasn't applied or was removed | WUServer under HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate; machine policy |
0x8024402F | WU_E_PT_ECP_SUCCEEDED_WITH_ERRORS: external cab processing completed with errors | Web filtering software altering update downloads | Exempt the clients or update traffic from filtering |
Group policy settings were overwritten by a higher authority (Domain Controller) | A domain GPO overrides the WSUS server and port that Configuration Manager set | An old WSUS GPO still linked to the device | gpresult /h; make the GPO match the SUP name and port, or remove it |
Client components#
For damaged Windows Update components, Microsoft's reset is to stop the service, rename the data store and scan again:
net stop wuauserv
ren C:\Windows\SoftwareDistribution SoftwareDistribution.old
net start wuauserv| Code | Meaning | Usual cause | First check |
|---|---|---|---|
0x80070422 | ERROR_SERVICE_DISABLED: Windows Update service stopped or disabled | A hardening script or policy disabled wuauserv | Get-Service wuauserv; restore its default Manual startup |
0x8024002E | WU_E_WU_DISABLED: access to an unmanaged server isn't allowed | Something asked Windows Update to use Microsoft's servers directly while policy allows only the intranet server | Find the caller in WindowsUpdate.log; review the device's Windows Update policies |
0x80246008 | WU_E_DM_FAILTOCONNECTTOBITS: couldn't connect to BITS | BITS stopped, disabled or damaged | sc query bits; reset Windows Update components |
0x80248011 | WU_E_DS_UNABLETOSTART: couldn't create a data store object | Corrupted Windows Update components | Reset the data store (below) and rescan |
0x8024D009 | WU_E_SETUP_SKIP_UPDATE: agent self-update skipped | WSUS isn't serving the agent self-update | WSUS Selfupdate virtual directory; KB920659 |
Download and content trust#
| Code | Meaning | Usual cause | First check |
|---|---|---|---|
0x80246007 | WU_E_DM_NOTDOWNLOADED: the update hasn't been downloaded | Content never reached the client cache | CAS.log, ContentTransferManager.log, DataTransferService.log; boundary groups and package distribution |
0x8024200D | WU_E_UH_NEEDANOTHERDOWNLOAD: the update must be downloaded again | Incomplete or mismatched content in the client cache | Delete the cached content and rerun deployment evaluation |
0x80200053 | BG_E_VALIDATION_FAILED (BITS) | A firewall or proxy filtering downloads | Exempt update downloads from filtering |
0x80242006 | WU_E_UH_INVALIDMETADATA: the update contains invalid metadata | A damaged local data store or catroot2 | Rename SoftwareDistribution\DataStore, SoftwareDistribution\Download and catroot2, then rescan |
0x8007000D | ERROR_INVALID_DATA: invalid data downloaded, or corruption | A corrupted download | Clear the cached content and download again |
0x800B0109 | CERT_E_UNTRUSTEDROOT: the chain ends in an untrusted root | A third-party update signed with a WSUS signing certificate the client doesn't trust, or the signed-updates policy isn't set | Trusted Root and Trusted Publishers stores; AcceptTrustedPublisherCerts |
0x800B0004 | TRUST_E_SUBJECT_NOT_TRUSTED: the subject isn't trusted | Signing certificate in Trusted Root but not in Trusted Publishers | Trusted Publishers store on the client |
Installation#
| Code | Meaning | Usual cause | First check |
|---|---|---|---|
0x80240016 | WU_E_INSTALL_NOT_ALLOWED: another install running or a restart pending | A pending restart from an earlier update or app | Restart, then rerun deployment evaluation |
0x80240009 | WU_E_OPERATIONINPROGRESS: a conflicting operation is in progress | Another scan or install running at the same time | Let it finish and retry |
0x8024001E | WU_E_SERVICE_STOP: the service or system was shutting down | A restart or shutdown during installation | Retry in the next maintenance window |
0x80240022 | WU_E_ALL_UPDATES_FAILED: the operation failed for all updates | Antivirus blocking folders such as SoftwareDistribution | CBS.log; antivirus exclusions per your vendor's guidance |
0x8024200B | WU_E_UH_INSTALLERFAILURE: the installer failed | The update's own installer failed; .NET Framework failures usually mean a corrupted .NET installation | Install the update manually to reproduce; CBS.log |
0x80242014 | WU_E_UH_POSTREBOOTSTILLPENDING: post-restart operation still in progress | The device hasn't restarted | Restart the device |
0x80242017 | WU_E_UH_NEW_SERVICING_STACK_REQUIRED | A required servicing stack update isn't installed | Deploy the servicing stack update first |
0x80240017 | WU_E_NOT_APPLICABLE: no applicable updates | The update doesn't apply to this device (product, edition, architecture or a missing prerequisite) | Compare the update's product and architecture with the device |
0x80070BC9 | ERROR_FAIL_REBOOT_REQUIRED | A GPO sets the TrustedInstaller service's startup type, so pending operations can't finish | Remove that policy and restart; if still stuck, revert pending actions from WinRE |
Servicing stack and component store#
These come from the servicing stack; search %windir%\Logs\CBS\CBS.log for the code around the failure time. The repair for most of them:
Dism.exe /Online /Cleanup-Image /RestoreHealth
Sfc.exe /ScannowIf the device can't reach Windows Update for repair files, point DISM at matching media, for example /Source:wim:D:\sources\install.wim:1 /LimitAccess.
| Code | Meaning | Usual cause | First check |
|---|---|---|---|
0x800F081F | CBS_E_SOURCE_MISSING: source for a package or file not found | Component store corruption | DISM RestoreHealth, then SFC (below) |
0x800F0831 | CBS_E_STORE_CORRUPTION | Component store corruption | DISM RestoreHealth, then SFC |
0x80073701 | ERROR_SXS_ASSEMBLY_MISSING | A partially installed component | DISM RestoreHealth, then SFC |
0x8007371B | ERROR_SXS_TRANSACTION_CLOSURE_INCOMPLETE | Component store corruption | DISM RestoreHealth, then SFC |
0x80070570 | ERROR_FILE_CORRUPT | A corrupted file in the component store | DISM RestoreHealth, then SFC |
0x800F0821 | CBS_E_ABORT: CBS transaction timeout exceeded | Servicing too slow for the watchdog timer, common on small VMs | Add CPU and memory; Microsoft also lists a minimum update level |
0x800F0920 | CBS_E_HANG_DETECTED, logged after 0x800F0821 | Same as 0x800F0821 | Same as 0x800F0821 |
0x800F0922 | CBS_E_INSTALLERS_FAILED | Servicing installers failed; Microsoft documents a Windows Server 2016 case where license token updates fail | CBS.log; for that case, write access for User and Network Service on C:\Windows\System32\spp |
0x80070005 | E_ACCESSDENIED in CBS.log | Changed file system or registry permissions | Find the object in CBS.log and restore its permissions |
0x80070020 | ERROR_SHARING_VIOLATION: file in use | Non-Microsoft filter drivers, such as antivirus | Clean restart; Process Monitor with CBS.log |
0x80070490 | ERROR_NOT_FOUND during a driver installation | Missing driver details (such as Arch) under DriverOperations in the registry | Microsoft's DriverOperations registry fix |
Codes that aren't failures#
| Code | Meaning | Usual cause | First check |
|---|---|---|---|
0x00240005 | WU_S_REBOOT_REQUIRED | The install succeeded and needs a restart | Restart according to the deployment's restart settings |
0x00240006 | WU_S_ALREADY_INSTALLED | The update is already on the device | Nothing to fix |
How to verify a fix#
- On the client, open the Configuration Manager control panel and, on the Actions tab, run Software Updates Scan Cycle and then Software Updates Deployment Evaluation Cycle.
WUAHandler.logshows a completed scan with no error code, and the update is listed as missing or installed as you expect.- Check for a pending restart and for deployed updates that are still waiting or failed (
ErrorCodeis shown in decimal):
Invoke-CimMethod -Namespace root\ccm\ClientSDK -ClassName CCM_ClientUtilities -MethodName DetermineIfRebootPending
Get-CimInstance -Namespace root\ccm\ClientSDK -ClassName CCM_SoftwareUpdate |
Select-Object ArticleID, Name, EvaluationState, ErrorCode- In the console, the devices move from Error to Compliant in the deployment status after the client sends its next state messages.
For full walk-throughs, see updates not installing, software update point sync failures, WSUS maintenance and deployments waiting for a maintenance window.
References#
- Windows Update error codes by component (Microsoft Learn): names and meanings
- Windows Update common errors and mitigation (Microsoft Learn): CBS, network and agent mitigations
- Troubleshoot software update scan failures in Configuration Manager (Microsoft Learn)
- Troubleshoot software update deployments in Configuration Manager (Microsoft Learn)
- Third-party updates fail to install with error 0x800b0109 (Patch My PC knowledge base): 0x800B0109 and 0x800B0004

