Guides
Fix Common WSL 2 Errors on Windows: 0x80370102, 0x80070003, 0x8007019e, 0x800705b4 and More
Start here: the 5-minute checklist
Do these in order. Steps 3 and 4 need PowerShell as administrator (right-click Start → Terminal (Admin) or Windows PowerShell (Admin)).
Update WSL.
wsl --updateStop WSL completely. This ends every distribution and the WSL 2 utility virtual machine.
wsl --shutdownCheck that both Windows features are on. Both lines should say
Enabled.Get-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform | Select-Object FeatureName, State Get-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux | Select-Object FeatureName, StateIf either is off, enable it with Microsoft's own commands, then restart (see Restart is not Shut down):
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestartCheck that the hypervisor launches at boot. If you see
hypervisorlaunchtype Off, turn it on and restart:bcdedit /enum | findstr -i hypervisorlaunchtype bcdedit /set hypervisorlaunchtype Auto- Check virtualization in the BIOS. Task Manager → Performance → CPU should show Virtualization: Enabled. If it doesn't, see How to enable virtualization in BIOS; if you are unsure how to read the result, see How to check if virtualization is enabled.
Where each error happens
WSL 2 starts in a chain. A failure at one link shows up as a different error code, so the code tells you which link to fix.
Error code lookup
| Code or message | What it usually means | Jump to |
|---|---|---|
0x80370102 "The virtual machine could not be started because a required feature is not installed" | BIOS virtualization off, Virtual Machine Platform missing, hypervisor launch off, nested virtualization, or an old third-party hypervisor | 0x80370102 |
0x80070003 "Installation failed" | New apps are saved on a drive other than the system drive, or virtualization is off | 0x80070003 |
0x8007019e "WslRegisterDistribution failed" | The Windows Subsystem for Linux feature is not enabled | 0x8007019e |
0x80040154 after a Windows update | The WSL feature was switched off during the update | 0x80040154 |
0x80040306 on install | Legacy console is turned on | 0x80040306 |
0x8000FFFF "unexpected failure" | Missing admin rights, old WSL or Windows, or damaged system files | 0x8000FFFF |
0x800704ec "blocked by group policy" | A policy blocks WSL | Run wsl --update; if it persists, contact your administrator |
0x800705b4 with CreateVm | The WSL virtual machine was created but never answered | 0x800705b4 |
| Install stuck at 0.0% | The Store download is stalled | Install hangs |
| WSL not responding | The WSL service or VM is hung | WSL hangs |
C: drive is full | The distribution's disk lives on C: | Move WSL |
0x80370102: the virtual machine could not be started
Microsoft's message: "The virtual machine could not be started because a required feature is not installed." Its fix is to enable the Virtual Machine Platform Windows feature and make sure virtualization is enabled in the BIOS. Work through these in order:
- BIOS/UEFI: virtualization must be on. See how to enable it.
- CPU: it must support second level address translation (SLAT), which came with Intel's first-generation Core and AMD Opteron. Older CPUs such as the Core 2 Duo cannot run WSL 2 even if the features install.
Virtual machine? If your Windows runs inside a VM, enable nested virtualization on the host (PowerShell as administrator, replacing
<VMName>):Set-VMProcessor -VMName <VMName> -ExposeVirtualizationExtensions $true- Features: enable Virtual Machine Platform and restart (commands in the checklist above).
- Hypervisor launch:
bcdedit /enum | findstr -i hypervisorlaunchtypemust not sayOff. If it does,bcdedit /set hypervisorlaunchtype Auto, then restart. - Other hypervisors: VMware Workstation must be 15.5.5 or newer and VirtualBox 6 or newer to coexist with Hyper-V, or be turned off.
- Azure virtual machines: nested virtualization is not supported with Trusted Launch, so disable Trusted Launch for that VM.
0x80070003: installation failed
Microsoft lists two causes for 0x80070003:
- WSL distributions must be stored on your system drive (usually
C:). Check where Windows saves new apps: on Windows 11 go to Settings → System → Storage → Advanced storage settings → Where new content is saved; on Windows 10 go to Settings → System → Storage → Change where new content is saved. Set new apps toC:, then install again. - Virtualization is off in the BIOS (the same message is reported for
0x80070003and0x80370102). See the checklist.
If C: is nearly full, free some space first, and later move the distribution to another drive with wsl --export and wsl --import.
0x8007019e: the WSL feature is not enabled
WslRegisterDistribution failed with error 0x8007019e means the Windows Subsystem for Linux optional component is off. Turn it on in Control Panel → Programs and Features → Turn Windows features on or off → tick Windows Subsystem for Linux (and Virtual Machine Platform for WSL 2), or with PowerShell as administrator:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
Then restart.
0x80040154 and 0x80040306
0x80040154after a Windows update: the WSL feature can be switched off during an update. Enable it again with the commands in the checklist and restart.0x80040306on installation: WSL does not support the legacy console. Opencmd.exe, right-click the title bar → Properties, uncheck Use legacy console, and click OK.
0x8000FFFF: unexpected failure
Microsoft describes this as an unexpected ("catastrophic") failure with many possible causes. Check, in this order:
- You are running as an administrator.
- WSL is up to date:
wsl --update, and Windows too. - You used
wsl --installcorrectly and named the distribution you want. wsl --shutdown, then try again.- Damaged system files: from an elevated prompt run
SFC /SCANNOW, thenDISM /Online /Cleanup-Image /RestoreHealth.
0x800705b4: the VM never answers
This code is not in Microsoft's troubleshooting page, so what follows is practical experience rather than an official procedure.
What you see: installing or launching a distribution runs for about 30 seconds and then fails with 0x800705b4 in a message that mentions CreateVm. 0x800705b4 is Windows' generic "the operation timed out" code: WSL created its virtual machine, but the machine never answered.
The usual cause: Windows' two WSL features were switched off and then on again without a real restart in between. Disabling a feature with /norestart only leaves the change pending, yet DISM and PowerShell can report the feature as Disabled straight away, and Enabled again right after re-enabling it, before anything has actually been applied. At the next boot Windows applies the "off" and the "on" together, the virtualization platform can be left unusable, and the WSL virtual machine cannot start properly.
The fix is a clean cycle:
Turn both features off:
dism.exe /online /disable-feature /featurename:VirtualMachinePlatform /norestart dism.exe /online /disable-feature /featurename:Microsoft-Windows-Subsystem-Linux /norestart- Restart Windows (Start → Power → Restart).
- Turn both features on again (the two
/enable-featurecommands in the checklist). - Restart Windows again.
If the clean cycle doesn't help, check that the Hyper-V Host Compute Service can run (Get-Service vmcompute) and report the problem on WSL's GitHub issues with the information listed in What to include when you ask for help.
Restart is not Shut down
Windows' own help for the shutdown command describes /r as a full shutdown and restart. That matters because, with Fast Startup on, Shut down followed by power-on is not a full restart: Windows saves part of its state and resumes from it. Optional-feature changes are applied while Windows boots, so after enabling a feature you should always use:
- Start → Power → Restart, or
shutdown /r /t 0(restarts immediately, so save your work first).
WSL hangs or does not respond
wsl --shutdownand start again.If it still hangs, restart the WSL service (PowerShell as administrator). The Store version of WSL uses WslService; older inbox WSL used
LxssManager, and Microsoft states that WslService replaced it:Restart-Service WslService- Restart Windows.
Install hangs at 0.0% or only prints help
Stuck at 0.0%: Microsoft's workaround is to download first, then install:
wsl --install --web-download -d Ubuntuwsl --installjust prints the help text: WSL is already partly installed. List the names, then install one by name:wsl --list --online wsl --install -d Ubuntu- Store updates blocked:
wsl --update --web-downloaddownloads the update from GitHub instead of the Microsoft Store.
Move WSL to another drive
When C: is full, Microsoft's FAQ documents moving a distribution by exporting it, unregistering it, and importing it from the new location. Replace Ubuntu with the exact name shown by wsl -l -v, and D:\WSLDistros\Ubuntu with your target folder (create it first).
wsl --shutdown
wsl --export Ubuntu D:\WSLDistros\Ubuntu\ext4.vhdx --format vhd
wsl --unregister Ubuntu
wsl --import-in-place Ubuntu D:\WSLDistros\Ubuntu\ext4.vhdx
An imported distribution doesn't come back with your usual user. Set it again inside the distribution, in /etc/wsl.conf:
[user]
default=yourname
Then run wsl --terminate Ubuntu and start the distribution again. If you prefer a tar backup instead of a VHD, wsl --export Ubuntu D:\backup\ubuntu.tar followed by wsl --import Ubuntu D:\WSLDistros\Ubuntu D:\backup\ubuntu.tar --version 2 does the same job.
Docker Desktop took over as the default distribution
wsl -l -v marks the default distribution with an asterisk. If it shows docker-desktop, plain wsl opens that instead of your Linux. Set your own as the default:
wsl --set-default Ubuntu
What to include when you ask for help
Microsoft asks for these when you report a WSL problem, and they also save everyone time in forums:
- Windows build:
cmd.exe /c ver(orwinver) - WSL version and kernel:
wsl --versionandwsl --status - Whether the distribution runs as WSL 1 or WSL 2:
wsl -l -v - The exact error text and code
- Whether the PC is physical or a virtual machine
- What changed just before it broke (a Windows update, enabling or disabling features, a BIOS update)
Frequently asked questions
What does error 0x80370102 mean in WSL?
The virtual machine could not be started because a required feature is not installed. Microsoft's fix: enable the Virtual Machine Platform Windows feature, make sure virtualization is on in the BIOS, check that the hypervisor launches at boot, and restart.
Do I have to reinstall Windows to fix WSL 2?
Almost never. The causes listed here (BIOS setting, Windows features, hypervisor launch type, a half-applied feature change, a missing update) are all fixed without reinstalling Windows.
Does WSL 2 work on Windows 10 and on Windows Home?
Yes. Microsoft states that WSL 2 is available on all desktop editions, including Windows 10 Home and Windows 11 Home. On Windows 10 x64 it needs version 1903 with build 18362.1049 or later, and the one-command wsl --install needs version 2004 (build 19041) or later.
Is wsl --unregister safe?
It permanently deletes the distribution and all data inside it. Export a backup with wsl --export first and confirm the file exists before you unregister anything.
Why do I need to restart after enabling the features?
Windows applies optional-feature changes while it boots. Until a real restart happens, the change is only pending, which is why a half-applied change can leave WSL broken.
Sources
- Microsoft Learn: Troubleshooting Windows Subsystem for Linux
- Microsoft Learn: Manual installation steps for older versions of WSL (dism commands, build requirements)
- Microsoft Learn: Install WSL
- Microsoft Learn: Basic commands for WSL
- Microsoft Learn: WSL FAQ (Home editions, moving a distribution, nested virtualization, WslService)
- WSL issues on GitHub (where to report a bug)
Related guides
Run Android devices and browser profiles on your own PC
ADSSPEED manages many browser profiles and Android phone profiles from one app, each with its own device configuration, proxy and automation.