Setting Up Waydroid on Pop!_OS: The Definitive Guide to High-Performance Android Emulation (with Network & Customization Fixes)
For developers or mobile gamers looking for near-native Android emulation on Pop!_OS, traditional virtual machines often fall short due to massive emulation overhead. Waydroid offers a superior alternative. Unlike heavy emulation software, Waydroid uses Linux containers (LXC) to run a full Android system directly on the host kernel. The result is near-native, blazing-fast performance.
However, setting it up on Pop!_OS involves a few notorious hurdles—especially regarding kernel modules, network routing, and ARM translation for mobile gaming.
Here is the ultimate, battle-tested blueprint to get Waydroid up, running, connected, and customized on a Pop!_OS machine.
Waydroid strictly requires a Wayland session. Verify the active display server by running:
echo $XDG_SESSION_TYPE
- If the output is
wayland, the system is ready to roll. - If the output is
x11, log out, click the gear icon on the login screen, and switch to a Wayland session before proceeding.
Pop!_OS does not include the Android Binder IPC driver (binder_linux) natively in its standard kernel. Initializing Waydroid right away will result in a Failed to load binder driver error.
The cleanest fix is to switch to the XanMod Kernel, which includes the exact modules Waydroid needs out-of-the-box and offers excellent optimization for gaming. Run these commands:
wget -qO - https://dl.xanmod.org/archive.key | sudo gpg --dearmor -o /usr/share/keyrings/xanmod-archive-keyring.gpg
echo 'deb [signed-by=/usr/share/keyrings/xanmod-archive-keyring.gpg] http://deb.xanmod.org releases main' | sudo tee /etc/apt/sources.list.d/xanmod-release.list
sudo apt update && sudo apt install linux-xanmod-x64v3 -y
Reboot the computer to load into the new XanMod kernel before moving to the next step.
Now that the kernel has proper Binder support, add the official repository and pull down the Android image with Google Play Services (GApps):
sudo apt install curl ca-certificates -y
curl -s https://repo.waydro.id | sudo bash
sudo apt install waydroid -y
# Initialize with Google Apps
sudo waydroid init -s GAPPS -f
sudo systemctl enable --now waydroid-container
Linux containers on Pop!_OS often struggle with DNS resolution and packet forwarding, wiping out the network configuration whenever the system reboots.
To bypass the Pop!_OS local network manager routing entirely and permanently lock in the internet connection, execute this sequence:
# 1. Hardcode Google DNS directly into the Android container properties
sudo waydroid prop set net.dns1 8.8.8.8
sudo waydroid prop set net.dns2 8.8.4.4
# 2. Persist IP Forwarding across system reboots
echo "net.ipv4.ip_forward = 1" | sudo tee /etc/sysctl.d/99-waydroid.conf
sudo sysctl -p /etc/sysctl.d/99-waydroid.conf
# 3. Configure UFW (Uncomplicated Firewall) exceptions for the bridge network
sudo ufw route allow in on waydroid0
sudo ufw route allow out on waydroid0
sudo ufw allow 53
sudo ufw allow 67
sudo ufw reload
# 4. Restart the container service
sudo systemctl restart waydroid-container
Most modern mobile games are built for ARM processors, but standard PC hardware runs an x86 architecture. Without a translation layer, games like Ragnarok Online Origin will instantly crash.
First, launch Waydroid once from the application menu (or run waydroid show-full-ui in a separate terminal) to generate the Android system folders, then close it.
Next, clone the community setup script to inject the libhoudini translation layer and register the device with Google:
sudo apt install git python3-venv -y
git clone https://github.com/casualsnek/waydroid_script
cd waydroid_script
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
# Run the interactive script
sudo venv/bin/python3 main.py
- Go to Install -> Select libhoudini.
- Return to the main menu -> Select Get Android Device ID.
- Copy the long numerical ID provided.
- Open a web browser, navigate to the Google Device Registration page, and paste the ID to whitelist the emulator. (Note: Activation typically takes Google 15–30 minutes).
Waydroid does not behave like a standard windowed app by default. Use these tweaks to make it feel like an integrated part of the desktop environment.
To force a specific screen size (e.g., standard 16:9 landscape mode for gaming), set the preferred dimensions:
waydroid prop set persist.waydroid.width 1280
waydroid prop set persist.waydroid.height 720
# Stop the session to apply changes
waydroid session stop
If the user interface elements or fonts look too tiny or blown out at a custom resolution, dynamically tweak the pixel density:
waydroid shell wm density 240
(Standard target values are 160, 240, or 320. Use reset instead of a number to go back to default).
To seamlessly sync the system clipboard back and forth between Pop!_OS and Android, install the required clipboard utilities:
sudo apt install wl-clipboard xclip python3-pip -y
sudo pip3 install pyclip --break-system-packages
waydroid session stop
The configuration is now complete. To kickstart the environment from the command line moving forward, simply run:
waydroid show-full-ui
Log into the certified Google Play Store, download mobile titles, and enjoy massive frame rates running straight on bare-metal Linux hardware.
Easy way to install:
sudo bash -c "$(curl -sL https://gist.githubusercontent.com/jericbas/add9179bdee68f0cf6704f13ff8b6048/raw/fc9680d2d76e38145d847d95d2382f2302fee683/waydroid-manager.sh)"