fix: ARM64 (aarch64) Linux build support - #3345
Open
scottybo wants to merge 1 commit into
Open
Conversation
Two fixes to allow ALVR to build natively on ARM64 Linux:
1. Fix char signedness in server_openvr (aarch64 uses unsigned char / u8)
- alvr/server_openvr/src/lib.rs: [0i8; 1024] -> [0u8; 1024] for
capture_frame_dir, which is a C char array. On ARM64 'char' is
unsigned by default, causing a type mismatch at compile time.
2. Document OpenVR ARM64 build requirement in build.rs
- OpenVR does not ship an ARM64 Linux prebuilt; added comment in
build.rs explaining how to build libopenvr_api.so from source.
3. Add wiki/Building-on-Linux-ARM64-(aarch64).md
- Step-by-step guide for building on aarch64 (tested on NVIDIA
DGX Spark / GB10 with Ubuntu 24.04 and CUDA/NVENC).
- FFmpeg NVENC encoders (h264/hevc/av1_nvenc) compile and work.
- alvr_dashboard and driver_alvr_server.so confirmed aarch64 ELF.
Tested-on: NVIDIA DGX Spark (GB10 / Blackwell), Ubuntu 24.04, aarch64
This was referenced Jul 31, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Fixes two issues that prevent ALVR from building natively on ARM64 Linux, and adds a wiki guide for aarch64 builds.
Tested on NVIDIA DGX Spark (GB10 / Blackwell, aarch64) running Ubuntu 24.04.
Fix 1: char signedness in
alvr_server_openvrOn ARM64, C
charis unsigned by default (u8), unlike x86-64 where it is signed (i8). This caused a compile-time type mismatch:Fix: Change
[0i8; 1024]→[0u8; 1024]. The existing.cast()on the pointer copy already handles both types correctly.Fix 2 + Docs: OpenVR ARM64 build requirement
OpenVR does not ship a prebuilt
libopenvr_api.sofor Linux ARM64. Added:build.rsexplaining how to build it from source (compiles in ~30s)Building-on-Linux-ARM64-(aarch64).mdBuild results on DGX Spark
bin/alvr_dashboardlib64/alvr/bin/linux64/driver_alvr_server.soNote: SteamVR does not run on ARM64 Linux, which limits streaming to non-SteamVR workflows. Happy to follow up with an issue/PR on standalone OpenXR server mode if that would be useful.