πŸ“ˆ GH Trending Explorer 🎲 Surprise me

← all repos

DaVarga / bs-arm64

git clone https://github.com/DaVarga/bs-arm64.git v0.4.0 Β· 2d ago

Unofficial native ARM64 Beat Saber for the Steam Frame / ARM64 Proton: no FEX, no frame drops.

+0
stars, 24h Β· #37,044
+~0
stars, 7 days Β· #42,515
+127
stars, 30 days Β· #5,805
127
β˜… total
6
forks Β· 5 open issues

Star history (as recorded here)

2026-10-20 Β· 127 β˜… 2026-10-23 Β· 127 β˜…
LanguagePython
LicenseMIT
Created2026-09-26 (27d ago)
Last push2d ago
Watchers2
OwnerUser

Links

README excerpt
# bs-arm64: native ARM64 Beat Saber on Proton
> [!NOTE]
> The easiest way to get this running on your Frame is the Frame-compatible BSManager fork, which
> installs it with one click.
> **How to install on the Steam Frame**
Run Beat Saber as a **native Windows ARM64** program on ARM64 Linux under Proton, tested on the
**Steam Frame**, instead of emulating the x64 build with FEX. Every game version on Unity 6000.0.40f1
works, which means 1.40.9 through 1.44.1 (see Game versions).
The game's engine and C# code both run natively. Only Proton's small `steam.exe` launcher stays x64.
## Results on the Steam Frame
Beat Saber 1.44.1, the same replay (STARLIGHT, Expert+) five times on each build, 2160 Γ— 2160 per eye
at 120 Hz, with reduced graphics settings (anti-aliasing 2Γ—, Bloom, mirror, smoke and Screen
Distortion off):
| | Native ARM64 | x64 via FEX |
|---|---|---|
| Frame rate | ~120 fps | ~104 fps |
| Reprojected frames (SteamVR) | 1.0 % | 30.9 % |
| App CPU time per frame | 4.2 ms | 8.4 ms |
| System power | 14.4 W | 19.2 W |
With the game's default graphics settings the GPU is the limit on both builds (~39 fps each), so lower
those first.
## Tips
- Turn off **Adaptive SFX** (Solo β†’ song selection β†’ **Player Settings** tab). On ARM64 its loudness
 measurement takes most of the audio thread; with it off, 30 % fewer slow frames. Hit sounds then no
 longer adapt to the song's loudness.
- Turn off **Screen Distortion** in the graphics settings. It costs a lot of GPU time on the Frame.
## Foveated rendering (optional)
bs-arm64 uses SteamVR's own foveated rendering, the same one Steam turns on for the x64 game. Turn on
Beat Saber's **Properties** β†’ **Performance** β†’ **Foveated Rendering** in Steam; `bs-arm64.sh launch`
follows it (`--foveation` / `--no-foveation` override it). With the Frame's eye tracking, the sharp
area follows your eyes. Steam's default strength is mild; `FDM_DEBUG=enable,hi` saves more GPU time.
AssetBundleLoadingTools' **Enable Multi-Pass Rendering** turns foveated rendering off. Check it when
you copy `UserData` over from a Windows install.
## What works
| Area | Status |
|---|---|
| Menu, maps (official), audio, visuals | βœ… |
| Steam (login, ownership, platform init, online services) | βœ… |
| OpenXR on SteamVR, controllers, recenter | βœ… |
| Mods: BSIPA 4.3.7 + Harmony (tested: SiraUtil, BSML, SongCore, BS Utils) | βœ… on 1.41.1 and later |
| Burst-compiled code | ⚠️ runs as managed code (no ARM64 Burst library) |
| LIV mixed-reality capture | ❌ not available |
## Game versions
The native runtime depends on the game's Unity engine, not on its version. Tested on the Frame, to the
main menu with Steam and VR:
| Beat Saber | Without mods | With mods |
|---|---|---|
| 1.40.8 and older | ❌ Unity 2022.3.33f1, the installer refuses it | |
| 1.40.9 – 1.40.13 | βœ… | BeatMods has no mods for these versions |
| 1.41.1 – 1.44.1 | βœ… | βœ… |
## How it works
The ARM64 player comes from the same Unity version the game was built with. Every native piece