ADSSPEED

Guides

Fix Common WSL 2 Errors on Windows: 0x80370102, 0x80070003, 0x8007019e, 0x800705b4 and More

By ADSSPEED Team · Published · Updated · 9 min read

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)).

  1. Update WSL.

    wsl --update
  2. Stop WSL completely. This ends every distribution and the WSL 2 utility virtual machine.

    wsl --shutdown
  3. Check 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, State

    If 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 /norestart
  4. Check 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
  5. 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.

Where WSL 2 errors appear in the start-up chain Five steps from top to bottom: virtualization on in BIOS; Windows features enabled; hypervisor launches at boot; the WSL virtual machine is created; the distribution is installed and registered. Error 0x80370102 appears at the first three steps, 0x8007019e at the features step, 0x800705b4 when the virtual machine is created, and 0x80070003 at installation. 1 · Virtualization ON in the BIOS 0x80370102 2 · Features: Virtual Machine Platform + WSL 0x80370102 · 0x8007019e · 0x80040154 3 · Hypervisor launches at boot 0x80370102 (hypervisorlaunchtype Off) 4 · WSL virtual machine is created 0x800705b4 (CreateVm timed out) 5 · Distribution installed and registered 0x80070003 (install location) Fix the first link that fails; later links depend on it.
The error code points at the link in the chain that broke.

Error code lookup

Code or messageWhat it usually meansJump 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 hypervisor0x80370102
0x80070003 "Installation failed"New apps are saved on a drive other than the system drive, or virtualization is off0x80070003
0x8007019e "WslRegisterDistribution failed"The Windows Subsystem for Linux feature is not enabled0x8007019e
0x80040154 after a Windows updateThe WSL feature was switched off during the update0x80040154
0x80040306 on installLegacy console is turned on0x80040306
0x8000FFFF "unexpected failure"Missing admin rights, old WSL or Windows, or damaged system files0x8000FFFF
0x800704ec "blocked by group policy"A policy blocks WSLRun wsl --update; if it persists, contact your administrator
0x800705b4 with CreateVmThe WSL virtual machine was created but never answered0x800705b4
Install stuck at 0.0%The Store download is stalledInstall hangs
WSL not respondingThe WSL service or VM is hungWSL hangs
C: drive is fullThe 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:

  1. BIOS/UEFI: virtualization must be on. See how to enable it.
  2. 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.
  3. 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
  4. Features: enable Virtual Machine Platform and restart (commands in the checklist above).
  5. Hypervisor launch: bcdedit /enum | findstr -i hypervisorlaunchtype must not say Off. If it does, bcdedit /set hypervisorlaunchtype Auto, then restart.
  6. 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.
  7. 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 to C:, then install again.
  • Virtualization is off in the BIOS (the same message is reported for 0x80070003 and 0x80370102). 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

  • 0x80040154 after a Windows update: the WSL feature can be switched off during an update. Enable it again with the commands in the checklist and restart.
  • 0x80040306 on installation: WSL does not support the legacy console. Open cmd.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:

  1. You are running as an administrator.
  2. WSL is up to date: wsl --update, and Windows too.
  3. You used wsl --install correctly and named the distribution you want.
  4. wsl --shutdown, then try again.
  5. Damaged system files: from an elevated prompt run SFC /SCANNOW, then DISM /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:

  1. Turn both features off:

    dism.exe /online /disable-feature /featurename:VirtualMachinePlatform /norestart
    dism.exe /online /disable-feature /featurename:Microsoft-Windows-Subsystem-Linux /norestart
  2. Restart Windows (Start → Power → Restart).
  3. Turn both features on again (the two /enable-feature commands in the checklist).
  4. 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

  1. wsl --shutdown and start again.
  2. 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
  3. 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 Ubuntu
  • wsl --install just 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-download downloads 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 (or winver)
  • WSL version and kernel: wsl --version and wsl --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

  1. Microsoft Learn: Troubleshooting Windows Subsystem for Linux
  2. Microsoft Learn: Manual installation steps for older versions of WSL (dism commands, build requirements)
  3. Microsoft Learn: Install WSL
  4. Microsoft Learn: Basic commands for WSL
  5. Microsoft Learn: WSL FAQ (Home editions, moving a distribution, nested virtualization, WslService)
  6. 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.