Skip to content

Linux ARM64 (aarch64) Support  #169

Description

@rd-chichung-liu

Platform

Linux

ProxyBridge Version

3.2.0

OS and Version

Ubuntu 26.04 (aarch64)

Documentation

Code Review

  • I have gone through the code page

Describe the Bug

When installing ProxyBridge on an ARM64 (aarch64) Ubuntu system using the official quick-install script, the installer places an x86_64 binary at /usr/local/bin/ProxyBridge instead of the ARM64 build. Running the binary fails because the kernel cannot execute a mismatched-architecture ELF file, and the shell falls back to interpreting the binary as a shell script, producing a confusing, unrelated error message.

Environment

Host: macOS (Apple Silicon)
VM: Lima VM running Ubuntu (ARM64)
VM architecture (uname -m): aarch64
Installed binary architecture (file output): ELF 64-bit LSB pie executable, x86-64
ProxyBridge version: 3.2.0

Steps to Reproduce

Inside an ARM64 Ubuntu VM (Lima), run the quick-install script:

curl -Lo deploy.sh https://raw.githubusercontent.com/InterceptSuite/ProxyBridge/refs/heads/master/Linux/deploy.sh && sudo bash deploy.sh

Try to run ProxyBridge:

sudo ProxyBridge --rule "::*:TCP:PROXY"

Expected Behavior

ProxyBridge should detect the host architecture (aarch64) and download/install the matching ARM64 binary, or deploy.sh should at least warn if no matching architecture asset is found.

Actual Behavior

The command fails with:
/usr/local/bin/ProxyBridge: 1: Syntax error: "(" unexpected

This error is misleading — it looks like a shell scripting issue, but is actually caused by the kernel rejecting the x86_64 ELF binary on an aarch64 system, with the shell then misinterpreting the binary's raw bytes as a script.

Diagnosis

uname -m
aarch64

file /usr/local/bin/ProxyBridge
/usr/local/bin/ProxyBridge: ELF 64-bit LSB pie executable, x86-64, ...

Confirms deploy.sh (or the underlying install logic) selected the wrong architecture's release asset.

Suggested Fix

deploy.sh should run uname -m and select the release asset matching the detected architecture (aarch64 → arm64 build, x86_64 → amd64 build).
Alternatively, print an explicit error during installation if no matching architecture asset is available, rather than silently installing the wrong binary.

Additional Context

No response

Metadata

Metadata

Assignees

Labels

Fields

No fields configured for Feature.

Projects

Status
Backlog

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions