Skip to content

hexagon: build and run on the Qualcomm Dragonwing IQ-10 (Linux) - #68

Merged
khanhnd61-vr merged 3 commits into
VinRobotics:mainfrom
thanhdq1o2:hexagon-linux-build
Nov 2, 2026
Merged

khanhnd61-vr merged 3 commits into
VinRobotics:mainfrom
thanhdq1o2:hexagon-linux-build

Conversation

@thanhdq1o2

@thanhdq1o2 thanhdq1o2 commented Oct 29, 2026 •

Copy link
Copy Markdown
Contributor

Adds a build script and docs for running vla.cpp on the Hexagon NPU of a Qualcomm Dragonwing IQ-10
board under Linux. Follow-up to #67, which fixed the runtime abort; this makes the setup reproducible.

What changes

  • scripts/build_linux_hexagon.sh (new): cross-builds vla.cpp, vla-server included, in
    Qualcomm's toolchain container, and packages the binaries and HTP skels.
  • docs/backend/hexagon.md: a Linux (IQ-10) section with build, skel install, run and results.
  • CHANGELOG.md: one Unreleased entry.

Risk

  • No source code changes; other backends and existing builds are unaffected.
  • The script only writes inside its build directory and does not touch the board.

Tested on a Dragonwing IQ-10 (Linux, Hexagon v81, llama.cpp b11223) with the published vrfai/* GGUFs:

  • The script builds with and without vla-server, and the binaries run on the board.
  • vla-server serves SmolVLA to eval/client/vla_cpp_client.py.
  • vla_predict_check against CPU F32 (bar 2.9e-3):
Model max |Δ|
SmolVLA 7.2e-4
π0.5 3.6e-4
Evo-1 4.1e-4
GR00T N1.5 1.7e-3
GR00T N1.6 1.3e-3
GR00T N1.7 5.4e-3

Not in this PR

  • GR00T N1.7 is above the bar; a fix will follow separately.
  • The other archs have not been run on the board yet.

The Hexagon SDK has no arm64 Linux build, so on a Snapdragon Linux board
such as IQ-10 vla.cpp is cross-built in Qualcomm's toolchain container.
build_linux_snapdragon.sh runs that build and packages bin/ and lib/
with the HTP skels. With vla-server it installs Debian's arm64 protobuf
and ZeroMQ dev packages in the container (multiarch); --no-server skips
them. HTP_SKEL_POST runs a command on each skel, for boards that load
only processed skels.

Verified on IQ-10 (Linux, Hexagon v81): vla-server serves SmolVLA to
eval/client/vla_cpp_client.py, and vla_predict_check matches the CPU
F32 reference to 7.2e-4.
Document the IQ-10 under Linux: cross-building with
scripts/build_linux_snapdragon.sh, installing the HTP skel (FastRPC
there ignores ADSP_LIBRARY_PATH and loads only processed skels from
/vendor/dsp/cdspN), running vla-server, the CONCAT refusal, and the
fidelity of the six archs run so far. Add a CHANGELOG entry.
The IQ-10 is a Qualcomm Dragonwing part. Rename
scripts/build_linux_snapdragon.sh to build_linux_hexagon.sh, since it
targets Qualcomm Linux boards with a Hexagon NPU, and its
SNAPDRAGON_IMAGE override to TOOLCHAIN_IMAGE. Fix the board name in the
script header, docs/backend/hexagon.md and CHANGELOG. The toolchain
image name and the Snapdragon X laptop references are unchanged.
@thanhdq1o2 thanhdq1o2 changed the title hexagon: build and run on Snapdragon Linux (IQ-10) hexagon: build and run on the Qualcomm Dragonwing IQ-10 (Linux) Nov 2, 2026
thanhdq1o2 added a commit to thanhdq1o2/vla.cpp that referenced this pull request Nov 2, 2026
Bring in the Dragonwing IQ-10 naming fix and the script rename to
build_linux_hexagon.sh. The CHANGELOG IQ-10 entry keeps this branch's
text with the new names.
@khanhnd61-vr
khanhnd61-vr merged commit 2b41e13 into VinRobotics:main Nov 2, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants