explaingit

ptitseb/box86

3,771CAudience · developerComplexity · 4/5Setup · hard

TLDR

Box86 lets you run x86 Linux programs, including games, on ARM devices like the Raspberry Pi by translating x86 instructions to ARM at runtime.

Mindmap

mindmap
  root((repo))
    What it does
      x86 to ARM translation
      DynaRec recompiler
      Game compatibility
    Tech stack
      C language
      ARM Linux
      OpenGL SDL
    Use cases
      Run PC games on Pi
      ARM compatibility layer
      Retro game setups
    Audience
      Hobbyist makers
      Raspberry Pi users
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Run x86 Linux games like FTL or UNDERTALE on a Raspberry Pi

USE CASE 2

Use x86-compiled software on an ARM single-board computer without recompiling it

USE CASE 3

Set up a retro gaming station on ARM hardware using x86 game binaries

Tech stack

CARMLinuxOpenGLSDL

Getting it running

Difficulty · hard Time to first run · 1h+

Requires a 32-bit ARM toolchain and a 32-bit userspace, 64-bit-only systems will not compile or run it without extra setup.

In plain English

Box86 is a compatibility tool that lets you run x86 Linux programs on ARM-based Linux devices. ARM is the processor type found in boards like the Raspberry Pi, many single-board computers, and some Android devices. Most desktop Linux software is compiled for x86 processors, so without Box86 those programs simply will not run on ARM hardware. The tool works by translating x86 instructions into ARM instructions at runtime. It includes a dynamic recompiler, called DynaRec, that converts code on the fly and provides a five-to-ten times speed improvement over pure line-by-line interpretation. This makes real applications, including games, run at usable speeds on devices like the Raspberry Pi. Box86 takes a practical shortcut compared to full system emulators: instead of emulating all the system libraries too, it reuses the native versions already installed on your ARM device, such as libc, SDL, and OpenGL. This keeps compatibility high and reduces overhead. However, it means you need a 32-bit ARM environment, since Box86 only targets 32-bit x86 programs. On a 64-bit ARM system you need a 32-bit userspace layer installed separately. Many games work without any tweaking: WorldOfGoo, FTL, UNDERTALE, and various Unity3D and GameMaker titles are listed as working examples. Games that need 3D graphics may also require a separate library called gl4es if your ARM board only exposes OpenGL ES rather than full OpenGL. Building Box86 requires a 32-bit ARM toolchain, which means a standard 64-bit-only compiler will not work. The README covers build steps for Raspberry Pi and several other popular boards. There is also a companion project called Box64 for running 64-bit x86 programs on 64-bit ARM systems.

Copy-paste prompts

Prompt 1
How do I install Box86 on a Raspberry Pi 4 and run an x86 Linux game on it?
Prompt 2
What do I need to set up to run Unity3D x86 Linux games on an ARM device using Box86?
Prompt 3
Box86 build steps for a 64-bit ARM device running Debian with a 32-bit armhf userspace
Prompt 4
How does Box86 DynaRec work and why do I need a 32-bit toolchain to compile it?
Open on GitHub → Explain another repo

← ptitseb on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.