> ## Documentation Index
> Fetch the complete documentation index at: https://dragonwingdocs-staging.qualcomm.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Build the robotics image with the prebuilt robotics eSDK

Use the prebuilt platform extended SDK (eSDK) to build the robotics image.

The robotics eSDK is an installer that Qualcomm Linux image generates, and provides a complete Yocto environment that allows you to synchronize, modify, compile, and install applications.

## Prerequisites

* An Ubuntu 24.04 host computer with at least 50 GB of free space.
* You have downloaded the prebuilt robotics eSDK with steps in [Download the prebuilt packages](./download-the-prebuilt-packages).

## Install the robotics image with eSDK

1. Install the eSDK by running the installer script.

   <Note>
     **Note**

     * For the location of eSDK, see [Download the prebuilt packages](./download-the-prebuilt-packages).
     * The following steps use the x86\_64 architecture prebuilt eSDK as an example. The operations for other architectures are similar.
   </Note>

   a. Run the following commands to run the installer script, example (**MACHINE:** iq-9075-evk):

   ```shell theme={null}
   cd <decompressed_workspace>/images/<machine>/sdk
   umask a+rx
   sh ./qcom-robotics-ros2-jazzy-x86_64-qcom-robotics-proprietary-image-armv8-2a-iq-9075-evk-toolchain-ext-2.8.0.sh
   ```

   b. When you see the following prompt, press `Enter` or type a custom directory for eSDK installation.

   ```shell theme={null}
   QCOM Robotics Reference Distro with ROS Extensible SDK installer version 2.8.0
   ==============================================================================
   Enter target directory for SDK (default: ~/qcom-robotics-ros2-jazzy_sdk):
   ```

2. Follow the remaining console prompts to complete the installation.

3. Ensure that the eSDK installation is successful when you see the following prompt.
   SDK has been successfully set up and is ready to be used.

   ```text theme={null}
    Extracting SDK.......done
    Setting it up...
    Extracting buildtools...
    Preparing build system...
   ```

   <Note>
     **Note**

     If the installer fails with missing Perl module errors, see [eSDK installation fails due to missing Perl module dependencies](./troubleshoot#esdk-installation-fails-due-to-missing-perl-module-dependencies).
   </Note>

## Build the robotics image with eSDK

Source the environment setup script once per shell session, then build the image you need. `<eSDK_install_path>` defaults to `~/qcom-robotics-ros2-jazzy_sdk`.

1. Set up the eSDK and build the robotics image.
   ```shell theme={null}
   . environment-setup-armv8-2a-qcom-linux  
   ```

2. To build an image, run the `devtool build-image` command for the recipe you need:

   ```shell theme={null}
   # Overlay Config #1, fully upstream stack
   devtool build-image qcom-robotics-image

   # Overlay Config #2, full Qualcomm stack
   devtool build-image qcom-robotics-proprietary-image
   ```

3. Collect the image from the deployed directory for your machine:

<CodeGroup>
  ```text IQ-9075-EVK theme={null}
  <eSDK_install_path>/tmp/deploy/images/iq-9075-evk/qcom-robotics-proprietary-image-iq-9075-evk.rootfs.qcomflash
  ```

  ```text IQ-8275-EVK theme={null}
  <eSDK_install_path>/tmp/deploy/images/iq-8275-evk/qcom-robotics-proprietary-image-iq-8275-evk.rootfs.qcomflash
  ```
</CodeGroup>

<Note>
  **Note**

  Use a separate workspace for each machine. Switching `MACHINE` inside one workspace causes a build failure. For details, see [eSDK build fails after switching MACHINE in the same workspace](./troubleshoot#esdk-build-fails-after-switching-machine-in-the-same-workspace).
</Note>

## Flash the robotics image to devices

To flash the robotics image to the device, follow the steps in [Flash the robotics image](./flash-the-robotics-image), using the `qcom-robotics-image` or `qcom-robotics-proprietary-image` image generated in [Build the robotics image with eSDK](#build-the-robotics-image-with-esdk).

## Develop with the eSDK

All recipes supported by the robotics eSDK are located in the `meta-qcom-robotics-sdk/recipes` directory. Depending on your needs, use `devtool` to add a new recipe or modify an existing one.

For background on the workflow, see the Yocto documentation: [Using devtool in your SDK workflow](https://docs.yoctoproject.org/singleindex.html#using-devtool-in-your-sdk-workflow).

* To modify an existing recipe:

  ```shell theme={null}
  devtool modify <recipe-name>
  ```

  This command extracts the recipe's source into a local Git repository under the eSDK workspace (`workspace/sources/<recipe-name>` by default), where you can make and commit your changes.

* To add a new recipe from local source code or a Git repository:

  ```shell theme={null}
  devtool add <recipe-name> <source-location>
  ```

* After modifying or adding the source, build the recipe to verify your changes:

  ```shell theme={null}
  devtool build <recipe-name>
  ```

* Rebuild the robotics image so that the changes take effect:

  ```shell theme={null}
  devtool build-image qcom-robotics-proprietary-image
  ```

<Note>
  **Note**

  To persist your changes back to the `meta-qcom-robotics-sdk` layer as a permanent recipe, use `devtool finish <recipe-name> <layer-path>`. For details, see the Yocto documentation linked above.
</Note>

## Next steps

* [Flash the robotics image](./flash-the-robotics-image) — write the image you built to the device.
* [Enable and evaluate Qualcomm Linux overlays on QIR SDK](./enable-and-evaluate-qualcomm-linux-overlays-on-QIR-SDK) — install the overlay packages produced by the Config #2 build.
* [Troubleshoot common issues](./troubleshoot) — resolve eSDK installation and build errors.
