RUBIK Pi 3

The Thundercomm RUBIK Pi 3 Development Kit is a powerful Linux-based development board based around the QCS6490 SoC. It has a Kryo™ 670 CPU, Adreno™ 643L GPU and 12 TOPS Hexagon™ 770 NPU. It's available for $99 from a variety of distributors (buy now).

RUBIK Pi 3

Setup

The Rubik Pi might come shipped with either Ubuntu 24, or with Qualcomm Linux. If you're unsure, just flash Ubuntu 24.

Flashing Ubuntu 24.04 (skip if your board already comes with Ubuntu 24)

  1. Connect power to the board, then connect the Rubik Pi 3 to your computer using two USB cables.

    Connect the power adapter, then connect the Rubik Pi 3 to your computer using both micro-USB and USB-C ports
    Connect the power adapter, then connect the Rubik Pi 3 to your computer using both micro-USB and USB-C ports

    Most Rubik Pi 3 boards boot up automatically. Some older revisions require you to press the 'PWR' button.

  2. Install and launch the Qualcomm Launcher.

  3. In the Qualcomm Launcher:

    1. Select 'Rubik Pi' as your development kit, and 'Ubuntu' as your operating system.

    2. Boot the device up in EDL mode:

      1. Disconnect power to your Rubik Pi 3.

      2. Hold the EDL button while you connect the power to your Rubik Pi 3 again.

      3. Press the PWR button (keep holding the EDL button).

      Rubik Pi 3 in EDL mode in the Qualcomm Launcher
      Rubik Pi 3 in EDL mode in the Qualcomm Launcher
    3. Click "Flash", and follow the instructions.

      If you see 'Put Device in EDL Mode to Continue' again, disconnect power; and boot again with the EDL button pressed.

    4. After flashing is done, click "Configure login". You'll be presented with a terminal. Once you don't see any log messages anymore (and the device is booted up) log in with username ubuntu, password ubuntu.

      Logging into the development board
      Logging into the development board
    5. Afterwards, enter your WiFi credentials, and click "Configure Wi-Fi".

      Enter WiFi credentials in the Qualcomm Launcher
    6. Your device is now connected to WiFi. Note down the IP address of the development board and close the Qualcomm Launcher.

      Note down the IP address of your development board (here 192.168.1.102)
      Note down the IP address of your development board (here 192.168.1.102)
  4. On your host machine (so not on your dev board), open a command prompt or terminal and run:

    ssh ubuntu@192.168.1.102

    (Replace 192.168.1.102 with the IP you found in the previous step)

  5. Optional: Follow this guide to connect your board to Visual Studio Code via SSH for code development and deployment.

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:

    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:

    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:

    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).

qdl: bulk write failed: No such device (it may have been disconnected)

If flashing new firmware fails with qdl: bulk write failed: No such device you might have an older revision of the Rubik Pi 3 that requires pressing the power button to boot up the board. Try:

  1. Disconnect power.

  2. Hold the EDL button.

  3. Plug power back in (keep holding the EDL button).

  4. Also press the power button (next to the EDL button) (keep holding the EDL button).

Changing WiFi password

If you want to change the WiFi password (e.g. because you've moved the board):

  1. Connect the Rubik Pi to your computer using the micro-USB port, and connect power to your board/

    Connect your Rubik Pi to your computer using the micro-USB port
    Connect your Rubik Pi to your computer using the micro-USB port
  2. 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 (on Windows: make sure to enable 'Tools for Native Modules').

    2. Install the Edge Impulse CLI by opening a command prompt or terminal window, and running:

      npm install -g edge-impulse-cli

      Issues with installing the Edge Impulse CLI? See the install instructions.

    3. You can now connect to your board via:

      edge-impulse-serial-terminal
      
      # [SER] Connecting to COM11 (baud rate 115200)
      # [SER] Connected to COM11. Press CTRL+D to quit.
    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, and the password you set up when you flashed the board.

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

      To disconnect, press CTRL+D.

  3. You can now connect to another WiFi network via:

    sudo nmcli dev wifi connect "<WiFi-SSID>" password "<WiFi-password>"

Last updated