The Fuchsia emulator (FEMU) allows you to test Fuchsia components and applications without needing a Fuchsia device. FEMU is included in Fuchsia source, and it’s downloaded by jiri
as part of jiri update
or jiri run-hooks
. It’s fetched into the Fuchsia directory /prebuilt/third_party/aemu
.
You can call FEMU with fx
using fx emu
(Linux) or fx vdl
(macOS). Alternatively, you can call FEMU from the Fuchsia IDK using femu.sh
.
FEMU is the default emulator for Fuchsia. FEMU is based on the Android Emulator (AEMU), which is a fork of QEMU. Due to legacy issues, there may be references to AEMU in the code and documentation.
In some instances, such as emulating Zircon, you must use QEMU instead.
FEMU looks and behaves like a Fuchsia device, with the exception that no paving is required.
FEMU features include:
--headless
argument with fx emu or fx vdl commands).femu.sh
with the Fuchsia IDK.To configure these features, see the Set up and start FEMU page.
Additional features are listed in the fx emu and fx vdl reference pages.
If you’re using the Fuchsia IDK, femu.sh
supports the same flags as fx emu
.
When setting up FEMU using fx set
, FEMU only supports the following boards:
qemu-x64
qemu-arm64
When using the Fuchsia IDK to set up FEMU, you are limited to the following pre-built images:
qemu-x64
workstation.qemu-x64-release
qemu-arm64
Note: ARM64 support (qemu-arm64
) is very limited and not recommended.
The Fuchsia Emulator should generally be run with the -N
flag that provides networking through an emulated NIC. Instructions for setting up networking for FEMU is in Setting up the Fuchsia Emulator.
Without networking, you only have an isolated serial console. With networking, your device is visible to other tools such as ssh
and fx serve
.
If you only want to emulate Zircon, you must use fx qemu
instead. Read Debugging the Kernel using QEMU to learn more. This is for kernel developers. Most Fuchsia developers do not need to use this workflow.
To use FEMU, you must first download the Fuchsia source and build Fuchsia.
Alternatively, you can use the Fuchsia IDK and use pre-built system images.
Then you can use FEMU to do the following: