# Build with GitHub workflow

Follow the detailed instructions to synchronize the Qualcomm Yocto and QIR SDK layers, and build the robotics image along with the QIR SDK artifacts.

Warning

It's not recommended to rebuild the QIR SDK, as the build process is complex for non-professionals. Build the QIR SDK only if you understand the process and have the following needs:

- Build an image for the device which doesn't have a prebuilt image, for example, the Qualcomm^®^ IQ-8 Beta Evaluation Kit. For details, see [Supported platforms](https://docs.qualcomm.com/doc/80-70023-265/topic/introduction.html#section-amr-ck3-5bc).
- Add new features to the QIR SDK.
- Change the content of the target image.
- Fix bugs in the QIR SDK.
- Optimize the performance of the QIR SDK.
- Change the version of certain components.

1. [Set up the host computer for build](https://docs.qualcomm.com/doc/80-70023-265/topic/github_workflow.html#section-host-machine-setup)
2. [Sync the latest Yocto project](https://docs.qualcomm.com/doc/80-70023-265/topic/github_workflow.html#section-sync-yocto-project)
3. [Sync the Qualcomm Linux firmware (optional)](https://docs.qualcomm.com/doc/80-70023-265/topic/github_workflow.html#section-sync-qualcomm-linux-firmware)
4. [Set up the build environment](https://docs.qualcomm.com/doc/80-70023-265/topic/github_workflow.html#section-set-up-build-environment)
5. [Build the robotics image and QIR SDK artifacts](https://docs.qualcomm.com/doc/80-70023-265/topic/github_workflow.html#section-build-robotics-image-and-qirp-sdk-artifacts)

## Set up the host computer for build

Prepare your host computer for the build and install operations, ensuring it meets the [Host computer requirements](https://docs.qualcomm.com/doc/80-70023-265/topic/qirp_sdk_build.html#section-host-machine-requirements).

1. Install the required packages.

sudo apt update
        sudo apt install repo gawk wget git diffstat unzip texinfo gcc build-essential chrpath socat cpio python3 python3-pip python3-pexpect xz-utils debianutils iputils-ping python3-git python3-jinja2 libegl1-mesa libsdl1.2-dev pylint xterm python3-subunit mesa-common-dev zstd liblz4-tool locales tar python-is-python3 file libxml-opml-simplegen-perl vim whiptail g++ libgtest-dev
        Copy to clipboard
2. Set up the locales.

sudo locale-gen en_US.UTF-8
        sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
        export LC_ALL=en_US.UTF-8
        export LANG=en_US.UTF-8
        Copy to clipboard
3. Update git configurations.

# Check if your identity is configured in .gitconfig
        git config --get user.email
        git config --get user.name
        
        # Run the following commands if you do not have your account identity set in .gitconfig
        git config --global user.email <Your email ID>
        git config --global user.name <"Your Name">
        
        # Add the following UI color option for output of console (optional)
        git config --global color.ui auto
        
        # Add the following git configurations to fetch large size repositories and to avoid unreliable connections
        git config --global http.postBuffer 1048576000
        git config --global http.maxRequestBuffer 1048576000
        git config --global http.lowSpeedLimit 0
        git config --global http.lowSpeedTime 999999
        Copy to clipboard
4. Change the `/bin/sh` symlink to point to `/bin/bash` by default.

sudo ln -sf /bin/bash /bin/sh
        Copy to clipboard
5. Install the repo tool according to steps in [install-the-repo-utility](https://github.com/qualcomm-linux/qcom-manifest/blob/qcom-linux-scarthgap/README.md#install-the-repo-utility).

## Sync the Qualcomm Yocto and QIR SDK layers

Download the Qualcomm Yocto and QIR SDK layers using `robotics-release-manifest` for the value of `-m`.

Note

To get the `robotics-release-manifest`, see [Qualcomm^®^ Intelligent Robotics Product SDK (QIR SDK) 2.0 Release Notes](https://docs.qualcomm.com/doc/80-70023-260).

cd <workspace>
    repo init -u https://github.com/quic-yocto/qcom-manifest -b qcom-linux-scarthgap -m qcom-6.6.116-QLI.1.7-Ver.1.1_robotics-sdk-1.1.xml
    repo sync -c -j8
    Copy to clipboard

When the sync is complete, run `tree -L 2 <workspace>`. You can see the following output:

> 
> 
> (shell) tree -L 2
> 
> 
> .
> 
> 
> ├── layers
> 
> 
> │   ├── meta-openembedded
> 
> 
> │   ├── meta-qcom
> 
> 
> │   ├── meta-qcom-distro
> 
> 
> │   ├── meta-qcom-hwe
> 
> 
> │   ├── meta-qcom-qim-product-sdk
> 
> 
> │   ├── meta-qcom-robotics
> 
> 
> │   ├── meta-qcom-robotics-distro
> 
> 
> │   ├── meta-qcom-robotics-sdk
> 
> 
> │   ├── meta-ros
> 
> 
> │   ├── meta-security
> 
> 
> │   ├── meta-selinux
> 
> 
> │   ├── meta-tensorflow
> 
> 
> │   ├── meta-updater
> 
> 
> │   ├── meta-virtualization
> 
> 
> │   └── poky
> 
> 
> ├── qirp-build
> 
> 
> ├── setup-environment -&gt; layers/meta-qcom-distro/set\_bb\_env.sh
> 
> 
> └── setup-robotics-environment -&gt; layers/meta-qcom-robotics-distro/set\_bb\_env.sh
> 
> 
> 16 directories, 3 files

## Sync the Qualcomm® Linux firmware (optional)

<details class="sd-sphinx-override sd-dropdown sd-card sd-mb-3">
<summary class="sd-summary-title sd-card-header">
Show me the content<div class="sd-summary-down docutils">
<span class="svg-1 sd-octicon sd-octicon-chevron-down"><svg version="1.1" width="1.5em" height="1.5em" class="sd-octicon sd-octicon-chevron-down" viewbox="0 0 24 24" aria-hidden="true"><path fill-rule="evenodd" d="M5.22 8.72a.75.75 0 000 1.06l6.25 6.25a.75.75 0 001.06 0l6.25-6.25a.75.75 0 00-1.06-1.06L12 14.44 6.28 8.72a.75.75 0 00-1.06 0z"></path></svg></span></div>
<div class="sd-summary-up docutils">
<span class="svg-2 sd-octicon sd-octicon-chevron-up"><svg version="1.1" width="1.5em" height="1.5em" class="sd-octicon sd-octicon-chevron-up" viewbox="0 0 24 24" aria-hidden="true"><path fill-rule="evenodd" d="M18.78 15.28a.75.75 0 000-1.06l-6.25-6.25a.75.75 0 00-1.06 0l-6.25 6.25a.75.75 0 101.06 1.06L12 9.56l5.72 5.72a.75.75 0 001.06 0z"></path></svg></span></div>
</summary><div class="sd-summary-content sd-card-body docutils">
<div class="admonition warning">
<p class="admonition-title">Warning</p><ul class="simple">
<li><p class="sd-card-text">This information is intended for authorized users. Skip this section if you are not authorized.</p></li>
<li><p class="sd-card-text">This information is optional and will not affect your build of the QIR SDK.</p></li>
<li><p class="sd-card-text">This information includes Qualcomm's proprietary firmware, such as <code class="docutils literal notranslate"><span class="pre">AOP</span></code> firmware, <code class="docutils literal notranslate"><span class="pre">BOOT</span></code> firmware, and <code class="docutils literal notranslate"><span class="pre">DSP</span></code> firmware.</p></li>
<li><p class="sd-card-text">This information includes Qualcomm's proprietary sample applications, such as <code class="docutils literal notranslate"><span class="pre">Follow</span> <span class="pre">Me</span></code>.</p></li>
</ul>
</div>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p class="sd-card-text">For information about access levels, including <code class="docutils literal notranslate"><span class="pre">public</span></code> and <code class="docutils literal notranslate"><span class="pre">authorized</span></code>, see <a href="https://www.qualcomm.com/support/working-with-qualcomm" rel="noopener noreferrer" target="_blank" class="xref cursorpointer" onclick="Window.BookmapComponent.navigateExternalFile('https://www.qualcomm.com/support/working-with-qualcomm')">Working with Qualcomm</a>.</p>
</div><ol class="arabic">
<li><p class="sd-card-text">Follow the instructions in <a href="https://docs.qualcomm.com/doc/80-70023-254/topic/build_addn_info.html#install-qsc-cli" rel="noopener noreferrer" target="_blank" class="xref cursorpointer" onclick="Window.BookmapComponent.navigateExternalFile('https://docs.qualcomm.com/doc/80-70023-254/topic/build_addn_info.html#install-qsc-cli')">Qualcomm Linux Build Guide</a> under <span class="guilabel">Install QSC CLI</span> and <span class="guilabel">Set up the Ubuntu host computer</span> to obtain authorization and configure the environment.</p></li>
<li><p class="sd-card-text">Sync the Qualcomm Linux firmware with the steps in <a href="https://docs.qualcomm.com/doc/80-70023-254/topic/build_addn_info.html#sync-firmware" rel="noopener noreferrer" target="_blank" class="xref cursorpointer" onclick="Window.BookmapComponent.navigateExternalFile('https://docs.qualcomm.com/doc/80-70023-254/topic/build_addn_info.html#sync-firmware')">Qualcomm Linux Build Guide: Sync firmware</a>, using the <code class="docutils literal notranslate"><span class="pre">firmware</span> <span class="pre">release</span> <span class="pre">tag</span></code> (value of <code class="docutils literal notranslate"><span class="pre">-b</span></code>) in <a href="https://docs.qualcomm.com/doc/80-70023-260" rel="noopener noreferrer" target="_blank" class="xref cursorpointer" onclick="Window.BookmapComponent.navigateExternalFile('https://docs.qualcomm.com/doc/80-70023-260')">Qualcomm<sup>®</sup> Intelligent Robotics Product SDK (QIR SDK) 2.0 Release Notes</a>. In most cases, you only need to run:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre class="pre codeblock"><code>git clone -b r1.0_00114.0 --depth 1 https://qpm-git.qualcomm.com/home2/git/qualcomm/qualcomm-linux-spf-1-0_ap_standard_oem_nm-qirpsdk.git
</code><span class="copyclip"><svg xmlns="http://www.w3.org/2000/svg" class="copyclipicon" width="25px" height="25px" viewbox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"><rect x="9" y="9" width="13" height="13" rx="2" ry="2"></rect><title>Copy to clipboard</title><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"></path></svg></span></pre></div>
</div>
<p class="sd-card-text">If you need other firmware versions, see the provided link for configuration.</p>
</li>
<li><p class="sd-card-text">Build the Qualcomm Linux firmware with the steps in <a href="https://docs.qualcomm.com/doc/80-70023-254/topic/build_addn_info.html#build-firmware" rel="noopener noreferrer" target="_blank" class="xref cursorpointer" onclick="Window.BookmapComponent.navigateExternalFile('https://docs.qualcomm.com/doc/80-70023-254/topic/build_addn_info.html#build-firmware')">Qualcomm Linux Build Guide: Build firmware</a>.</p>
<p class="sd-card-text"><img alt="ico-bd-fw" style="width: 240.0px; height: 44.800000000000004px;" aria-label="ico-bd-fw" src="data:image/png;base64,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"></p>
<p class="sd-card-text">For the preceding build, the firmware prebuild is successful if the following zip files appear:</p>
<blockquote>
<div><table class="docutils align-default" id="id1">
<caption><span class="caption-text"><strong>Firmware files</strong></span></caption>
<thead>
<tr class="row-odd"><th class="head"><p class="sd-card-text">Development kit</p></th>
<th class="head"><p class="sd-card-text">File path</p></th>
<th class="head"><p class="sd-card-text">Firmware files</p></th>
</tr>
</thead>
<tbody>
<tr class="row-even"><td><p class="sd-card-text">Qualcomm Dragonwing<sup>TM</sup> RB3 Gen 2 Vision Development Kit</p></td>
<td><p class="sd-card-text"><code class="docutils literal notranslate"><span class="pre">&lt;FIRMWARE_ROOT&gt;/qualcomm-linux-spf-1-0_ap_standard_oem_nomodem/QCM6490.LE.1.0/common/build/ufs/bin</span></code></p></td>
<td><ul class="simple">
<li><p class="sd-card-text"><code class="docutils literal notranslate"><span class="pre">QCM6490_bootbinaries.zip</span></code></p></li>
<li><p class="sd-card-text"><code class="docutils literal notranslate"><span class="pre">QCM6490_dspso.zip</span></code></p></li>
<li><p class="sd-card-text"><code class="docutils literal notranslate"><span class="pre">QCM6490_fw.zip</span></code></p></li>
</ul>
</td>
</tr>
<tr class="row-odd"><td><p class="sd-card-text">Qualcomm Dragonwing<sup>TM</sup> IQ-9075 Evaluation Kit</p></td>
<td><p class="sd-card-text"><code class="docutils literal notranslate"><span class="pre">&lt;FIRMWARE_ROOT&gt;/qualcomm-linux-spf-1-0_ap_standard_oem_nm-qimpsdk/QCS9100.LE.1.0/common/build/ufs/bin</span></code></p></td>
<td><ul class="simple">
<li><p class="sd-card-text"><code class="docutils literal notranslate"><span class="pre">QCS9100_bootbinaries.zip</span></code></p></li>
<li><p class="sd-card-text"><code class="docutils literal notranslate"><span class="pre">QCS9100_dspso.zip</span></code></p></li>
<li><p class="sd-card-text"><code class="docutils literal notranslate"><span class="pre">QCS9100_fw.zip</span></code></p></li>
</ul>
</td>
</tr>
<tr class="row-even"><td><p class="sd-card-text">IQ-8 Beta Evaluation Kit</p></td>
<td><p class="sd-card-text"><code class="docutils literal notranslate"><span class="pre">&lt;FIRMWARE_ROOT&gt;/qualcomm-linux-spf-1-0_ap_standard_oem_nm-qimpsdk/QCS8300.LE.1.0/common/build/ufs/bin</span></code></p></td>
<td><ul class="simple">
<li><p class="sd-card-text"><code class="docutils literal notranslate"><span class="pre">QCS8300_bootbinaries.zip</span></code></p></li>
<li><p class="sd-card-text"><code class="docutils literal notranslate"><span class="pre">QCS8300_dspso.zip</span></code></p></li>
<li><p class="sd-card-text"><code class="docutils literal notranslate"><span class="pre">QCS8300_fw.zip</span></code></p></li>
</ul>
</td>
</tr>
</tbody>
</table>
</div></blockquote>
</li>
<li><p class="sd-card-text">Fetch the <code class="docutils literal notranslate"><span class="pre">meta-qcom-robotics-extras</span></code> and <code class="docutils literal notranslate"><span class="pre">meta-qcom-extras</span></code> layers.</p>
<blockquote>
<div><div class="admonition note">
<p class="admonition-title">Note</p><ul class="simple">
<li><p class="sd-card-text">The <code class="docutils literal notranslate"><span class="pre">-b</span></code> parameter indicates the <code class="docutils literal notranslate"><span class="pre">&lt;meta-qcom-robotics-extras-release-tag&gt;</span></code>. To get the <code class="docutils literal notranslate"><span class="pre">&lt;meta-qcom-robotics-extras-release-tag&gt;</span></code>, see <a href="https://docs.qualcomm.com/doc/80-70023-260" rel="noopener noreferrer" target="_blank" class="xref cursorpointer" onclick="Window.BookmapComponent.navigateExternalFile('https://docs.qualcomm.com/doc/80-70023-260')">Qualcomm<sup>®</sup> Intelligent Robotics Product SDK (QIR SDK) 2.0 Release Notes</a>. For example, <code class="docutils literal notranslate"><span class="pre">r1.0_00115.0</span></code>.</p></li>
<li><p class="sd-card-text">To get the <code class="docutils literal notranslate"><span class="pre">&lt;product&gt;</span></code> value, see the following table.</p></li>
</ul>
</div>
<table class="longtable docutils align-default" id="id2">
<caption><span class="caption-text"><strong>Table:</strong> <code class="docutils literal notranslate"><span class="pre">product</span></code> <strong>value for extra layers</strong></span></caption>
<thead>
<tr class="row-odd"><th class="head"><p class="sd-card-text">Parameter</p></th>
<th class="head"><p class="sd-card-text">RB3 Gen 2 Vision Development Kit</p></th>
<th class="head"><p class="sd-card-text">IQ-9075 Evaluation Kit</p></th>
<th class="head"><p class="sd-card-text">IQ-8 Beta Evaluation Kit</p></th>
</tr>
</thead>
<tbody>
<tr class="row-even"><td><p class="sd-card-text"><code class="docutils literal notranslate"><span class="pre">product</span></code></p></td>
<td><p class="sd-card-text"><code class="docutils literal notranslate"><span class="pre">QCM6490.LE.1.0</span></code></p></td>
<td><p class="sd-card-text"><code class="docutils literal notranslate"><span class="pre">QCS9100.LE.1.0</span></code></p></td>
<td><p class="sd-card-text"><code class="docutils literal notranslate"><span class="pre">QCS8300.LE.1.0</span></code></p></td>
</tr>
</tbody>
</table>
<div class="highlight-default notranslate"><div class="highlight"><pre class="pre codeblock"><code>git clone -b r1.0_00115.0 --depth 1 https://qpm-git.qualcomm.com/home2/git/qualcomm/qualcomm-linux-spf-1-0_hlos_oem_metadata.git
mkdir -p layers/meta-qcom-robotics-extras
mkdir -p layers/meta-qcom-extras
cp -rf qualcomm-linux-spf-1-0_hlos_oem_metadata/&lt;product&gt;/common/config/meta-qcom-extras/* layers/meta-qcom-extras/
cp -rf qualcomm-linux-spf-1-0_hlos_oem_metadata/&lt;product&gt;/common/config/meta-qcom-robotics-extras/* layers/meta-qcom-robotics-extras/
</code><span class="copyclip"><svg xmlns="http://www.w3.org/2000/svg" class="copyclipicon" width="25px" height="25px" viewbox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"><rect x="9" y="9" width="13" height="13" rx="2" ry="2"></rect><title>Copy to clipboard</title><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"></path></svg></span></pre></div>
</div>
</div></blockquote>
</li>
<li><p class="sd-card-text">Set up the build environment with the steps in <a href="https://docs.qualcomm.com/doc/80-70023-265/topic/github_workflow.html#section-set-up-build-environment"><span class="std std-ref">Set up the build environment</span></a>.</p></li>
<li><p class="sd-card-text">Configure the firmware variables.</p>
<div class="highlight-default notranslate"><div class="highlight"><pre class="pre codeblock"><code>cd &lt;workspace&gt;
export CUST_ID=&quot;213195&quot;
export FWZIP_PATH=&quot;&lt;FIRMWARE_ROOT&gt;/qualcomm-linux-spf-1-0_ap_standard_oem_nomodem/&lt;product&gt;/common/build/ufs/bin&quot;
</code><span class="copyclip"><svg xmlns="http://www.w3.org/2000/svg" class="copyclipicon" width="25px" height="25px" viewbox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"><rect x="9" y="9" width="13" height="13" rx="2" ry="2"></rect><title>Copy to clipboard</title><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"></path></svg></span></pre></div>
</div>
</li>
<li><p class="sd-card-text">Configure the <code class="docutils literal notranslate"><span class="pre">EXTRALAYERS</span></code> variable to add firmware layers to the build.</p>
<div class="highlight-default notranslate"><div class="highlight"><pre class="pre codeblock"><code>cat &gt;&gt; conf/bblayers.conf &lt;&lt;EOF
EXTRALAYERS = &quot; \\
\${WORKSPACE}/layers/meta-qcom-robotics-extras \\
\${WORKSPACE}/layers/meta-qcom-extras \\
&quot;
EOF
</code><span class="copyclip"><svg xmlns="http://www.w3.org/2000/svg" class="copyclipicon" width="25px" height="25px" viewbox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"><rect x="9" y="9" width="13" height="13" rx="2" ry="2"></rect><title>Copy to clipboard</title><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"></path></svg></span></pre></div>
</div>
</li>
<li><p class="sd-card-text">Run the build commands in <a href="https://docs.qualcomm.com/doc/80-70023-265/topic/github_workflow.html#section-build-robotics-image-and-qirp-sdk-artifacts"><span class="std std-ref">Build the robotics image and QIR SDK artifacts</span></a>.</p></li>
</ol>
</div>
</details>

## Set up the build environment

Run the following command to set up the build environment:

> 
> 
> cd <workspace>
>     MACHINE=<Machine_name> DISTRO=<Distro_name> QCOM_SELECTED_BSP=<Build_override> source setup-robotics-environment <Build_directory>
>     Copy to clipboard
> 
> 
> Note
> 
> 
> If you are building the QIR SDK on the Ubuntu Server VM of an Arm64 Mac, run the following setup command:
> 
> 
> The Arm64 Host ​only supports​​ the `custom` build variant.
> 
> 
> MACHINE=<Machine_name> DISTRO=<Distro_name>  SDKMACHINE=aarch64 QCOM_SELECTED_BSP=custom source setup-robotics-environment <Build_directory>
>     Copy to clipboard

> 
> 
> Table: Build parameters
> 
> 
> | **Parameter** | **Qualcomm Dragonwing™ RB3 Gen 2 Vision Kit** | **Qualcomm Dragonwing™ IQ-9075 Evaluation Kit** | **IQ-8 Beta Evaluation Kit** |
> | --- | --- | --- | --- |
> | **Machine\_name** | `qcs6490-rb3gen2-vision-kit` | `qcs9075-iq-9075-evk` | `qcs8300-ride-sx` |
> | **Distro\_name** | `qcom-robotics-ros2-jazzy` | `qcom-robotics-ros2-jazzy` | `qcom-robotics-ros2-jazzy` |
> | **Build\_override** | `custom` | <ul class="simple"><br><li><p><code class="docutils literal notranslate"><span class="pre">custom</span></code></p></li><br><li><p><code class="docutils literal notranslate"><span class="pre">base</span></code></p></li><br></ul> | <ul class="simple"><br><li><p><code class="docutils literal notranslate"><span class="pre">custom</span></code></p></li><br><li><p><code class="docutils literal notranslate"><span class="pre">base</span></code></p></li><br></ul> |
> | **Build\_directory** | `build-qcs6490-custom` | <ul class="simple"><br><li><p><code class="docutils literal notranslate"><span class="pre">build-qcs9075-custom</span></code></p></li><br><li><p><code class="docutils literal notranslate"><span class="pre">build-qcs9075-base</span></code></p></li><br></ul> | <ul class="simple"><br><li><p><code class="docutils literal notranslate"><span class="pre">build-qcs8300-custom</span></code></p></li><br><li><p><code class="docutils literal notranslate"><span class="pre">build-qcs8300-base</span></code></p></li><br></ul> |
> 
> 
> 
> Note
> 
> - The Base version is intended for developers who want a purely upstream and open-source software stack without Qualcomm proprietary software and power/performance value adds.
> - The Custom version provides a richer set of functionalities and includes Qualcomm’s value adds like SDKs and power performance improvements. It's suited for developers who rely on Qualcomm’s value adds and proprietary/downstream software in their products.
> - For more details, see [Software overview](https://docs.qualcomm.com/doc/80-70023-252/topic/qualcomm-linux-sw-overview.html).

## Build the robotics image and QIR SDK artifacts

Run the following command to build the QIR SDK:

> 
> 
> cd <workspace>
>     ../qirp-build qcom-robotics-full-image
>     Copy to clipboard
> 
> 
> Note
> 
> 
> This command takes a long time to run. Depending on the network and machine performance, it may take 3–5 hours.
> 
> 
> **Results:**
> 
> 
> Tab RB3 Gen 2 Vision Development Kit
> Tab IQ-9075 Evaluation Kit
> Tab IQ-8 Beta Evaluation Kit
> 
> - QIR SDK artifacts:
> 
> 
> 
> > 
> > 
> > <workspace>/build-qcs6490-custom/tmp-glibc/deploy/qirpsdk_artifacts/qcs6490-rb3gen2-vision-kit/qirp-sdk_<version>.tar.gz
> >         Copy to clipboard
> - Robotics image:
> 
> 
> 
> > 
> > 
> > <workspace>/build-qcs6490-custom/tmp-glibc/deploy/images/qcs6490-rb3gen2-vision-kit/qcom-robotics-full-image
> >         Copy to clipboard
> 
> **Example using** `custom` **build override**
> 
> - QIR SDK artifacts:
> 
> 
> 
> > 
> > 
> > <workspace>/build-qcs9075-custom/tmp-glibc/deploy/qirpsdk_artifacts/qcs9075-iq-9075-evk/qirp-sdk_<version>.tar.gz
> >         Copy to clipboard
> - Robotics image:
> 
> 
> 
> > 
> > 
> > <workspace>/build-qcs9075-custom/tmp-glibc/deploy/images/qcs9075-iq-9075-evk/qcom-robotics-full-image
> >         Copy to clipboard
> 
> 
> 
> **Example using** `base` **build override**
> 
> - QIR SDK artifacts:
> 
> 
> 
> > 
> > 
> > <workspace>/build-qcs9075-base/tmp-glibc/deploy/qirpsdk_artifacts/qcs9075-iq-9075-evk/qirp-sdk_<version>.tar.gz
> >         Copy to clipboard
> - Robotics image:
> 
> 
> 
> > 
> > 
> > <workspace>/build-qcs9075-base/tmp-glibc/deploy/images/qcs9075-iq-9075-evk/qcom-robotics-full-image
> >         Copy to clipboard
> 
> **Example using** `custom` **build override**
> 
> - QIR SDK artifacts:
> 
> 
> 
> > 
> > 
> > <workspace>/build-qcs8300-custom/tmp-glibc/deploy/qirpsdk_artifacts/qcs8300-ride-sx/qirp-sdk_<version>.tar.gz
> >         Copy to clipboard
> - Robotics image:
> 
> 
> 
> > 
> > 
> > <workspace>/build-qcs8300-custom/tmp-glibc/deploy/images/qcs8300-ride-sx/qcom-robotics-full-image
> >         Copy to clipboard
> 
> 
> 
> **Example using** `base` **build override**
> 
> - QIR SDK artifacts:
> 
> 
> 
> > 
> > 
> > <workspace>/build-qcs8300-base/tmp-glibc/deploy/qirpsdk_artifacts/qcs8300-ride-sx/qirp-sdk_<version>.tar.gz
> >         Copy to clipboard
> - Robotics image:
> 
> 
> 
> > 
> > 
> > <workspace>/build-qcs8300-base/tmp-glibc/deploy/images/qcs8300-ride-sx/qcom-robotics-full-image
> >         Copy to clipboard

## Flash the robotics image to devices

To flash the robotics image to the device, see [Flash the robotics image](https://docs.qualcomm.com/doc/80-70023-265/topic/quick_start.html#flash-img-qs), using the `qcom-robotics-full-image` generated in [Build the robotics image and QIR SDK artifacts](https://docs.qualcomm.com/doc/80-70023-265/topic/github_workflow.html#section-build-robotics-image-and-qirp-sdk-artifacts).

Last Published: Dec 29, 2025

[Previous Topic
Build with QSC-CLI](https://docs.qualcomm.com/bundle/publicresource/80-70023-265/topics/qsc_cli.md) [Next Topic
Build with Docker](https://docs.qualcomm.com/bundle/publicresource/80-70023-265/topics/docker_workflow.md)