RB3 Gen 2 Vision Kit

The Qualcomm Dragonwing RB3 Gen 2 Development Kit is a powerful Linux-based development board based around the QCS6490 SoC. It has two built-in cameras, a Kryo™ 670 CPU, Adreno™ 643L GPU and 12 TOPS Hexagon™ 770 NPU. It's available for $599 from a variety of distributors (buy now).

RB3 Gen 2 Vision Kit

Setup

Installing Ubuntu 24.04

The RB3 Gen 2 Vision Kit comes with the Yocto-based Qualcomm Linux by default. You'll want to switch to Ubuntu 24.04 to follow the tutorials in this documentation.

  1. If it's on, turn your RB3 Gen 2 Vision Kit off, and disconnect the power adapter.

  2. You'll need to connect the RB3 Gen 2 Vision Kit to your computer using two USB cables.

    • Connect the RB3 to your computer using a micro-USB cable (using the port highlighted in yellow):

    • Connect the RB3 to your computer using an USB-C cable (using the port highlighted in red):

  3. Now, depending on your OS:

    • Windows:

      • Open a terminal, and run:

        Invoke-WebRequest -Uri https://cdn.edgeimpulse.com/qc-ai-docs/device-setup/rb3-gen2-vision-kit-ubuntu24-windows.ps1 -OutFile "rb3-gen2-vision-kit-ubuntu24-windows.ps1"
        .\rb3-gen2-vision-kit-ubuntu24-windows.ps1
      • If you encounter any issues, see the debugging steps (e.g. USB driver setup) on Qualcomm docs: Flash the software images to the device (follow "Windows host" instructions).

      • Note (Jan): I cannot get this to work for the life of me, I keep getting "qdl: unable to open USB device".

    • macOS:

      • Open a terminal, and run:

        wget https://cdn.edgeimpulse.com/qc-ai-docs/device-setup/rb3-gen2-vision-kit-ubuntu24-macos-linux.sh
        bash rb3-gen2-vision-kit-ubuntu24-macos-linux.sh
    • Linux (x86 only, arm64 hosts are not supported):

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

        echo 'SUBSYSTEMS=="usb", ATTRS{idVendor}=="05c6", ATTRS{idProduct}=="9008", MODE="0664", GROUP="plugdev"' > /etc/udev/rules.d/51-qcom-usb.rules
        sudo systemctl restart udev
      2. Disconnect and reconnect the USB cables to your RB3 development kit.

      3. Then, from a terminal, run:

        wget https://cdn.edgeimpulse.com/qc-ai-docs/device-setup/rb3-gen2-vision-kit-ubuntu24-macos-linux.sh
        bash rb3-gen2-vision-kit-ubuntu24-macos-linux.sh
  4. When the script says "Waiting for EDL device":

    1. Connect the power adapter.

    2. Press and hold the EDL button:

      FDL button
      FDL button
    3. While holding the EDL button, also press the power button:

      Power button
      Power button
    4. The script should say "waiting for programmer..." and flashing will start.

  5. Next, either:

    When prompted to login, the default username is ubuntu and the default password is also ubuntu.

  6. From your terminal, set up WiFi:

    # 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
  7. Optional: If you want to connect over SSH:

    1. Find your IP address:

      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:

      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 for code development and deployment.

  8. Last, install the USB / Ethernet driver:

    # Download and install the driver
    sudo wget -O /lib/firmware/renesas_usb_fw.mem https://cdn.edgeimpulse.com/qc-ai-docs/drivers/renesas_usb_fw.mem
    sudo mkinitramfs -o /boot/initrd.img-$(uname -r)
    
    # To verify...
    lsinitramfs /boot/initrd.img-$(uname -r) | grep renesas
    # ... Should list "usr/lib/firmware/renesas_usb_fw.mem"
    
    # Reboot
    sudo reboot

Installing drivers, AI Engine Direct and the IM-SDK

Now that we have Ubuntu 24.04 installed, let's install GPU drivers, the Qualcomm AI Engine Direct SDK (to run neural networks), and the Qualcomm Intelligent Multimedia SDK (to run computer vision pipelines on GPU or NPU).

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 IM SDK, the AI Engine Direct SDK library and development headers:

    # Add the Qualcomm IoT PPA
    sudo apt-add-repository -y ppa:ubuntu-qcom-iot/qcom-ppa
    
    # Install GStreamer and the IM SDK
    sudo apt update
    sudo apt install -y gstreamer1.0-tools gstreamer1.0-tools gstreamer1.0-plugins-good gstreamer1.0-plugins-base gstreamer1.0-plugins-base-apps gstreamer1.0-plugins-qcom-good gstreamer1.0-qcom-sample-apps
    
    # 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
    
    # Reboot the device
    sudo reboot
    
    # 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
    
    # 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

Tips & tricks

Using the built-in cameras

Your development kit has two built-in cameras, but you can only read data from the cameras using a GStreamer pipeline with the qtiqmmfsrc plugin (part of the IM SDK).

For a Python example, see qc-ai-docs-examples-imsdk/rb3-builtin-cameras.

Or, to stream camera to data to a file, open a terminal on your device and run:

Large camera

mkdir -p out
gst-launch-1.0 qtiqmmfsrc name=camsrc camera=0 ! video/x-raw,width=1920,height=1080 ! jpegenc ! multifilesink location=out/frame%05d.jpg

Small camera

mkdir -p out
gst-launch-1.0 qtiqmmfsrc name=camsrc camera=1 ! video/x-raw,width=1280,height=720 ! jpegenc ! multifilesink location=out/frame%05d.jpg

This writes frames to the out/ directory.

Troubleshooting

No known issues for this development board.

Last updated