As more and more people worldwide begin working from home, I'm seeing a renewed interest in upgrades to Windows 10. That older PC that's been gathering dust in the back of the closet will probably run Windows 10 just fine, and a steady stream of reports from my readers confirm that Microsoft is continuing to allow free upgrades to Windows 10 from Windows 7 and Windows 8/8.1. (For details, see "Here's how you can still get a free Windows 10 upgrade.")
But a small percentage of readers have reported problems with the upgrade, usually because of compatibility problems with existing software or hardware. In this post, I provide details about tools and techniques you can use to identify and fix the issue that's blocking an upgrade. These steps can also help you diagnose problems installing feature updates on PCs that are already running Windows 10.
Note that some of these steps require intermediate to advanced technical skills. If you're uncertain about some of the details or unsure about how to interpret results, ask a friend or colleague with IT experience to assist. (They can do so using remote support tools, as I explain in "Remote support essentials: 4 steps you can take now to keep friends and family connected.")
Check for an updated BIOS
This step is especially important for older PCs that were designed and built before the release of Windows 10. On legacy PCs, the BIOS takes care of starting up a PC and managing connections to essential system devices like keyboards and disk controllers. Back in 2015 and 2016, many PC manufacturers released updates to their BIOS code, specifically designed to address upgrade issues, and sometimes just upgrading the BIOS is enough to solve a failed upgrade.
To find details about your system, press Windows key + R to open the Run box, type msinfo32, and then press Enter. That opens the System Information app. On the System Summary tab, look for the item labeled BIOS Version/Date, as shown here.
If the BIOS date is earlier than 2016, it's worth checking the computer manufacturer's website to see if an update is available. Even some older systems that were past their support deadline received fresh BIOS code around the time of Windows 10's release in mid-2015.
Perform basic troubleshooting steps
The most common upgrade errors can be traced to a handful of basic causes: software incompatibilities, storage-related issues, and errors in the Setup wizard. Even if you don't know the exact reason for an upgrade problem, you might be able to resolve it with some simple troubleshooting measures.
First, temporarily uninstall any unneeded software. Pay special attention to low-level system tools such as antivirus software, disk management tools, and so on. In the case of antivirus software, you might need to download a tool from the developer to completely remove the program.
Next, disconnect all non-essential devices, especially external storage devices.
Finally, skip the upgrade wizard, which can sometimes fail because it's unable to ask for your permission to get past an error. Instead, run Windows Setup directly from downloaded installation files. To do this, use the Windows 10 Media Creation Tool to download the necessary files to a USB drive; you can also use the option to save the installer as an ISO file, which you can then mount as a virtual drive, with its own drive letter. (For instructions on how to download these files and instructions on mounting ISO files, see "Here's how you can still get a free Windows 10 upgrade.")
Use Windows Explorer or File Explorer to open the external or virtual drive and then double-click Setup to begin the upgrade.
Look up known issues
Before you spend a lot of time trying to upgrade an old PC or install a new feature update, check out the list of known issues at Microsoft's Windows 10 release information dashboard. Expand each entry on the left to see the list of known and resolved issues for supported releases of Windows 10.
Known issues are most likely to appear in the first few months after the release of a new feature update. Incompatibilities with software and hardware can lead Microsoft to impost temporary compatibility blocks for systems with those particular configurations.
You might be able to bypass one of these blocks by updating or uninstalling an incompatible program, or you might want to defer that update until the blocking issue is resolved.
Run the built in compatibility checker in Windows Setup
Although recent feature updates on modern hardware typically install very quickly, some upgrades can take a long time. It's frustrating to get to the end of that process, after an hour or two, to discover that the system has rolled back the update and restored your previous Windows version, without any indication of what the problem is.
If you'd rather skip that process, you can run Windows Setup using a pair of switches that instruct it to perform a compatibility check and return the results. To do so, you need to have access to the full Windows installation files, as explained in the previous section.
Open File Explorer (Windows Explorer in Windows 7) and make a note of the drive letter assigned to the external or virtual drive where your Windows installation files are available.
Next, open a Command Prompt window (the easiest way is to press Windows key + R to open the Run dialog box), and then type cmd.exe and press Ctrl+Shift+Enter to run it as an administrator. At the command prompt, type the following commands, substituting the drive letter where your installer files are located in place of d:. Press Enter after each one.
Setup /Compat ScanOnly
Follow the setup screens just as if you were performing an upgrade. When you get to the final screen, click Install. The program should end at that point rather than beginning the upgrade. When it does, it writes some information to a file called BlueBox.log, which you'll find in the C:\Windows\Logs\MoSetup folder.
Double-click that file to open it in Notepad and then scroll to the bottom and look for the final error code. If you see 0xC1900210, you're good to go. That means there are no blocking compatibility issues.
If you see another error code, you'll need to find out what it means. Here are four common errors, decoded:
- Compatibility issues found (hard block): 0xC1900208
- Migration choice (auto upgrade) not available (probably the wrong SKU or architecture) 0xC1900204
- Does not meet system requirements for Windows 10: 0xC1900200
- Insufficient free disk space: 0xC190020E
There are other, less common error codes you might encounter. For information on what these codes mean, see this official Microsoft support document: Resolve Windows 10 upgrade errors : Technical information for IT Pros.
For a compatibility block, you should see more details about the block, along with a link to instructions on how to resolve the issue.
After a failed install, check the Setup logs
If you've attempted a Windows 10 upgrade and it failed, you might be tempted to try again. That is the canonical definition of insanity: doing the same thing again and expecting different results.
As a rational alternative, I recommend using Microsoft's official diagnostic utility, SetupDiag, to see if you can divine the reasons for the failure. This tool uses a set of rules (more than 60 of them in the current release as of early 2020) that match known issues affecting Windows 10 upgrades; it runs on Windows 7, Windows 8.x, and Windows 10, although the destination OS must be Windows 10, and you might need to install the .NET Framework 4.6 for it to run properly. SetupDiag inspects the voluminous log files that Windows creates each time it attempts an upgrade, and then reports the most likely cause of the failure for you.
When a Windows 10 upgrade or feature update fails, go to this page and download SetupDiag.exe. Keep that page open, so that you can refer to its instructions as needed. It also contains links to details for decoding error codes.
Copy SetupDiag.exe to its own folder on the PC where Setup failed and then double-click the executable file. The current edition of the program is smart enough to look in locations where log files are commonly saved, so you don't need to specify any command-line switches for the tool.
The output for SetupDiag is a plain text file that is saved in the same folder as the program file. You can open the results file in any text editor, including Notepad, to examine its output and figure out what to do next.
If you have any questions about these tools, or if you have suggestions to offer, please send them to me directly. Click the envelope icon to the left of my by-line at the top of this post to send me a direct message. Be sure to include your real email address if you want to receive a response, and check to make sure you have typed it correctly. I promise that the information you provide will be used exclusively for our correspondence about this issue and I will not share it with anyone else without your permission.