Skip to content

ARM64 (aarch64) Linux build fails — char signedness + missing OpenVR prebuilt #3346

Description

@scottybo

Summary

Building ALVR on ARM64 Linux (tested on NVIDIA DGX Spark / GB10, Ubuntu 24.04) fails at two points.


Issue 1: char signedness in alvr_server_openvr

error[E0308]: mismatched types
   --> alvr/server_openvr/src/lib.rs:184:28
    |
184 |         m_captureFrameDir: capture_frame_dir,
    |                            ^^^^^^^^^^^^^^^^^ expected `[u8; 1024]`, found `[i8; 1024]`

On ARM64, C char is unsigned by default (u8). The array is declared as [0i8; 1024] but the FFI struct expects [u8; 1024].

Fix: [0i8; 1024][0u8; 1024]. The existing .cast() on the pointer copy already handles both types correctly.


Issue 2: No ARM64 libopenvr_api.so prebuilt

OpenVR ships only linux64 (x86-64) prebuilts. On aarch64 the linker fails:

/usr/bin/ld: skipping incompatible openvr/lib/linux64/libopenvr_api.so
/usr/bin/ld: cannot find -lopenvr_api: No such file or directory

OpenVR builds cleanly for ARM64 from source in ~30 seconds. A separate PR has been filed on ValveSoftware/openvr to add the prebuilt: ValveSoftware/openvr#1924


Environment


Why this matters

ARM64 Linux is increasingly common for GPU workloads (NVIDIA Grace Blackwell, Apple Silicon via Asahi, Ampere cloud instances). ALVR could support these platforms with minimal changes.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions