# Tutorial: Running QNN HTP on x86 Using QEMU Emulation

Warning

**Hexagon QEMU is no longer packaged in recent Hexagon SDK releases.** This backend
is only available to users with a pre-installed copy of **Hexagon SDK v5.0.0.0**.
Other SDK versions are not guaranteed to work. Hexagon QEMU will be reintroduced at
a later date.

This backend is provided as **Beta quality** with the following limitations:

- VTCM size is restricted to **4 MB** on the QEMU platform.
- Emulation is provided for **HTP v68 only**.
- The following QNN APIs are **not supported**: `QnnMem`, `QnnSignal`, custom op
package registration.

The QNN HTP QEMU backend allows running HTP inference on a Linux x86\_64 host using
Hexagon QEMU emulation — no physical automotive hardware required.

- [Prerequisites](https://docs.qualcomm.com/doc/80-63442-10/topic/htp_auto_qemu.html#prerequisites)
- [Setup and Execution](https://docs.qualcomm.com/doc/80-63442-10/topic/htp_auto_qemu.html#setup-and-execution)
- [Convert Models](https://docs.qualcomm.com/doc/80-63442-10/topic/htp_auto_qemu.html#convert-models)
- [Execute Neural Network using HTP QEMU](https://docs.qualcomm.com/doc/80-63442-10/topic/htp_auto_qemu.html#execute-neural-network-using-htp-qemu)
- [Precision](https://docs.qualcomm.com/doc/80-63442-10/topic/htp_auto_qemu.html#precision)
- [Limitations](https://docs.qualcomm.com/doc/80-63442-10/topic/htp_auto_qemu.html#limitations)

## [Prerequisites](https://docs.qualcomm.com/doc/80-63442-10/topic/htp_auto_qemu.html#id1)

- Hexagon SDK **v5.0.0.0** installed (available from the
[Qualcomm Hexagon SDK tools page](https://developer.qualcomm.com/software/hexagon-dsp-sdk/tools)).
- QNN SDK environment set up per the Setup guide.

## [Setup and Execution](https://docs.qualcomm.com/doc/80-63442-10/topic/htp_auto_qemu.html#id2)

1. Source your Hexagon SDK:

source <Hexagon_SDK_Install_Root>/setup_sdk_env.source
        Copy to clipboard

    The SDK setup script exports several environment variables referenced in the steps below.
2. Add the Hexagon tools bin location to your `PATH`:

export PATH=${DEFAULT_HEXAGON_TOOLS_ROOT}/Tools/bin/:${PATH}
        Copy to clipboard
3. Change to your QNN SDK root directory:

cd ${QNN_SDK_ROOT}
        Copy to clipboard
4. Source the QNN SDK:

source ./bin/envsetup.sh
        Copy to clipboard
5. Provide the path to the QEMU driver:

export QNN_DSP_EMULATOR_DRIVER=${QNN_SDK_ROOT}/lib/hexagon-v68/unsigned/
        Copy to clipboard
6. Provide arguments to QEMU:

export QNN_HTP_QEMU_ARGS='-display none -monitor none -m 8G -no-reboot \
          -M V68N_1024 \
          -kernel ${HEXAGON_SDK_ROOT}/rtos/qurt/computev68/sdksim_bin/runelf.pbn \
          -append "${HEXAGON_SDK_ROOT}/libs/run_main_on_hexagon/ship/hexagon_${DEFAULT_TOOLS_VARIANT}_v68/run_main_on_hexagon_sim \
            -- ${QNN_DSP_EMULATOR_DRIVER}/libQnnHtpV68QemuDriver.so ${HTP_EMU_PIPE_FD}" \
          -cpu v67,sched-limit=on,usefs=${DEFAULT_HEXAGON_TOOLS_ROOT}/Tools/target/hexagon/lib/v68/G0/pic/'
        Copy to clipboard

## [Convert Models](https://docs.qualcomm.com/doc/80-63442-10/topic/htp_auto_qemu.html#id3)

Follow Tutorial #2: Running QNN HTP on SA-series
up to the point where you have a `*.serialized.bin` context binary. For `qnn-model-lib-generator`,
only the x86 libraries are needed. Use the `-t` option as needed (e.g., if NDK is not available).

## [Execute Neural Network using HTP QEMU](https://docs.qualcomm.com/doc/80-63442-10/topic/htp_auto_qemu.html#id4)

Once you have prepared a model following the Convert Models steps above:

qnn-net-run --backend ${QNN_SDK_ROOT}/lib/x86_64-linux-clang/libQnnHtpQemu.so \
        --input_list <input_list> \
        --retrieve_context <serialized_bin> \
        --profiling_level <profiling_level>
    Copy to clipboard

## [Precision](https://docs.qualcomm.com/doc/80-63442-10/topic/htp_auto_qemu.html#id5)

HTP QEMU supports inference with quantized 8-bit networks.

## [Limitations](https://docs.qualcomm.com/doc/80-63442-10/topic/htp_auto_qemu.html#id6)

- VTCM size is restricted to **4 MB** on the QEMU platform.
- Emulation is provided for **HTP v68 only**.
- The following QNN APIs are **not supported**:

    - `QnnMem`
    - `QnnSignal`
    - Custom op package registration

Last Published: Jun 04, 2026

[Previous Topic
Tutorial: Running QNN on SA8797 QC Linux PVM (HTP and LPAI Backends)](https://docs.qualcomm.com/bundle/publicresource/80-63442-10/topics/htp_auto_qclinux.md) [Next Topic
Tutorial: Running QNN HTP with Custom Ops on SA-series](https://docs.qualcomm.com/bundle/publicresource/80-63442-10/topics/htp_auto_tutorial_3.md)