Guide to Fixing a Slow Android Emulator on Arch Linux

Overview

If you are on Arch and your Android AVD is super slow, this guide my help. My machine has sufficient resources to make any lag suspicious, especially for an emulator. You may have a different machine and this guide may also help. However, as I didn’t test this on other machine, here is my full pc specs FYR:

System:
  Kernel: 6.16.8-arch3-1 arch: x86_64 bits: 64 compiler: gcc v: 15.2.1
  Desktop: KDE Plasma v: 6.4.5 Distro: Arch Linux
Machine:
  Type: Laptop System: LENOVO product: 21TH v: ThinkBook 14 G7+ AKP
    serial: <superuser required>
  Mobo: LENOVO model: LNVNB161216 v: SDK0T76577 WIN
    serial: <superuser required> UEFI: LENOVO v: RPCN16WW date: 04/02/2025
CPU:
  Info: 8-core model: AMD Ryzen AI 7 H 350 w/ Radeon 860M bits: 64
    type: MT MCP arch: Zen 5 rev: 0 cache: L1: 640 KiB L2: 8 MiB L3: 16 MiB
  Speed (MHz): avg: 3534 min/max: 623/5091:3506 boost: enabled cores:
    1: 3534 2: 3534 3: 3534 4: 3534 5: 3534 6: 3534 7: 3534 8: 3534 9: 3534
    10: 3534 11: 3534 12: 3534 13: 3534 14: 3534 15: 3534 16: 3534
    bogomips: 63880
  Flags-basic: avx avx2 ht lm nx pae sse sse2 sse3 sse4_1 sse4_2 sse4a
    ssse3 svm
Graphics:
  Device-1: Advanced Micro Devices [AMD/ATI] Krackan [Radeon 840M / 860M
    Graphics] vendor: Lenovo driver: amdgpu v: kernel bus-ID: 64:00.0
    temp: 42.0 C
  Device-2: Chicony Integrated Camera driver: uvcvideo type: USB
    bus-ID: 1-1:2
  Display: x11 server: X.Org v: 21.1.18 with: Xwayland v: 24.1.8 driver: X:
    loaded: modesetting dri: radeonsi gpu: amdgpu s-res: 3072x1920
    resolution: 3072x1920
  API: EGL v: 1.5 drivers: kms_swrast,radeonsi,swrast platforms:
    active: gbm,x11,surfaceless,device inactive: wayland
  API: OpenGL v: 4.6 compat-v: 4.5 vendor: amd mesa v: 25.2.3-arch1.2
    glx-v: 1.4 direct-render: yes renderer: AMD Radeon 860M Graphics (radeonsi
    gfx1152 LLVM 20.1.8 DRM 3.64 6.16.8-arch3-1)
  API: Vulkan v: 1.4.321 drivers: radv surfaces: N/A devices: 1
  Info: Tools: api: clinfo, eglinfo, glxinfo, vulkaninfo
    de: kscreen-console,kscreen-doctor wl: wayland-info x11: xdpyinfo,xprop
Info:
  Memory: total: 32 GiB note: est. available: 30.63 GiB
    used: 15.34 GiB (50.1%)
  Processes: 493 Uptime: 1d 3m Init: systemd
  Packages: 1178 Compilers: gcc: 15.2.1 Shell: Zsh v: 5.9 inxi: 3.3.39

Part 1: The Foundation – Enabling KVM for CPU Acceleration

The single biggest performance boost comes from enabling KVM (Kernel-based Virtual Machine). This allows the emulator to use your CPU’s native virtualization features instead of slow software emulation.

Step 1: Verify Hardware Support

First, confirm your CPU supports virtualization (AMD-V for AMD, VMX for Intel).

Bash

LC_ALL=C lscpu | grep Virtualization

You should see AMD-V or VMX in the output. Also, ensure this is enabled in your BIOS/UEFI (it’s often called “SVM Mode” on AMD systems).

Step 2: Install Virtualization Packages

Install QEMU (the emulator backend), libvirt (the management tool), and other necessary utilities.

Bash

sudo pacman -S qemu-full libvirt virt-manager ebtables dnsmasq

Troubleshooting: If this command fails with an error like failed retrieving file, your package manager’s mirror list is likely outdated. Fix it with:

Bash

# First, update your mirror list to the 10 fastest servers
sudo reflector --verbose --latest 10 --sort rate --save /etc/pacman.d/mirrorlist
# Then, force a database refresh
sudo pacman -Syyu

Now, try the installation command again.

Step 3: Enable and Start the Libvirt Service

This service needs to be running in the background to manage virtualization.

Bash

sudo systemctl enable libvirtd.service
sudo systemctl start libvirtd.service

Step 4: Add Your User to the Correct Groups

This is a critical step that gives your user account permission to use KVM.

Bash

sudo usermod -aG libvirt,kvm $(whoami)

You must log out and log back in or reboot for this change to take effect.


Part 2: The Graphics Glitch – Fixing GPU Acceleration

After enabling KVM, your emulator might boot but get stuck on a painfully slow, lagging boot animation. This means your CPU is now fast, but your GPU acceleration is broken. The likely culprit is an incompatibility with the modern Vulkan graphics API.

Step 1: Diagnose the Graphics Issue

Run the emulator from the command line to see its detailed log output.

Bash

# First, find your emulator's exact name
~/Android/Sdk/emulator/emulator -list-avds

# Now, launch it with that name
~/Android/Sdk/emulator/emulator -avd YOUR_AVD_NAME

Look for an error like Failed to create vulkan instance. Error: [VK_ERROR_INCOMPATIBLE_DRIVER]. This confirms the Vulkan driver is the problem.

Step 2: Enable Multilib and Install All Graphics Drivers

The emulator often relies on 32-bit libraries, which are stored in Arch’s multilib repository. We need to enable it and ensure our Mesa graphics drivers are fully installed.

Edit /etc/pacman.conf (you need sudo for this)

Add the following lines at the end of the file

[multilib]
Include = /etc/pacman.d/mirrorlist

Now save the file and run the following to update

sudo pacman -Syyu

Now install the missing packages

sudo pacman -S --needed mesa lib32-mesa vulkan-radeon lib32-vulkan-radeon libva-mesa-driver

Conclusion

After rebooting, launch your Android Virtual Device from Android Studio. It should now boot up quickly, the animations will be smooth, and the entire system will be responsive. You’ve successfully configured both CPU and GPU hardware acceleration, unlocking the true performance of your machine.

Leave a Comment