The KAGAMI mark КАГАМИ
kagami.bg/academy · lesson · machine-readable viewUPDATED 2026-10-03
IDENTITY
module
GX10-A17 · Games on an ARM64 Linux box: three layers of translation (FEX, Proton, remote stream)
series
GX10 (local AI server class: NVIDIA GB10, e.g. ASUS Ascent GX10 / DGX Spark)
level
Intermediate
duration
~15 min
prerequisites
An ARM64 Linux machine with a supported GPU driver, a terminal, and games you have legitimately bought or been given a licence for
trust_label
UPDATED 2026-10-03 · statements about FEX, Proton and the Steam package checked against the public FEX-Emu/FEX README, the ValveSoftware/Proton repository page and the Snap Store listing on 2026-10-03 · commands NOT run by the authors for this edition (not run) · no GB10-class machine involved, so no TESTED label · no VERIFIED label · no performance numbers are given because none were measured
scope_note
Legitimately obtained games only. The lesson contains no advice for circumventing licences, copy protection (DRM) or anti-cheat systems. Product names are used descriptively; the owners keep their trademarks.
language
human view: bg · english edition: /en/academy/gx10/ (same file name)
previous / next
GX10-A16 (service vs process) / GX10 series index
PURPOSE

An ARM64 AI box with a strong GPU can run some x86 Windows games only through stacked translation layers: FEX translates x86 and x86-64 instructions to ARM64, Proton (a Wine-based compatibility tool for Steam Play) translates Windows calls to Linux ones, and, when the desktop is reached remotely, a stream turns rendered frames into video. Each layer is paid for in a different currency: FEX in CPU time, Proton in compatibility, the stream in bandwidth and, with software encoding, in CPU again. The module teaches the pre-flight check that decides whether the GPU is used at all (renderer must name the GPU, not llvmpipe), where the official FEX instructions live, one safety rule about driver installers built for another architecture, and why temperature limits and neighbouring services outrank any frame-rate ambition. The general lesson: emulation moves the bottleneck to the CPU, and a remote session can silently cap what the GPU delivers.

KEY CONCEPTS
COMMANDS / PATHS
CHECKLIST
NEXT MODULE

GX10 series index: kagami.bg/en/academy/gx10/ (previous: GX10-A16 service vs process) · offer: Quick experiment (kagami.bg/stalbata/)

SOURCES
TAGS
gx10emulationFEXProtonARM64remote-desktopthermal
UPDATED · 03.10.2026

Games on an ARM Machine: Three Layers of Translation

A machine of the NVIDIA GB10 class is ARM64, while most games are written for x86 and Windows. Three independent translations sit between them — and each is paid for in a different currency. This lesson does not promise "console-like play": it teaches you which layer costs what, how to check whether the GPU is used at all, and why heat and neighbouring services decide more than the settings menu.

⏱ ~15 min Intermediate GX10 ARM64 · Linux Emulation · resources
FEX · Proton (on the server)🔒 local Game platform and games (third parties)🌐 global
⚖️
Legitimately acquired games only
Play only games you have bought or hold a licence for, and follow the terms of the platform and the publisher. This lesson does not and will not contain advice for circumventing licences, copyright protection (DRM) or anti-cheat systems. A game that does not work in this environment is simply not played here.
🔄
UPDATED · 03.10.2026 — what changed
The lesson was generalised and checked against the official documentation. Statements about FEX were checked against the project's README, those about Proton against Valve's GitHub page, and those about the Steam package against the Snap Store; the pages were reviewed on 03.10.2026. We added: the warning about legitimately acquired games, FEX's requirements (ARMv8.0-a, RootFS), a note that some games with kernel-level protection do not run, and a note on trademarks. We removed: the names of internal services, the specific thresholds of our own machine, details of internal folders and frame comparisons — they were not measured publicly, so we do not present them as fact. There are no frames-per-second numbers; we did not measure them.
⚠️
What we have not run ourselves
For this edition we did not execute the commands — not run. We did not install FEX, Proton or Steam on a machine of the GB10 class, so there is no "TESTED" label. We did not check whether the steam package from the Snap Store is available for arm64. We did not measure performance. The licence, terms and compatibility of every individual game are the responsibility of the player and the publisher.
™️
About trademarks
Steam and Proton are products of Valve. FEX is an open-source project (MIT licence). NVIDIA, ARM, Linux, Windows and the names of games are trademarks of their respective owners. We mention them descriptively; KAGAMI is not affiliated with or endorsed by them.

01What you'll learn

02Before you start

💡
Why it matters: the bottleneck moves
On an ordinary PC the bottleneck is often the GPU. Here the GPU is strong while the translation of instructions loads the processor. Stutter in a busy scene with low GPU load is the typical signature of translation.

03Steps

  1. Understand the three layers and what each costs

    Why: no layer "speeds up" anything — each one translates and takes its toll. If you know which layer pays what, you know where to look when something limps.

    LayerWhat it translatesThe cost (in principle)
    FEXx86 and x86-64 instructions into ARM64CPU time. Games that load the CPU suffer the most.
    ProtonWindows calls into Linux ones (a compatibility tool based on Wine)Compatibility. Some games, especially those with protection at the Windows kernel level, may not start.
    Remote desktopRendered frames into a video streamNetwork and, with software encoding, CPU again.

    According to the FEX README the project "can be used alongside Wine/Proton to play Windows games" — that is the reason for the two layers stacked on top of each other. The table describes the principle, not measured values.

  2. Check what the machine is and who draws the session

    Why: when the machine is reached remotely with no monitor attached, the session sometimes draws with the CPU through Mesa's llvmpipe software rasteriser. The GPU then sits unused and the game is a slideshow — regardless of its settings. So the first command is a check, not an install.

    bash · on the server
    # architecture — expect aarch64
    uname -m
    # CPU features
    lscpu
    
    # who draws the session
    sudo apt install -y mesa-utils
    glxinfo -B | grep -i renderer
    
    # is there a graphical session and is the GPU in use
    echo $DISPLAY
    nvidia-smi
    🛑
    Rule: read the "renderer" line, then install
    It names the GPU → go on. It says llvmpipe → the session is software-rendered and that is fixed first (for example an attached screen or a device that imitates a monitor), otherwise the whole install is wasted effort.
    ⚠️
    Trap: a missing command ≠ a missing GPU
    If glxinfo is not installed, the output is "command not found" — that is about the tool, not the machine. Install the package and repeat before concluding anything. ⚠️ On machines with shared memory some fields of nvidia-smi may show "N/A" — we have not checked this ourselves.
  3. Install FEX from its official instructions

    Why: the project moves fast and the exact steps change; so the lesson does not copy scripts but points to the primary source and tells you what to check.

    • FEX "allows you to run x86 applications on ARM64 Linux devices" (README, 03.10.2026) and is MIT licensed.
    • Requirements: ARMv8.0-a or newer hardware, at least with the FEAT_FP and FEAT_CRC32 extensions — see lscpu. An x86-64 RootFS (a file system with x86 libraries) is also needed, downloaded with the FEXRootFSFetcher tool.
    • Tested distributions according to the README: Arch, Fedora, openSUSE, Ubuntu 22.04 / 24.04 / 24.10 / 25.04. Others are "likely to work".
    • For Ubuntu the README gives a "quick start" with an install script. Download the script, read it, and only then run it — do not run someone else's code blindly through a pipe.

    FEX can forward calls to the machine's own libraries (such as OpenGL or Vulkan) to reduce the cost of emulation, and it has per-application settings, including a graphical program, FEXConfig. Some settings trade accuracy for speed. ⚠️ We have not checked their effect on GB10 — change one setting at a time, write down what you changed and how to undo it.

  4. The game client and Proton

    Proton is a "compatibility tool for Steam Play based on Wine and additional components" (Valve's page, 03.10.2026). In practice this means:

    • Install the client as its publisher describes for your distribution. The Snap Store has a package named steam (sudo snap install steam). ⚠️ Whether it is available for arm64 is not confirmed; check snapcraft.io/steam.
    • In the client's settings enable the compatibility layer for the titles you own, and for a specific game choose its version in the game's properties. A pinned version matters because a new release can break what already runs.
    • If a game does not start, check its compatibility reports and its terms. Do not try to "break" its protections — that is not the subject of this lesson and may violate the licence.
  5. The trap: a driver for another architecture on an ARM machine

    Why: while reading guides for games on x86 you will meet an installer for an x86_64 driver and advice to "run it". On an ARM64 host that is dangerous.

    🛑
    Rule: a driver for another architecture is not run on the ARM host
    The driver on an ARM64 machine comes from the distribution's or vendor's packages for this platform and is updated only that way. An installer built for another architecture does nothing at best, and at worst can remove the working driver and leave the machine without a GPU. When an installer announces it will stop services — stop and check. An interrupted step is repeated in minutes; a driver rolled back costs an evening.
    bash · on the server
    # is the driver intact (read-only, changes nothing)
    nvidia-smi
    dpkg -l | grep -i nvidia
  6. The pipe, the heat and the neighbours

    Three things decide what you actually experience — and none of them is in the game's menu.

    The pipe

    The status of the remote session tells the truth: resolution, frame rate and whether encoding is software. Software encoding is paid for by the same CPU that is already translating the game. Raise quality and resolution to something usable and look for hardware encoding. For real play use a tool built for game streaming, not for desktops.

    ⚠️
    Trap: counting the wrong frames
    The frames in the window are the stream's, not the machine's. Comparisons and conclusions come only from the game's own counter or from a benchmark.

    The heat

    In the NVIDIA GB10 class the processor and the GPU are on one chip and are cooled together, so a game can heat more than a purely computational job. Follow the guidance of your machine's maker and set your own limit for temperature and load — do not wait for the chip to throttle itself. The strongest lever is a frame cap; the second is lower resolution; the third is cooling the room. Temperatures are read with a tool (for example nvidia-smi), not by feel.

    The neighbours

    The machine is not a console — models and services run on it. Before a long session look at what holds the GPU and leave awake only what is needed.

    🛑
    Rule: the game is a guest, not the owner
    Nothing in production is stopped, unloaded or reconfigured for a game. If the resources are not there, the session gets shorter — someone else's resources do not get freed.

04Check

Quiz

1. The "renderer" check shows llvmpipe. What does it mean?

2. A guide says to run an installer for an x86_64 driver on the ARM machine. The right reaction?

3. The game stutters while GPU load is low. The most likely cause?

4. The temperature exceeds the limit you set while you play. What do you do?

05What's next

06Sources

All pages were reviewed on 03.10.2026.

  1. FEX-Emu/FEX — README — what FEX is, requirements, tested distributions, quick start, licence · FEX-Emu wiki.
  2. ValveSoftware/Proton — a compatibility tool for Steam Play based on Wine.
  3. Steam in the Snap Store — an available steam package; availability for arm64 — check there.
  4. Mesa · llvmpipe — the software rasteriser used when there is no hardware rendering.
  5. NVIDIA · nvidia-smi — monitoring the state of the GPU.