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)
LanguagePython
LicenseMIT
Created2026-09-26 (27d ago)
Last push2d ago
Watchers2
OwnerUser
Links
- GitHub: github.com/DaVarga/bs-arm64
- Releases Β· Issues Β· Hacker News mentions
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