# Convert to QNN for Linux Host on DSP Backend

Note

This is **Part 3** of the Convert to QNN tutorial for Linux host machines. If you have not completed Part 2, please do so [here](https://docs.qualcomm.com/doc/80-63442-10/topic/tutorial_convert_execute_cnn_model.html).

Warning

DSP processors require quantized models instead of full precision models. If you do not have a quantized model, please follow Step 2 of the CNN to QNN tutorial to build one.

## Transferring over all relevant files

1. On the target device, open a terminal and make a destination folder by running:

mount -o remount,rw /
        mkdir -p /data/local/tmp
        cd /data/local/tmp
        ln -s /etc/ /data/local/tmp
        chmod -R 777 /data/local/tmp
        mkdir -p /data/local/tmp/qnn_tutorial
        Copy to clipboard
2. Determine your target device’s SnapDragon architecture by looking up your chipset in the [Supported Snapdragon Devices](https://docs.qualcomm.com/bundle/publicresource/topics/80-63442-10/QNN_general_overview.html#supported-snapdragon-devices) table.
3. Update the “X” values below and run the commands to set `DSP_ARCH` to match the version number found in the above table. Only the 2 digits at the end should update, and they should have the same version. Ex. For “V68”, the proper value would be `hexagon-v68`.

export DSP_VERSION="XX"
        export DSP_ARCH="hexagon-v${DSP_VERSION}"
        Copy to clipboard
4. Use `scp` to transfer `libQnnDsp.so` as well as other necessary executables from your host machine to `/data/local/tmp/qnn_tutorial` on the target device.

scp "$QNN_SDK_ROOT/lib/${QNN_TARGET_ARCH}/libQnnDsp.so" "${TARGET_USER}@${TARGET_IP}:/data/local/tmp/qnn_tutorial"
        scp "${QNN_SDK_ROOT}/lib/${DSP_ARCH}/unsigned/libQnnDspV${DSP_VERSION}Skel.so" "${TARGET_USER}@${TARGET_IP}:/data/local/tmp/qnn_tutorial"
        scp "${QNN_SDK_ROOT}/lib/${QNN_TARGET_ARCH}/libQnnDspV${DSP_VERSION}Stub.so" "${TARGET_USER}@${TARGET_IP}:/data/local/tmp/qnn_tutorial"
        scp "${QNN_SDK_ROOT}/examples/Models/InceptionV3/model_libs/${QNN_TARGET_ARCH}/*" "${TARGET_USER}@${TARGET_IP}:/data/local/tmp/qnn_tutorial"
        Copy to clipboard
5. Check the [Backend table](https://docs.qualcomm.com/bundle/publicresource/topics/80-63442-10/backend.html) to see if there are any other processor-specific executables needed for your target processor (`DSP`) and your target device’s architecture (`$QNN_TARGET_ARCH`). Use similar syntax above for `scp` to transfer any additional `.so` files listed **below** your selected target architecture in [this table](https://docs.qualcomm.com/bundle/publicresource/topics/80-63442-10/backend.html). **(There may be none!)**

Warning

Ensure you `scp` the `hexagon-v##` values (in addition to the other architecture files!)

6. Use `scp` to transfer the example built model. Update the `x64` folder below to the proper folder for your built model. The folder name depends on your host machine’s architecture.

scp "${QNN_MODEL_PATH}" "${TARGET_USER}@${TARGET_IP}:/data/local/tmp/qnn_tutorial"
        Copy to clipboard
7. Transfer the input data, input list, and script from the QNN SDK examples folder into `/data/local/tmp/qnn_tutorial` on the target device using `scp` in a similar way:

scp -r "${QNN_SDK_ROOT}/examples/Models/InceptionV3/data/cropped"  "${TARGET_USER}@${TARGET_IP}:/data/local/tmp/qnn_tutorial"
        scp "${QNN_SDK_ROOT}/examples/Models/InceptionV3/data/target_raw_list.txt"  "${TARGET_USER}@${TARGET_IP}:/data/local/tmp/qnn_tutorial"
        scp "${QNN_SDK_ROOT}/examples/Models/InceptionV3/data/imagenet_slim_labels"  "${TARGET_USER}@${TARGET_IP}:/data/local/tmp/qnn_tutorial"
        scp "${QNN_SDK_ROOT}/examples/Models/InceptionV3/scripts/show_inceptionv3_classifications.py"  "${TARGET_USER}@${TARGET_IP}:/data/local/tmp/qnn_tutorial"
        Copy to clipboard
8. Transfer `qnn-net-run` from `$QNN_SDK_ROOT/bin/$QNN_TARGET_ARCH/qnn-net-run` to `/data/local/tmp/qnn_tutorial` on the target device:

scp "${QNN_SDK_ROOT}/bin/${QNN_TARGET_ARCH}/qnn-net-run" "${TARGET_USER}@${TARGET_IP}:/data/local/tmp/qnn_tutorial"
        Copy to clipboard

## Doing inferences on the target device processor

1. Open a terminal instance on the target device.

ssh "${TARGET_USER}@${TARGET_IP}"
        Copy to clipboard

Note

You will have to login with your target device’s login for that username.

2. Navigate to the directory containing the test files:

cd /data/local/tmp/qnn_tutorial
        Copy to clipboard
3. Run the following command on the target device to execute an inference:

./qnn-net-run \
           --model "./libInception_v3.so" \
           --input_list "./target_raw_list.txt" \
           --backend "./libQnnDsp.so" \
           --output_dir "./output"
        Copy to clipboard
4. Run the following script on the target device to view the classification results:

Note

You can alternatively copy the output folder back to your host machine with `scp` and run the following script there to avoid having to install python on your target device.

python3 ".\show_inceptionv3_classifications.py" \
        -i ".\cropped\raw_list.txt" \
        -o "output" \
        -l ".\imagenet_slim_labels.txt"
    Copy to clipboard

5. Verify that the classification results in `output` match the following:
1. `${QNN_SDK_ROOT}/examples/Models/InceptionV3/data/cropped/trash_bin.raw 0.777344 413 ashcan`
2. `${QNN_SDK_ROOT}/examples/Models/InceptionV3/data/cropped/chairs.raw 0.253906 832 studio couch`
3. `${QNN_SDK_ROOT}/examples/Models/InceptionV3/data/cropped/plastic_cup.raw 0.980469 648 measuring cup`
4. `${QNN_SDK_ROOT}/examples/Models/InceptionV3/data/cropped/notice_sign.raw 0.167969 459 brass`

Last Published: Jun 04, 2026

[Previous Topic
Convert to QNN for Linux Host on GPU Backend](https://docs.qualcomm.com/bundle/publicresource/80-63442-10/topics/qnn_tutorial_linux_host_linux_target_gpu.md) [Next Topic
Convert to QNN for Linux Host on HTP Backend](https://docs.qualcomm.com/bundle/publicresource/80-63442-10/topics/qnn_tutorial_linux_host_linux_target_htp.md)