> For the complete documentation index, see [llms.txt](https://qc-ai-test.gitbook.io/qc-ai-test-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://qc-ai-test.gitbook.io/qc-ai-test-docs/device-setup/iq9075-evk.md).

# IQ-9075 EVK

The Qualcomm IQ-9075 EVK is a powerful Linux-based evaluation kit based around the IQ-9075 SoC. It has a 6-core CPU, Adreno™ 663 GPU and 100 TOPS Hexagon™ NPU that can run 13B parameter LLM/VLM models. It's available from a variety of distributors like [Lantronix](https://www.lantronix.com/products/qualcomm-dragonwing-iq-9075-evk/).

![IQ-9075 EVK](/files/CtEjLTG5fQ90NkOpRKZe)

## Setup

### Installing Ubuntu 24.04

The IQ-9075 EVK does not come with an OS yet. You'll need to install Ubuntu 24.04 to follow the tutorials in this documentation.

1. Connect power to the board, then connect the EVK to your computer using *two* USB cables.

   There are two variants of this board:

   1. Variant A:

      <figure><img src="/files/dHoR70KKHpxeRZdJ0Fc7" alt="Connect the power adapter, then connect the EVK to your computer using both micro-USB and USB-C ports"><figcaption><p>Connect the power adapter, then connect the EVK to your computer using both micro-USB and USB-C ports</p></figcaption></figure>
   2. Variant B:

      TODO (asked Krishna)
2. Toggle EDL mode on.
   * If you have board variant A: Toggle DIP switch 3 to 'ON':

     <figure><img src="/files/YwmCnuXwLOycPTh8XVie" alt="Toggle DIP switch 3 &#x27;ON&#x27; (here it&#x27;s OFF)"><figcaption><p>Toggle DIP switch 3 'ON' (here it's OFF)</p></figcaption></figure>
   * If you have board variant B: Toggle DIP switch S2-8 to 'ON'.

     <figure><img src="/files/CJoJ6h4VvDJmouzRaain" alt="Toggle DIP switch S2-8 &#x27;ON&#x27; (here it&#x27;s OFF)"><figcaption><p>Toggle DIP switch S2-8 'ON' (here it's ON)</p></figcaption></figure>
3. Now, depending on the OS on your computer:

{% tabs %}
{% tab title="Windows" %}

1. You need to swap out the Qualcomm USB driver for a WinUSB driver, otherwise you cannot flash the board.
   1. Download and unzip QDL:
      * [Download for x86](https://softwarecenter.qualcomm.com/api/download/software/tools/Qualcomm_Device_Loader/Windows/2.3.9.2/QDL_2.3.9.2_Win_x64.zip) (e.g. Intel/AMD processors)
      * [Download for ARM64](https://softwarecenter.qualcomm.com/api/download/software/tools/Qualcomm_Device_Loader/Windows/ARM64/2.3.9.2/QDL_2.3.9.2_Win_ARM64.zip) (e.g. Snapdragon processors)
   2. Turn your IQ-9075 EVK on via the power switch.
   3. In the QDL folder, find `install_driver.bat`. Right-click, and select "Run as administrator".

      ![QDL: install\_driver.bat](/files/9iBqQwLsOPfwv5iTotzl)
   4. This should print something akin to:

      ```
      Total driver packages:  1
      Added driver packages:  1
      Successfully installed: qcserlib.inf
      ```

      > If you get an error, make sure DIP 3 / DIP S2-8 is switched 'ON', disconnect the power adapter and try again.
2. Open a terminal, and run:

   ```bash
   Invoke-WebRequest -Uri https://cdn.edgeimpulse.com/qc-ai-docs/device-setup/iq9075-evk-ubuntu-desktop-24-windows.ps1 -OutFile "iq9075-evk-ubuntu-desktop-24-windows.ps1"
   .\iq9075-evk-ubuntu-desktop-24-windows.ps1 -FlashCdt -FlashUfs -FlashSail -FlashUbuntu
   ```

{% endtab %}

{% tab title="macOS" %}

1. Open a terminal, and run:

   ```bash
   wget https://cdn.edgeimpulse.com/qc-ai-docs/device-setup/iq9075-evk-ubuntu-desktop-24-macos-linux.sh
   bash iq9075-evk-ubuntu-desktop-24-macos-linux.sh --flash-cdt --flash-ufs --flash-sail --flash-ubuntu
   ```

{% endtab %}

{% tab title="Linux" %}

1. Update your udev rules. Open a terminal and run:

   ```bash
   echo 'SUBSYSTEMS=="usb", ATTRS{idVendor}=="05c6", ATTRS{idProduct}=="9008", MODE="0664", GROUP="plugdev"' | sudo tee /etc/udev/rules.d/51-qcom-usb.rules > /dev/null
   sudo systemctl restart udev
   ```
2. Disconnect and reconnect the USB cables to your IQ-9075 EVK.
3. Then, from a terminal, run:

   ```bash
   wget https://cdn.edgeimpulse.com/qc-ai-docs/device-setup/iq9075-evk-ubuntu-desktop-24-macos-linux.sh
   bash iq9075-evk-ubuntu-desktop-24-macos-linux.sh --flash-cdt --flash-ufs --flash-sail --flash-ubuntu
   ```

{% endtab %}
{% endtabs %}

{% hint style="warning" %}
If you don't see "Waiting for EDL device" - but the script immediately exits, then power the board off and disconnect the power adapter; then reconnect the power adapter.
{% endhint %}

4. Afterwards:
   * If you have board variant A: Toggle DIP switch 3 to 'OFF':

     <figure><img src="/files/YwmCnuXwLOycPTh8XVie" alt="Toggle DIP switch 3 &#x27;OFF&#x27; (here it&#x27;s OFF)"><figcaption><p>Toggle DIP switch 3 'OFF' (here it's OFF)</p></figcaption></figure>
   * If you have board variant B: Toggle DIP switch S2-8 to 'ON'.

     <figure><img src="/files/CJoJ6h4VvDJmouzRaain" alt="Toggle DIP switch S2-8 &#x27;OFF&#x27; (here it&#x27;s ON)"><figcaption><p>Toggle DIP switch S2-8 'OFF' (here it's ON)</p></figcaption></figure>
5. Toggle power switch OFF, then switch it back ON. Your board will now boot up.

### Configuring Ubuntu 24

Now that we have Ubuntu 24.04 installed, lets connect your IQ-9075 EVK to the internet.

1. You need to connect to the device using a serial port. You can either use your favorite serial terminal application (use baud rate 115200) or, on your computer:
   1. Install [Node.js](https://nodejs.org/en) (on Windows: make sure to enable 'Tools for Native Modules').
   2. Install the [Edge Impulse CLI](https://docs.edgeimpulse.com/tools/clis/edge-impulse-cli/installation) by opening a command prompt or terminal window, and running:

      ```bash
      npm install -g edge-impulse-cli
      ```

      > Issues with installing the Edge Impulse CLI? See the [install instructions](https://docs.edgeimpulse.com/tools/clis/edge-impulse-cli/installation).
   3. You can now connect to your board via:

      ```bash
      edge-impulse-serial-terminal

      # ? Which device do you want to connect to? (🔍 type to search) (Press <enter> to submit)
      # /dev/tty.usbserial-NNLRP17S001M0 (WNC)
      # /dev/tty.usbserial-NNLRP17S001M3 (WNC)
      # ❯ /dev/tty.usbserial-NNLRP17S001M1 (WNC)
      # /dev/tty.usbserial-NNLRP17S001M2 (WNC)

      # [SER] Connecting to /dev/tty.usbserial-NNLRP17S001M1 (baud rate 115200)
      # [SER] Connected to /dev/tty.usbserial-NNLRP17S001M1. Press CTRL+D to quit.
      ```

      > The EVK exposes multiple serial ports; and it's unclear which is which (especially on Windows). On macOS it seems to be the port ending in `M1`. Try restarting the board while attaching to one of the ports, you should see boot messages from Ubuntu.
   4. Once you are connected to the board, and you don't see any log messages anymore; press `ENTER` and log in with username `ubuntu`, password `ubuntu`:

      ```bash
      # Ubuntu 24.04.3 LTS ubuntu ttyMSM0
      #
      # ubuntu login: ubuntu
      ```

      To disconnect, press `CTRL+D`.
2. From your terminal, set up WiFi:

   ```bash
   # Connect to WiFi
   sudo nmcli dev wifi connect "<WiFi-SSID>" password "<WiFi-password>"

   # Force ntp sync so we get the correct date/time
   sudo systemctl restart systemd-timesyncd.service

   # To verify...
   date
   # ... Should return the current date
   ```
3. *Optional:* If you want to connect over SSH:
   1. Find your IP address:

      ```bash
      sudo apt update && sudo apt install -y net-tools

      ifconfig | grep -Eo 'inet (addr:)?([0-9]*\.){3}[0-9]*' | grep -Eo '([0-9]*\.){3}[0-9]*' | grep -v '127.0.0.1'

      # 192.168.1.253
      ```
   2. On your host machine (so not on your dev board), open a command prompt or terminal and run:

      ```bash
      ssh ubuntu@192.168.1.253
      ```

      (Replace 192.168.1.253 with the IP you found in the previous step)
   3. *Optional:* Follow [this guide to connect your board to Visual Studio Code via SSH](/qc-ai-test-docs/device-setup/vscode-ssh-setup.md) for code development and deployment.

Your board is now ready. You can disconnect the USB-C to your computer cable (keep the micro-USB cable connected if you haven't set up SSH).

### Installing drivers, AI Engine Direct and the IM-SDK

Now that we have Ubuntu 24.04 installed and connected to a network, let's install GPU drivers and the Qualcomm AI Engine Direct SDK (to run neural networks).

From the terminal or ssh session on your development board, run:

1. Install some base packages:

   ```bash
   sudo apt update
   sudo apt install -y unzip wget curl python3 python3-pip python3-venv software-properties-common
   ```
2. Download and install the AI Engine Direct SDK library and development headers:

   ```bash
   # Add the Qualcomm IoT PPA (if it doesn't exist yet)
   if [ ! -f /etc/apt/sources.list.d/ubuntu-qcom-iot-ubuntu-qcom-ppa-noble.list ]; then
       sudo apt-add-repository -y ppa:ubuntu-qcom-iot/qcom-ppa
   fi

   # Install the AI Engine Direct SDK library and development headers
   sudo apt install -y libqnn1 libsnpe1 libqnn-dev libsnpe-dev
   ```
3. Install OpenCL GPU drivers:

   ```bash
   sudo apt update
   sudo apt install -y clinfo qcom-adreno1

   # Symlink OpenCL library to /usr/lib/
   if [ ! -f /usr/lib/libOpenCL.so ]; then
       sudo ln -s /lib/aarch64-linux-gnu/libOpenCL.so.1.0.0 /usr/lib/libOpenCL.so
   fi

   # Reboot the device
   sudo reboot

   # Verify installation
   clinfo
   # ... Should return
   #     Number of platforms                               1
   #     Platform Name                                   QUALCOMM Snapdragon(TM)
   #     Platform Vendor                                 QUALCOMM
   #     Platform Version                                OpenCL 3.0 QUALCOMM build: 0808.0.7
   ```

## Troubleshooting

### qdl: unable to open USB device

If you see `qdl: unable to open USB device` when flashing the board (on Windows) then make sure to update the driver using QDL's install\_driver.bat (see above).
