# GitHub workflow for unregistered users

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

The following sections provide instructions to use GitHub to make a build utilizing the
            prebuilt proprietary binary images.

## Host machine requirements

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

| Configuration | Configuration | Configuration | Tools | Permissions |
| --- | --- | --- | --- | --- |
| **Linux** | **Windows** | **Mac** | Tools | Permissions |
| x86 machine | x86 machine | x86/Arm^®^ 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) | 16-core CPU | 16-core CPU | Git 1.8.3.1 or later versions | A `sudo` permission is<br>                            required to execute a few commands. |
| 300 GB free disk space (swap partition &gt; 32 GB) | 300 GB free space for the VirtualBox VM | 300 GB free space for UTM | Python 3.10.2 or later versions | A `sudo` permission is<br>                            required to execute a few commands. |
| 16 GB RAM | 16 GB RAM | 16 GB RAM | GCC 7.5 or later versions | A `sudo` permission is<br>                            required to execute a few commands. |
| Ubuntu 22.04 | Microsoft Windows 11 OS | Apple^®^ Mac^®^ OS 14 | GNU Make 4.0 or later versions | A `sudo` permission is<br>                            required to execute a few commands. |
|  |  |  |  |  |
|  |  |  |  |  |
|  |  |  |  |  |
|  |  |  |  |  |

