Skip to content

VNC server only built for x86-64 architecture #626

@yogh333

Description

@yogh333

This is an issue when running speculos on ARM64 architecture and enabling VNC.
Here is the analyse from Claude Sonnet:

The launcher binary runs INSIDE QEMU (line 224: qemu-arm-static), which is an ARM emulator. QEMU can emulate ARM binaries on any architecture, so:

launcher (and the emu library) → Compiled for ARM architecture (as seen in CMakeLists.txt with ARM toolchains) → Runs inside qemu-arm-static → Works on any host architecture (x86-64 or ARM64) because QEMU handles the translation

vnc_server → Compiled for the host architecture (x86-64 in the PyPI build) → Runs directly on the host as a native subprocess (line 42: [subprocess.Popen](vscode-file://vscode-app/Applications/Visual%20Studio%20Code.app/Contents/Resources/app/out/vs/code/electron-browser/workbench/workbench.html)) → Must match the host architecture

That's why:

When you install the x86-64 PyPI wheel on an ARM64 system, the launcher works fine (QEMU handles it)
But vnc_server fails because it's trying to run an x86-64 binary directly on ARM64 hardware
The VNC server needs to be a native binary for the host architecture because it runs as a separate process that communicates with the Python code via pipes/sockets, while the launcher is meant to be ARM code that QEMU emulates.

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