I'm using an ARM64 Linux system and want to run Windows applications through Wine or Bottles. What setup works best? I found an ARM64 version of Bottles, but I'm unsure whether I also need FEX, Box64, or another x86 emulation layer, especially for applications compiled for x86 or x86_64.
3 Answers
Try combining an ARM64 Wine or Bottles installation with FEX for x86 or x86_64 programs. FEX is designed to translate those instruction sets on ARM and is used for running some x86 software and games. You’ll still need to configure the Wine prefix and graphics components correctly, and not every application will work reliably.
Box64 is another option worth testing. The basic setup is ARM64 Wine for Windows compatibility plus FEX or Box64 when the Windows program itself targets x86 or x86_64. If the program has a native Windows ARM build, use that instead because it avoids the extra emulation layer.
Wine itself translates Windows API calls, but it does not translate x86 or x86_64 CPU instructions into ARM instructions. On ARM64, Windows applications compiled for ARM may work with an ARM-compatible Wine build, while x86 and x86_64 applications also need an emulator or translation layer such as FEX or Box64. Performance and compatibility will vary by application.

That makes sense. I tried an ARM64 Bottles setup, but the application either crashes or opens to a black screen, so I probably need to configure FEX as well.