Windows  ·  medium  ·  Core Windows faults

0xC1900101 — feature update rolls back

A driver stopped the upgrade. The 0xC1900101 family always means a driver problem; the extension code says which phase it died in.

What you see

A feature update or in-place upgrade reaches a percentage, restarts, then reverts with "We couldn't install Windows 10/11" and this code.

What is actually wrong

A third-party driver failed to migrate. The usual culprits are storage controller drivers, older antivirus filter drivers, VPN adapters and vendor management agents.

Codes and articles

0xC19001010xC1900101-0x200170xC1900101-0x300180xC1900101-0x4000D0x80070570

Fixes (2)

Find the actual blocker with SetupDiag
Elevated PowerShell10 minuteslow riskreversible

Always do this first. Guessing at drivers wastes hours; SetupDiag names the file in most cases.

  1. Download SetupDiag from Microsoft and put it somewhere simple such as C:\temp.

  2. Run it against the rollback logs left by the failed attempt.

    PowerShell
    C:\temp\SetupDiag.exe /Output:C:\temp\setupdiag.log

    It reads $WINDOWS.~BT and the Panther logs and matches them against a set of known failure signatures.

  3. Read the result — look for the rule name and any driver file it names.

    PowerShell
    Get-Content C:\temp\setupdiag.log | Select-Object -First 60
Confirm it workedYou have a named driver, service or blocking application to act on.
If you need to undo itNone — SetupDiag only reads logs.
Remove the blockers and retry from mounted media
Windows45–90 minutesmedium riskreversible

SetupDiag named a driver, or the extension code points at the boot phase.

  1. Uninstall third-party antivirus and endpoint agents completely, using the vendor's removal tool rather than Add/Remove Programs.

    Filter drivers are the single most common cause of this family. A partial uninstall leaves the filter driver registered.

  2. Unplug everything not needed to boot — external drives, docks, printers, smartcard readers, USB hubs.

  3. Remove any VPN client and its virtual adapter.

  4. List non-Microsoft drivers and note anything storage or security related that predates the machine's last two years.

    PowerShell
    pnputil /enum-drivers
  5. Mount the ISO for the target build and run setup from it, choosing to keep files and apps.

    PowerShell
    Mount-DiskImage -ImagePath C:\iso\windows.iso

    Running setup from mounted media skips the Windows Update download path entirely, which removes a whole class of failures from the picture.

Confirm it workedThe upgrade completes and the build number has changed.
PowerShell
Get-ComputerInfo -Property OsName, OsBuildNumber
If you need to undo itWindows keeps the previous build for 10 days — Settings → System → Recovery → Go back.

Where this stops. This write-up was written and checked by hand. It says what each step changes, how to confirm it worked and how to reverse it, and anything destructive is flagged before you reach it. If it does not match what your machine is doing, search the Support Centre for the exact code or message — and when something needs a person, get in touch.