Note: To set up a virtual machine (VM)
            running Ubuntu 22.04 OS on Microsoft Windows or Apple Mac, see [Qualcomm Linux Virtual Machine Setup Guide](https://docs.qualcomm.com/bundle/publicresource/topics/80-70014-41/).
            Code compilation on a VM is a slow process and may take a few hours. Qualcomm recommends
            using an Ubuntu host machine for compilation.

## Build with standalone commands

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

### Ubuntu host setup

The Ubuntu host machine needs a few setup operations to ensure that the required
                software tools are installed and configured for use.

1. Install the following packages to prepare your host environment for Yocto
                    build:

        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 whiptailCopy to clipboard
2. Set up the locales (if not set up
                    already):

        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-8Copy 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 999999Copy to clipboard

### Sync

This section uses the Repo tool installed in the previous section to download a list
                of git repositories and additional attributes from the [Qualcomm manifest](https://github.com/quic-yocto/qcom-manifest). As part of this process, it downloads
                the manifest used in the `repo init` command.

The following table shows an example mapping of Yocto layers to the manifest release
                tags that are used to download and build Qualcomm Linux:

| Yocto layers | Manifest release tag | Distribution (`DISTRO`) |
| --- | --- | --- |
| <ul class="ul" id="build_with_standalone_commands_unreg__ul_b5j_xrl_qbc_vinayjk_06-06-24-1307-46-325"><br>                                    <li class="li"><code class="ph codeph">meta-qcom</code></li><br><br>                                    <li class="li"><code class="ph codeph">meta-qcom-hwe</code></li><br><br>                                </ul> | Base build: High-level OS and prebuilt firmware (GPS only)<br><br><br>                                <br>`qcom-6.6.28-QLI.1.1-Ver.1.1.xml` | `qcom-wayland` |
| <ul class="ul" id="build_with_standalone_commands_unreg__ul_c5j_xrl_qbc_vinayjk_06-06-24-1307-46-325"><br>                                    <li class="li"><code class="ph codeph">meta-qcom</code></li><br><br>                                    <li class="li"><code class="ph codeph">meta-qcom-hwe</code></li><br><br>                                    <li class="li"><code class="ph codeph">meta-qcom-qim-product-sdk</code></li><br><br>                                </ul> | Base build + QIMP SDK build:<br><br><br>                                <br>`qcom-6.6.28-QLI.1.1-Ver.1.1_qim-product-sdk-1.1.3.xml` | `qcom-wayland` |
| <ul class="ul" id="build_with_standalone_commands_unreg__ul_az4_njb_wbc_vinayjk_06-26-24-1355-19-162"><br>                                    <li class="li"><code class="ph codeph">meta-qcom</code></li><br><br>                                    <li class="li"><code class="ph codeph">meta-qcom-hwe</code></li><br><br>                                    <li class="li"><code class="ph codeph">meta-qcom-realtime</code></li><br><br>                                </ul> | Base build + Real-time kernel build:<br><br><br>                                <br>`qcom-6.6.28-QLI.1.1-Ver.1.1_realtime-linux-1.0.xml` | `qcom-wayland` |
| <ul class="ul" id="build_with_standalone_commands_unreg__ul_rlp_q2t_qbc_vinayjk_06-07-24-1350-57-451"><br>                                    <li class="li"><code class="ph codeph">meta-qcom</code></li><br><br>                                    <li class="li"><code class="ph codeph">meta-qcom-hwe</code></li><br><br>                                    <li class="li"><code class="ph codeph">meta-ros</code></li><br><br>                                    <li class="li"><code class="ph codeph">meta-qcom-robotics</code></li><br><br>                                    <li class="li"><code class="ph codeph">meta-qcom-robotics-distro</code></li><br><br>                                    <li class="li"><code class="ph codeph">meta-qcom-robotics-sdk</code></li><br><br>                                    <li class="li"><code class="ph codeph">meta-qcom-qim-product-sdk</code></li><br><br>                                </ul> | Base build + QIRP SDK build:<br><br><br>                                <br>`qcom-6.6.28-QLI.1.1-Ver.1.1_robotics-product-sdk-1.1.xml` | `qcom-robotics-ros2-humble` |

For Yocto layer descriptions, see [Table : 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).

### Build base image

1. Download Qualcomm Yocto and supporting
                        layers:

        # cd to directory where you have 300 GB of free storage space to create your workspaces
        mkdir <WORKSPACE_DIR>
        cd <WORKSPACE_DIR>
        repo init -u https://github.com/quic-yocto/qcom-manifest -b qcom-linux-kirkstone -m <manifest release tag>
        # Example, <manifest release tag> is qcom-6.6.28-QLI.1.1-Ver.1.1.xml
        repo syncCopy to clipboard

Note: For the latest
                            `<manifest release tag>`, see the <cite class="cite">Build-critical
                            release tags</cite> section in the [Release
                            Notes](https://docs.qualcomm.com/bundle/publicresource/topics/RNO-240626095531/).
2. Set up the build
                    environment:

        MACHINE=qcm6490 DISTRO=qcom-wayland source setup-environment
        # source setup-environment: Sets the environment settings, creates the build directory build-qcom-wayland,
        # and enters into build-qcom-wayland directory.Copy to clipboard
3. Build the software image:
Note: For supported image
                        recipes, see [What are the image recipes supported as part of the GitHub workflow?](https://docs.qualcomm.com/doc/80-70014-254/topic/how_to.html#howto_build__section_x3c_n5l_zbc_vinayjk_07-08-24-1744-58-455).

        bitbake <image recipes>
        bitbake qcom-multimedia-imageCopy to clipboard

On successful build, you can
                        check if `system.img` is present in the
                            `<workspace_path>/build-qcom-wayland/tmp-glibc/deploy/images/qcm6490/qcom-multimedia-image`
                        directory:

        cd <workspace_path>/build-qcom-wayland/tmp-glibc/deploy/images/qcm6490/qcom-multimedia-image
        ls -al system.imgCopy to clipboard

### Build QIMP SDK image

1. Download Qualcomm Yocto and supporting layers:
Note: The `<manifest
                            release tag>` for the QIMP SDK build is the same as the base
                        build. The QIMP SDK layer must be cloned on top of the base build.
For the
                            latest `<manifest release tag>`, see the
                                <cite class="cite">Build-critical release tags</cite> section in the [Release
                                Notes](https://docs.qualcomm.com/bundle/publicresource/topics/RNO-240626095531/).

        # cd to directory where you have 300 GB of free storage space to create your workspaces
        mkdir <WORKSPACE_DIR>
        cd <WORKSPACE_DIR>
        repo init -u https://github.com/quic-yocto/qcom-manifest -b qcom-linux-kirkstone -m <manifest release tag>
        # Example, <manifest release tag> is qcom-6.6.28-QLI.1.1-Ver.1.1.xml
        repo syncCopy to clipboard
2. Clone QIMP SDK layer into the
                        workspace:

        git clone https://github.com/quic-yocto/meta-qcom-qim-product-sdk -b <qim-product-sdk release tag> layers/meta-qcom-qim-product-sdk
        # Example, <qim-product-sdk release tag> is qcom-6.6.28-QLI.1.1-Ver.1.1_qim-product-sdk-1.1.3Copy to clipboard

To
                        build a QIMP SDK layer, the following export is
                        required:

        export EXTRALAYERS="meta-qcom-qim-product-sdk"Copy to clipboard
3. Set up the build
                    environment:

        MACHINE=qcm6490 DISTRO=qcom-wayland source setup-environment
        # source setup-environment: Sets the environment settings, creates the build directory build-qcom-wayland,
        # and enters into build-qcom-wayland directory.Copy to clipboard
4. Build the software
                        image:

        bitbake qcom-multimedia-image
        # Build SDK image
        bitbake qim-product-sdkCopy to clipboard

On successful build, you can check if
                            `system.img` is present in the
                            `<workspace_path>/build-qcom-wayland/tmp-glibc/deploy/images/qcm6490/qcom-multimedia-image`
                        directory:

        cd <workspace_path>/build-qcom-wayland/tmp-glibc/deploy/images/qcm6490/qcom-multimedia-image
        ls -al system.imgCopy to clipboard

### Build QIRP SDK image

1. Download Qualcomm Yocto and supporting layers:
Note: The `<manifest
                            release tag>` for QIRP SDK build is the same as the base build.
                        QIRP SDK layers must be cloned on top of the base
                        build.

        # cd to directory where you have 300 GB of free storage space to create your workspaces
        mkdir <WORKSPACE_DIR>
        cd <WORKSPACE_DIR>
        repo init -u https://github.com/quic-yocto/qcom-manifest -b qcom-linux-kirkstone -m <manifest release tag>
        # Example, <manifest release tag> is qcom-6.6.28-QLI.1.1-Ver.1.1.xml
        repo syncCopy to clipboard

Note: For the latest
                            `<manifest release tag>`, see the <cite class="cite">Build-critical
                            release tags</cite> section in the [Release
                            Notes](https://docs.qualcomm.com/bundle/publicresource/topics/RNO-240626095531/).
2. Download the QIRP SDK layers into the base build `<WORKSPACE
                        DIR>`
                    directory:

        git clone https://git.codelinaro.org/clo/le/meta-ros.git -b ros.qclinux.1.0.r1-rel layers/meta-ros
        git clone https://github.com/quic-yocto/meta-qcom-robotics.git layers/meta-qcom-robotics
        git clone https://github.com/quic-yocto/meta-qcom-robotics-distro.git layers/meta-qcom-robotics-distro
        git clone https://github.com/quic-yocto/meta-qcom-robotics-sdk.git layers/meta-qcom-robotics-sdk
        git clone https://github.com/quic-yocto/meta-qcom-qim-product-sdk layers/meta-qcom-qim-product-sdkCopy to clipboard
3. Set up the build
                    environment:

        ln -s layers/meta-qcom-robotics-distro/set_bb_env.sh ./setup-robotics-environment
        ln -s layers/meta-qcom-robotics-sdk/scripts/qirp-build ./qirp-build
        MACHINE=qcm6490 DISTRO=qcom-robotics-ros2-humble source setup-robotics-environment
        # source setup-robotics-environment: Sets the environment settings, creates the build directory build-qcom-robotics-ros2-humble,
        # and enters into build-qcom-robotics-ros2-humble directory.Copy to clipboard
4. Build the robotics image and QIRP SDK
                        artifacts:

        ../qirp-build qcom-robotics-full-imageCopy to clipboard

On
                        a successful build, you can see the QIRP SDK build artifacts at the
                        following
                        paths:

        QIRP SDK artifacts: <WORKSPACE DIR>/build-qcom-robotics-ros2-humble/tmp-glibc/deploy/qirpsdk_artifacts/qirp-sdk_<version>.tar.gz
        # system.img is present in the following path
        Robotics image: <WORKSPACE DIR>/build-qcom-robotics-ros2-humble/tmp-glibc/deploy/images/qcm6490/qcom-robotics-full-imageCopy to clipboard

### Build real-time Linux image

1. Download Qualcomm Yocto and supporting layers:
Note: The `<manifest
                            release tag>` for real-time Linux image is the same as the base
                        build. Real-time Linux must be cloned on top of the base
                        build.

        # cd to directory where you have 300 GB of free storage space to create your workspaces
        mkdir <WORKSPACE_DIR>
        cd <WORKSPACE_DIR>
        repo init -u https://github.com/quic-yocto/qcom-manifest -b qcom-linux-kirkstone -m <manifest release tag>
        # Example, <manifest release tag> is qcom-6.6.28-QLI.1.1-Ver.1.1.xml
        repo syncCopy to clipboard

Note: For the latest
                            `<manifest release tag>`, see the <cite class="cite">Build-critical
                            release tags</cite> section in the [Release
                            Notes](https://docs.qualcomm.com/bundle/publicresource/topics/RNO-240626095531/).
2. Clone real-time Linux layer into the
                        workspace:

        git clone https://github.com/quic-yocto/meta-qcom-realtime -b <meta-qcom-realtime release tag> layers/meta-qcom-realtime
        # Example, <meta-qcom-realtime release tag> is qcom-6.6.28-QLI.1.1-Ver.1.1_realtime-linux-1.0Copy to clipboard

To
                        build a real-time layer, the following export is
                        required:

        export EXTRALAYERS="meta-qcom-realtime"Copy to clipboard
3. Set up the build
                    environment:

        MACHINE=qcm6490 DISTRO=qcom-wayland source setup-environment
        # source setup-environment: Sets the environment settings, creates the build directory build-qcom-wayland,
        # and enters into build-qcom-wayland directoryCopy to clipboard
4. Build the software
                        image:

        bitbake qcom-multimedia-imageCopy to clipboard

On
                        successful build, you can check if `system.img` is present in
                        the
                            `<workspace_path>/build-qcom-wayland/tmp-glibc/deploy/images/qcm6490/qcom-multimedia-image`
                        directory:

        cd <workspace_path>/build-qcom-wayland/tmp-glibc/deploy/images/qcm6490/qcom-multimedia-image
        ls -al system.imgCopy to clipboard

### Flash

Flash software images to the device using [Flash images for unregistered users](https://docs.qualcomm.com/doc/80-70014-254/topic/flash_images_unregistered.html).

Last Published: Aug 07, 2024

[Previous Topic
Build with QSC CLI](https://docs.qualcomm.com/bundle/publicresource/80-70014-254/topics/build_from_source_QSC_CLI.md) [Next Topic
GitHub workflow for registered users](https://docs.qualcomm.com/bundle/publicresource/80-70014-254/topics/build_from_source_github_intro.md)