The RISC-V community has a new promising tool. It is called felix86, a user-space emulator for Linux that allows running programs and video games designed for x86 and x86-64 architectures on RISC-V processors. Although still in early development stages, it can already run several well-known applications and even some games, opening the door to better compatibility and utilization of the open RISC-V architecture.
What is felix86 and how does it work?
felix86 is a utility designed to emulate x86/x86-64 instructions on RISC-V CPUs using modern techniques like Just-in-Time (JIT) recompilation. This approach dynamically translates x86 code into RISC-V instructions during execution, enabling reasonable performance without full virtualization.
Its main technical features include:
- Use of RVV vector extensions to execute SIMD instructions like SSE.
- Compatibility with the B extension for bit manipulation operations.
- Support for custom extensions such as XThead, if available on the hardware.
- Ability to leverage native system libraries to boost performance.
This method allows x86 binaries to behave as if they were native applications on a RISC-V system.
Quick and easy installation
Installing felix86 is as simple as running a script in the terminal. It works on Ubuntu, Debian, and derivative distributions:
bash
curl -s https://raw.githubusercontent.com/OFFTKP/felix86/master/src/felix86/tools/install.sh -o /tmp/felix86_install.sh && bash /tmp/felix86_install.sh && rm /tmp/felix86_install.sh
The script downloads and installs the emulator along with a root filesystem (rootfs) containing the necessary libraries for executing x86 programs. Once installed, you can start an emulated terminal with:
bash
FELIX86_QUIET=1 felix86 /bin/bash
From that prompt, you can run games, utilities, or even package managers to install more x86/x86-64 compatible software.
Compatibility, requirements, and recommendations
felix86 is designed to run on 64-bit RISC-V processors that support vector extensions (RVV 1.0) and have a VLEN of at least 256 bits. It鈥檚 optimized for advanced development boards and already has a list of compatible games and applications.
Some key recommendations:
- The environment is not sandboxed: run only trusted software.
- For Unity and certain games, setting
FELIX86_ALWAYS_TSO=1may be necessary. - If the system has a GPU with x86 drivers, performance can be improved with
FELIX86_ENABLED_THUNKS=glx. - Logs are stored in
/tmp.
By default, the project is quite verbose, but you can suppress output via FELIX86_QUIET=1 or by editing ~/.config/felix86/config.toml.
An educational emulator
The developer, known as OFFTKP, created felix86 as a personal project to learn more about emulation, compiler optimizations, Linux signals, system calls, and CPU architecture. Along the way, they achieved a technical feat: bringing the extensive x86 software ecosystem to an emerging architecture like RISC-V.
felix86 also relies on technologies and libraries such as:
- FEX for compatibility testing,
- Biscuit for RISC-V code generation,
- Zydis for disassembly,
- and modern libraries like
fmt,nlohmann/json, andtoml11.
Community and future prospects
Although still actively developed, felix86 already has a small community on Discord (link here) and its source code is publicly available on GitHub:
馃敆 https://github.com/OFFTKP/felix86
The long-term goal is to run more desktop applications and games, including preliminary support for platforms like Steam. While not all titles work yet, progress looks promising.
RISC-V gains momentum
Initiatives like felix86 strengthen RISC-V鈥檚 position as a viable alternative to the closed ecosystems of x86 and Arm. Although still experimental, felix86 demonstrates that bringing the vast software legacy of PCs to an open, flexible, royalty-free platform is possible.
In the future, projects like felix86 could play a key role in the widespread adoption of RISC-V in personal computers, educational settings, and even Linux gaming.
More info: felix86 on messenger.es

