# Build with QSC CLI

Source: [https://docs.qualcomm.com/doc/80-70014-254/topic/build_from_source_QSC_CLI.html](https://docs.qualcomm.com/doc/80-70014-254/topic/build_from_source_QSC_CLI.html)

The following sections provide instructions to build Qualcomm Linux using the QSC
            CLI.

## Host machine requirements

Source: [https://docs.qualcomm.com/doc/80-70014-254/topic/build_from_source_QSC_CLI.html](https://docs.qualcomm.com/doc/80-70014-254/topic/build_from_source_QSC_CLI.html)

| Configuration | Tools | Permissions |
| --- | --- | --- |
| x86 machine | Git 1.8.3.1 or later versions | A `sudo` permission is<br>                                required to execute a few commands. |
| Quad-core CPU, for example, Intel i7-2600 at 3.4 GHz<br>                                (equivalent or better) | Tar 1.28 or later versions | A `sudo` permission is<br>                                required to execute a few commands. |
| 300 GB free disk space (swap partition &gt;<br>                                32 GB) | Python 3.10.2 or later versions | A `sudo` permission is<br>                                required to execute a few commands. |
| 16 GB RAM | GCC 7.5 or later versions | A `sudo` permission is<br>                                required to execute a few commands. |
| Ubuntu 22.04 | GNU Make 4.0 or later versions | A `sudo` permission is<br>                                required to execute a few commands. |
|  |  |  |
|  |  |  |
|  |  |  |
|  |  |  |

## Install QSC CLI

Source: [https://docs.qualcomm.com/doc/80-70014-254/topic/build_from_source_QSC_CLI.html](https://docs.qualcomm.com/doc/80-70014-254/topic/build_from_source_QSC_CLI.html)

Set up `qsc-cli`:
1. Install curl (if not already
                        installed):

        sudo apt install curlCopy to clipboard
2. Download the Debian package for
                        `qsc-cli`:

        cd <workspace_path>
        curl -L https://softwarecenter.qualcomm.com/api/download/software/qsc/linux/latest.deb -o qsc_installer.debCopy to clipboard
3. Install the `qsc-cli` Debian
                        package:

        sudo dpkg -i qsc_installer.debCopy to clipboard
4. Log in to
                        `qsc-cli`:

        qsc-cli login -u <username>Copy to clipboard

Note: A one-time login into [chipcode.qti.qualcomm.com](http://chipcode.qti.qualcomm.com/) is required to download Qualcomm
                    proprietary git repositories. Use your Qualcomm login credentials to complete
                    this step.
For more details, see `qsc-cli` related topics in
                            [How to](https://docs.qualcomm.com/doc/80-70014-254/topic/how_to.html).

## Use QSC CLI

Source: [https://docs.qualcomm.com/doc/80-70014-254/topic/build_from_source_QSC_CLI.html](https://docs.qualcomm.com/doc/80-70014-254/topic/build_from_source_QSC_CLI.html)

This section provides instructions on how to download, compile, and recompile
        Qualcomm Linux using QSC CLI.

### Download

Note: 
                
If you are building a distribution with access level "Registered developer from a
                    verified organization" or "Licensed customers with additional access", then you
                    must log in to `qpm-cli` before you
                    compile:

    # Run the following command to login
    qpm-cli --login
    # Run the following command to verify if qpm-cli login is successful
    qpm-cli --product-listCopy to clipboard

This command prompts for your username and password. After successfully logging
                    in, the system fetches and refreshes the product list.

- Download a particular software release by specifying the product ID, build
                        ID, distribution, and the absolute/full workspace path as shown in the
                        following
                        example:

        # qsc-cli download --workspace-path '<absolute_workspace_path>' --product '<Product_ID>' --build '<Build_ID>' --distribution '<Distro>'Copy to clipboard

    - Select Product\_ID and Build\_ID values from the **QSC-CLI Input                                    Parameters** table in the
                                [Release
                                    Notes](https://docs.qualcomm.com/bundle/publicresource/topics/RNO-240626095531/).

Example: For QCM6490 with Linux embedded (LE) build, the input
                                parameters are shown in the following table:

| **Product\_ID (--product)** | QCM6490.LE.1.0Copy to clipboard |
        | --- | --- |
        | **Build\_ID (--build)** | QCM6490.LE.1.0-00218-STD.PROD-1Copy to clipboard |
    - Select the appropriate distribution to download. Distribution access
                                is controlled by access levels as listed in the following
                                    table:
Note: For more details on the available distributions, see **Access                                        Controlled Distribution** table in the [Release
                                        Notes](https://docs.qualcomm.com/bundle/publicresource/topics/RNO-240626095531/).

| **Access level** | **Distribution** | Yocto layers |
        | --- | --- | --- |
        | Unregistered/community<br>                                                  developer | Base build: High-level operating system (OS)<br>                                                  and prebuilt firmware (GPS<br>                                                  only)<br>`Qualcomm_Linux.SPF.1.0|TEST|DEVICE|PUBLIC` | `meta-qcom`<br><br><br>                                                  <br>`meta-qcom-hwe` |
        | Unregistered/community<br>                                                  developer | Base build + Qualcomm Intelligent Multimedia<br>                                                  Product (QIMP)<br>                                                  SDK<br>`Qualcomm_Linux.SPF.1.0|TEST|DEVICE|PB_QIMPSDK` | `meta-qcom`<br><br><br>                                                  <br>`meta-qcom-hwe`<br><br><br>                                                  <br>`meta-qcom-qim-product-sdk` |
        | Unregistered/community<br>                                                  developer | Base build + QIMP SDK + Qualcomm Intelligent<br>                                                  Robotics Product (QIRP)<br>                                                  SDK<br>`Qualcomm_Linux.SPF.1.0|TEST|DEVICE|RoboApiLnx` | `meta-qcom`<br><br><br>                                                  <br>`meta-qcom-hwe`<br><br><br>                                                  <br>`meta-ros`<br><br><br>                                                  <br>`meta-qcom-robotics`<br><br><br>                                                  <br>`meta-qcom-robotics-distro`<br><br><br>                                                  <br>`meta-qcom-robotics-sdk`<br><br><br>                                                  <br>`meta-qcom-qim-product-sdk` |
        | Registered developer from a<br>                                                  verified organization | Base build: High-level OS and firmware source<br>                                                  (GPS<br>                                                  only)<br>`Qualcomm_Linux.SPF.1.0|AP|Standard|OEM|NoModem` | `meta-qcom`<br><br><br>                                                  <br>`meta-qcom-hwe`<br><br><br>                                                  <br>`meta-qcom-extras` |
        | Registered developer from a<br>                                                  verified organization | Base build + QIMP<br>                                                  SDK<br>`Qualcomm_Linux.SPF.1.0|AP|Standard|OEM|NM_QIMPSDK` | `meta-qcom`<br><br><br>                                                  <br>`meta-qcom-hwe`<br><br><br>                                                  <br>`meta-qcom-extras`<br><br><br>                                                  <br>`meta-qcom-qim-product-sdk` |
        | Registered developer from a<br>                                                  verified organization | Base build + QIMP SDK + QIRP<br>                                                  SDK<br>`Qualcomm_Linux.SPF.1.0|AP|Standard|OEM|NM_QIRPSDK` | `meta-qcom`<br><br><br>                                                  <br>`meta-qcom-hwe`<br><br><br>                                                  <br>`meta-qcom-extras`<br><br><br>                                                  <br>`meta-qcom-robotics-extras`<br><br><br>                                                  <br>`meta-ros`<br><br><br>                                                  <br>`meta-qcom-robotics`<br><br><br>                                                  <br>`meta-qcom-robotics-distro`<br><br><br>                                                  <br>`meta-qcom-robotics-sdk`<br><br><br>                                                  <br>`meta-qcom-qim-product-sdk` |
        | Licensed developer with<br>                                                  additional access | Base build: High-level OS and firmware (GPS<br>                                                  only)<br>                                                  source<br>`Qualcomm_Linux.SPF.1.0|AP|Standard|OEM|` | `meta-qcom`<br><br><br>                                                  <br>`meta-qcom-hwe`<br><br><br>                                                  <br>`meta-qcom-extras` |
        | Licensed developer with<br>                                                  additional access | Base build + QIMP SDK (GPS<br>                                                  only)<br>`Qualcomm_Linux.SPF.1.0|AP|Standard|OEM|QIMPSDK` | `meta-qcom`<br><br><br>                                                  <br>`meta-qcom-hwe`<br><br><br>                                                  <br>`meta-qcom-extras`<br><br><br>                                                  <br>`meta-qcom-qim-product-sdk` |
        | Licensed developer with<br>                                                  additional access | Base build: High-level OS and firmware (GPS<br>                                                  and modem)<br>                                                  source<br>`Qualcomm_Linux.SPF.1.0|AMSS|Standard|OEM|` | `meta-qcom`<br><br><br>                                                  <br>`meta-qcom-hwe`<br><br><br>                                                  <br>`meta-qcom-extras` |
        | Licensed developer with<br>                                                  additional access | Base build + QIMP SDK (GPS and<br>                                                  modem)<br>`Qualcomm_Linux.SPF.1.0|AMSS|Standard|OEM|QIMPSDK` | `meta-qcom`<br><br><br>                                                  <br>`meta-qcom-hwe`<br><br><br>                                                  <br>`meta-qcom-extras`<br><br><br>                                                  <br>`meta-qcom-qim-product-sdk` |
        |  |  |  |
        |  |  |  |
        |  |  |  |

For Yocto layer descriptions, see [Table :  1. Qualcomm Linux Yocto layers](https://docs.qualcomm.com/doc/80-70014-254/topic/build_from_source_qsc_gui_intro.html#concept_n2t_tjn_w1c__Yocto_layer_descriptions).
- Start the download:

        # cd to directory where you have 300 GB of free storage space to create your workspaces
        mkdir <WORKSPACE_DIR>
        cd <WORKSPACE_DIR>
        # WORKSPACE_DIR=/local/mnt/workspace/Qworkspace_QIMPSDK
        
        # Example
        qsc-cli download --workspace-path '/local/mnt/workspace/Qworkspace_QIMPSDK' --product 'QCM6490.LE.1.0' --build 'QCM6490.LE.1.0-00218-STD.PROD-1' --distribution 'Qualcomm_Linux.SPF.1.0|TEST|DEVICE|PB_QIMPSDK'Copy to clipboard

When the process is completed successfully, the software product is available in the
                user-provided workspace directory.

Note: A new workspace is required for
                each distribution if you are downloading more than one distribution.

### Compile

Start the compilation after the download completes:
Note: Depending on the size of the
                    software and host machine configuration, compilation may take a few
                    hours.

    qsc-cli compile --workspace-path '<absolute_workspace_path>'
     
    # Example
    qsc-cli compile --workspace-path '/local/mnt/workspace/Qworkspace_QIMPSDK'Copy to clipboard

This process builds the Qualcomm firmware as needed and also completes the build for
                the Qualcomm Linux.

Note: If you see a BitBake fetcher
                error, retry compilation to work around this error. If the issue persists, see [BitBake Fetcher Error](https://docs.qualcomm.com/doc/80-70014-254/topic/troubleshoot_sync_build_and_flash.html#troubleshoot_sync_build_and_flash__do_fetch_error) for a solution.

On a successful build of the `qcom-wayland` distributions, you can see
                the images at the following
                path:

    # system.img is present at the following path
    <workspace_path>/DEV/LE.QCLINUX.1.0.r1/build-qcom-wayland/tmp-glibc/deploy/images/qcm6490/qcom-multimedia-image/*Copy to clipboard

On a successful build of the `qcom-robotics-ros2-humble` (QIRP)
                distribution, you can see the QIRP SDK build artifacts at the following
                paths:

    QIRP SDK artifacts: <workspace_path>/DEV/LE.QCROBOTICS.1.0.r1/build-qcom-robotics-ros2-humble/tmp-glibc/deploy/qirpsdk_artifacts/qirp-sdk_<version>.tar.gz
    # system.img is present at the following path
    Robotics image: <workspace_path>/DEV/LE.QCROBOTICS.1.0.r1/build-qcom-robotics-ros2-humble/tmp-glibc/deploy/images/qcm6490/qcom-robotics-full-image/*Copy to clipboard

### Recompile

Recompile your workspace if you already have a workspace built using QSC CLI:

# qsc-cli compile --image '<software_image_name>' --workspace-path '<absolute_workspace_path>'
     
    # Example
    qsc-cli compile --image LE.QCLINUX.1.0.r1 --workspace-path '/local/mnt/workspace/Qworkspace_QIMPSDK'Copy to clipboard

Note: For more information on software
                image names (`--image`), see QSC-CLI input parameters table in the
                    [Release
                    Notes](https://docs.qualcomm.com/bundle/publicresource/topics/RNO-240626095531/).

### Flash

For the steps to flash software images to the device, see [Flash images for registered users](https://docs.qualcomm.com/doc/80-70014-254/topic/flash_images.html).

Last Published: Aug 07, 2024

[Previous Topic
Build with QSC Launcher](https://docs.qualcomm.com/bundle/publicresource/80-70014-254/topics/build_from_source_qsc_gui_intro.md) [Next Topic
GitHub workflow for unregistered users](https://docs.qualcomm.com/bundle/publicresource/80-70014-254/topics/github_workflow_unregistered_users.md)