Recommended to install Waydroid in a brand new Ubuntu 25.04 install. Waydroid needs a custom linux kernel. Actually just needs latest kernel for WSL2 with just these changes before compiling:
CONFIG_ANDROID_BINDER_IPC=y
CONFIG_ANDROID_BINDER_DEVICES="binder,hwbinder,vndbinder"
Make sure WSL2 uses the custom kernel and modules modifying .wslconfig (or using WSL Settings)
[wsl2]
kernel=D:\\mykernel\\bzImage-6.6.87.ANDROID
kernelModules=D:\\mykernel\\modules.vhdx
Download ubuntu-25.04-wsl-amd64.wsl
distro from https://releases.ubuntu.com/plucky/
Double click on the .wsl file to install.
Run Ubuntu 25.04 and make sure is updated
sudo apt update && sudo apt upgrade -y
Install weston
sudo apt install weston
Install Waydroid
curl -s https://repo.waydro.id | sudo bash
sudo apt install waydroid
Configure Waydroid to only use software rendering (SwiftShader)
sudo nano /var/lib/waydroid/waydroid_base.prop
ro.hardware.gralloc=default
ro.hardware.egl=swiftshader
Make weston detect gpu for some acceleration
export GALLIUM_DRIVER=d3d12
Run weston
weston --backend=wayland-backend.so
Inside weston desktop shell open a terminal and run
waydroid session start
When it shows 'Android with user 0 is ready' then open another terminal inside the weston desktop and run
waydroid show-full-ui
-
If Waydroid shows some weird dbus errors make sure you shutdown the WSL2 VM (wsl.exe --shutdown) and try again.
-
By default Waydroid only launches correctly if the WSL2 networking mode is not MIRRORED. This is because dnsmasq tries to reserve port 53 that is already used in Windows. If you want to keep using MIRRORED networking you will need to add this to your .wslconfig (or using WSL Settings)
[experimental] ignoredPorts=53
-
Every time the WSL2 kernel changes significantly (from ASHMEM support in 5.15.x to none in 6.6.x) you need to reconfigure Waydroid or it wont boot.
sudo waydroid upgrade --offline
The correct way to run it is
weston --backend=wayland-backend.so
or justweston
But it seems some env variable is not defined.
What's the content of your env variables? Run
env
and see if you have something like these:ls -la /run/user/1000/
should show the wayland-0 socketAlso make sure you have latest WSL version 2.5.7 (
wsl.exe --version
) and your.wslconfig
file loads the generated kernel modules too: