Repository navigation
steam-arm-v2.0
Steam Frame's Client Installer for ARM64 Systems
New in v2.0 :
- GPU family detection
- settings menu
steam-arm-config - PhysX install step skip
- Full uninstaller
- Graphics route per game title with Mali* drivers inside emulation
*if applicable
sudo bash steam-arm-install.sh # settings menu: Install / Setup
sudo bash steam-arm-install.sh --defaults # recommended components, no questions
bash steam-arm-install.sh --detect # GPU family and defaults, installs nothing
Upgrades 1.2 in place: existing client, game library, sign-in, component choices and local
title profiles are kept.
Refreshed interface:
Assets
Tag steam-arm-v2.0. Installer downloads driver archive from this release; when that
address fails, it tries same file name under releases/latest/download.
| File | What it is |
|---|---|
Steam.ARM.2.0.zip |
Installer steam-arm-install.sh (settings menu steam-arm-config included) and documents |
README.md, HOW-IT-WORKS.md, CHANGELOG.md, FEATURES.md, COMPATIBILITY.md, GAMES.md, RESEARCH.md, COMPARISON.md, CREDITS.md |
Documents, also inside zip |
steam-arm-fex-mesa-26.1.8-x86_64-i386.tar.zst |
Driver archive for gpu-in-emulation component: Mesa 26.1.8 (Panfrost, PanVK) built for x86-64 and i386. Installer downloads it when component is selected (default on Mali GPUs) |
steam-arm-fex-mesa-26.1.8-x86_64-i386.tar.zst.sha256 |
SHA-256 of driver archive; installer checks same value |
Highlights
-
GPU family detection.
Example:
Installer reads kernel driver, Mali GPU id, device tree and PCI
vendor of each render node and picks one of 27 GPU families (Mali, Adreno, Apple,
Raspberry Pi, Vivante, PowerVR, AMD, NVIDIA, Intel, virtual GPU), ornoneorunknown.
Family sets default state ofvk-spoof,gpu-in-emulationandglx-lax: Mali
components on by default on Mali GPUs, off elsewhere.--detectprints family, drivers,
page size and defaults without installing;GPU_FAMILY=idsets family by hand. -
Settings menu
steam-arm-config. -
Ten sections: Information, Install / Setup,
Components, Graphics, Games, Controllers, Remote Play, Maintenance, Uninstall,
Help / About. Installer opens it when started in terminal with no options. Subcommands
for scripts:info,report,gfx,gfx-default,profile,compat,components,
help fixing. -
Graphics route per title.
-
Forwarding (OpenGL and Vulkan calls to system Mesa) for
most titles;
Example: Mali drivers inside emulation for Java titles, and for 32-bit titles started
with-vulkanor-force-vulkanon Mali-G610 class and Mali 5th gen. Profile key
gfx=aorgfx=boverrides per title;GFX_DEFAULT=auto|a|bsets default. -
Custom driver archive.
-
Opt-in for advanced users: own Mesa build for
gpu-in-emulationthroughSTEAM_ARM_PROVIDER_TARBALLandSTEAM_ARM_PROVIDER_SHA256.
GitHub source includes build recipetools/build-driver-archive.shand Actions workflow
"Build driver archive". Results depend on Mesa and kernel versions. -
Fixing a gamehelp page. In menu andsteam-arm-config help fixing: launch options
that work, what to avoid, what cannot be fixed, and how to read handler's log lines
(launch option kept,title setting kept). -
PhysX install step. Launcher marks legacy PhysX install step done in title's Proton
prefix; before prefix exists, PhysX installer running over 60 seconds gets SIGTERM(configurable). -
Uninstaller.
--removeremoves everything installer added and restores changed
system settings; installed games stay unless deletion is confirmed by typingDELETE.
--remove --purgealso deletes client folder and root filesystem setup downloaded. -
Controllers. Valve's
steam-devicesrules, plus 241 pads from kernelxpadtable
that Valve's list lacks; Sony and Nintendo pads matched by kernel pad driver.
Graphics route per title
gpu-in-emulation component, on by default on Mali GPUs, provides Mali drivers inside
emulation: x86-64 and i386 Mesa 26.1.8 in second copy of root filesystem, same layout
Valve uses on Steam Frame, about 330 MB extra disk. Root filesystem used for forwarding
stays unchanged. STEAM_ARM_PROVIDER_TARBALL=file points installer at downloaded archive
in place of its download; other steps still need network. When release file answers HTTP
404 at both addresses, setup stops with message naming that file and
STEAM_ARM_PROVIDER_TARBALL.
Custom driver archive, for advanced users: STEAM_ARM_PROVIDER_TARBALL=/path with
STEAM_ARM_PROVIDER_SHA256=<sha256>. Setup checks checksum and layout, prints warning,
and keeps archive across repair and update; --provider-default switches back. With it,
gfx=b and GFX_DEFAULT=b apply on any GPU; automatic rules stay Mali-only, and on
published archive gfx=b on non-Mali GPU means forwarding plus warning.
BYOD(build your own driver):
tools/build-driver-archive.sh (x86-64 Linux PC, about 25 GB disk, network, no root)
Other changes
- Settings menu: built-in full-screen screens with textured background and light dialog
box, falling back todialog,whiptailor plain prompts
(STEAM_ARM_DIALOG=builtin|dialog|whiptail|read); cursor returns to item chosen last;
setup summary leaves out download line when client is present. - Launcher starts client again when it exits after applying its own update, at most
twice. - Launch handler log names values in effect for Unity and Godot (renderer, GL version);
onlyFEX_APP_CONFIGlaunch option counts as user choice for Multiblock, so Steam's
per-title FEX setting does not stop Java 21+ rule. GPU_FAMILY=<unknown id> --detectwarns, lists valid ids and exits with status 0;
install still stops.page-sizecomponent listed only on Raspberry Pi 5 class boards, or on Pi with page
size other than 4K.- Unfinished x86 root filesystem extraction from stopped earlier run discarded, or
extracted again from downloaded.sqsh. --password-stdin: password of account setup creates, from standard input; never
printed or logged.- Package-install guard:
apt,apt-getanddpkginside x86 emulation refuse and
change nothing, since FEX writes reach host system; original kept as
<tool>.steam-arm-real. --removealso removes settings menu and installer copy, restores Valve's streaming
client and package tools of root filesystem, turns lingering off only when setup turned
it on, saves game profiles to/var/backups, and printssudo userdel -r <name>for
account setup created..debremoval prints how to remove installed client.- Security hardening: writes in game account's home done as that account, client folder
path validated, sudo rule checked withvisudo, Valve's files and settings edited
through new file renamed over old one, temporary files removed on exit, client package
and driver archive checked against checksums. --replace-otherretires other variant of this installer before setup: system files to
/var/backups/steam-arm-replaced-<date>.tar, files from its account's home to
steam-arm-replaced-<date>-<user>.tar, restored with
sudo -u <user> tar -xpf <archive> -C /.- Setup refuses to run twice at once, and install, repair and component changes refuse
while Steam ARM runs for game account (Steam is running for '<user>').steam-arm
refuses to run as root. --removedeletes client folder only when it holds marker.steam-arm-client, which
setup writes from 2.0 on, only into folder that was new, empty, already marked or
earlier Steam ARM client folder; folder withsteamappsorubuntu12_32at top level
is refused, older client folder without marker kept./dev/shmline goes out of
/etc/fstabonly when setup added it; kept line is reported.- GPU components follow GPU family change, except those set by hand.
steam-arm-compatmaprefuses while Steam runs and on bad input, and keeps first
original asconfig.vdf.bak-steam-arm.glx-laxrebuilds itself after every Mesa upgrade through apt hook.- FEX tool 2609 and later needs no
ThunksDB.jsonedit; FEX logging off. - First client download from Valve's stable ARM64 channel;
publicbetano longer written. - Fixed: GLX copy and Vulkan layer enabled when deselected; sudo rule written without
pad-xbox; account creation on systems withoutrendergroup; no notice when account
gained groups; Vulkan titles with Steam overlay hung at start when overlay layer was
registered twice;steam-armrun from account other than setup account, or before setup
finished, printed file errors instead of naming fix.
Known issues
- Direct3D 12, Unreal Engine 5, Unreal Engine 4 Direct3D 11 and Unity HDRP titles do not
run on Mali: PanVK lacks features they need. Details inCOMPATIBILITY.md. - 32-bit Linux title that includes DXVK Native: device on Mali, title then stops at loading
screen, as with its OpenGL renderer. - Godot 3 titles need profile
env=MESA_GL_VERSION_OVERRIDE=3.3;MESA_GLSL_VERSION_OVERRIDE=330. - Client can stay on "Starting launch" or black "Abort game" screen after title exits;
exiting client and starting it again clears it. - Proton ARM64 titles: MangoHud and Steam overlay each crash title at start.
- Remote Play: Shift+Tab goes to host PC; use controller Steam button.
Full list: CHANGELOG.md.
Test device: RK3588 board with Mali-G610 GPU.
This project is not affiliated with, endorsed by or sponsored by Valve Corporation. Steam,
Proton, Steam Deck and Steam Frame are trademarks of Valve Corporation.