Skip to main content

Ubuntu 24.04 x07

Platform Summary

  • Ubuntu 24.04 x07 (6.8.0-1057-qcom)
  • Kernel 6.8.12

Qualcomm Ubuntu Build System

This document describes how to work with the RISC and Qualcomm Ubuntu Board Support Package (BSP) release.

Introduction

A Makefile-based build system for Qualcomm Ubuntu projects, driven by YAML configuration for flexibility and automation.

FeatureDescription
ContainerizedUses Docker (advrisc/u24.04-qcsubv1) to ensure a consistent and reproducible build environment.
YAML-based ConfigurationMachine and build parameters managed in configs/defaults.yaml.
Automatic LoggingBuild output automatically saved to timestamped files in logs/. Use NOLOG=1 to disable.
Debug / Release ModeSelectable via BUILD_MODE=DEBUG|RELEASE.
Fast Module DebuggingCompile specific kernel subdirectories or out-of-tree modules via make modules M=....

Host machine requirements

  • Ubuntu 22.04 or Ubuntu 24.04
  • Intel Core-i7 Processor (>= 8 cores)
  • 16+ GB RAM
  • 350 GB free disk space (more is recommended and SSD is suggested for better performance)
  • Docker version 29.1.4 or later (Docker Installation Guide for more details)

Host dependencies

Install helper tools on the host when you encounter Exec format error or similar issues:

sudo apt-get update
sudo apt-get install qemu-user-static repo

Download Latest BSP version

mkdir $HOME/<workspace>
cd $HOME/<workspace>
repo init -u https://dev.azure.com/AIM-Linux/risc_qcs_ubuntu/_git/manifest -b main -m <manifest_file_name>
repo sync -c -j$(nproc)

Example:

repo init -u https://dev.azure.com/AIM-Linux/risc_qcs_ubuntu/_git/manifest -b main -m aom2721a1_ubuntu24.04-x07_v0.0.0_kernel-6.8.12_qcs6490.xml

Pull docker images

sudo docker pull advrisc/u24.04-qcsubv1:latest

Run docker example

(Option 1) Use default user in container:

sudo docker run -it --privileged -v=<workspace>:/home/adv/BSP -v=/dev:/dev --name=build_qcs_ubuntu advrisc/u24.04-qcsubv1

(Option 2) Dynamically create a host user in container (Recommend):

sudo docker run -it \
--env UNAME=$USER \
--env HOST_UID=$(id -u) \
--env HOST_GID=$(id -g) \
--privileged \
--volume=$HOME/<workspace>:/home/$USER/<workspace> \
--volume=/dev:/dev \
--name=build_qcs_ubuntu \
advrisc/u24.04-qcsubv1

Build Instructions

1. Select machine

Select the target machine before building (required first step). Default build mode is RELEASE:

make <machine>

To build in DEBUG mode:

make <machine> BUILD_MODE=DEBUG

Example:

make afea503a1
make afea503a1 BUILD_MODE=DEBUG

2. Build

Build all components:

make all

Generate a flashable image:

make install

Output images: <workspace>/images/<machine>/qcom-ubuntu-image

(Optional) Build individual components:

make kernel
make dtb
make modules M=<path_to_subdir_or_ext_module>
make rootfs
make install

For make modules, .ko files are automatically collected into images/modules/.

3. Clean

Remove kernel build artifacts:

make clean

4. Other Commands

Show help and supported machines

make

Show current configuration:

make printenv

Edit kernel config:

make menuconfig

Mount/unmount Ubuntu root filesystem (requires .img file in images/):

make mount
make unmount

5. Old version build scripts

The scripts folder should exists build_release.sh and the git branch is not in main

scripts/build_release.sh                        # Show help

scripts/build_release.sh [OPTIONS] [UBUNTU_MACHINE] [DISTRO_IMAGE]

OPTIONS:
-help | Displays this help
-kernel | Build ubuntu kernel with deb file
-dts | Build ubuntu device tree
-rootfs | Build ubuntu rootfs
-ubuntu | Build ubuntu and generate image
-image | Generate image

UBUNTU_MACHINE:
-afea503a1 | Build afea503a1 image
-air055a1 | Build air055a1 image
-aom2721a1 | Build aom2721a1 image
-asrd501a1 | Build asrd501a1 image
-mio5355a1 | Build mio5355a1 image

DISTRO_IMAGE:
-debug | Build debug image
-release | Build release image

Example

scripts/build_release.sh -ubuntu -afea503a1 -debug

Directory Structure

  • manifest/: Repo manifest files for project synchronization.
  • boot-firmware/: Storage partition tables and NHLOS images for each project.
  • configs/: YAML configuration files for machines and build parameters.
  • download/: Reference board boot firmware, Ubuntu root filesystem, and rootfs partition table.
  • noble/: Ubuntu kernel source code.
  • scripts/: Build scripts and Makefiles.
  • tools/: Custom tools such as out-of-tree kernel modules, pre-install Debian packages, and other utilities.
  • logs/: Timestamped build logs.
  • images/: Build output directory.

Support List for Latest Manifest

PlatformDeviceManifest XML
QCS6490AOM-2721aom2721a1_ubuntu24.04-x07_v0.0.0_kernel-6.8.12_qcs6490.xml
QCS6490ASR-D501asrd501a1_ubuntu24.04-x07_v0.0.0_kernel-6.8.12_qcs6490.xml
QCS6490DS-011ds011a1_ubuntu24.04-x07_v0.0.0_kernel-6.8.12_qcs6490.xml
QCS6490MIO5355mio5355a1_ubuntu24.04-x07_v0.0.0_kernel-6.8.12_qcs6490.xml
IQ9075AFE-A503afea503a1_ubuntu24.04-x07_v0.0.0_kernel-6.8.12_iq9075.xml
IQ9075AIR-055air055a1_ubuntu24.04-x07_v0.0.0_kernel-6.8.12_iq9075.xml

Download and build specific BSP version

Please use BSP Launcher

Flash local image

Using Qualcomm Device Loader (QDL) tool to flash software images to the device.

QDL User and Installation Guide

Overview

Qualcomm Device Loader (QDL ) is a software tool that communicates with Qualcomm USB devices to upload a flash loader and flash software images.

Installation Guide

  1. Download Qualcomm Device Loader from below link https://softwarecenter.qualcomm.com/catalog/item/Qualcomm_Device_Loader

  2. According your host mach to select OS type and which version you want qdl_downalod_page.png

  3. Unzip download file in any path

  4. Serach Edit the system environment variables (環境變數) to open Advanced system settings Also you can open Settings app → System → About → Advanced system settings → Advanced qdl_open_system_environment.png

  5. Select Environment Variables (環境變數) qdl_environment_variable.png

  6. Select Path then edit (編輯) qdl_edit_environment_path.png

  7. Select New (新增) and type the Qualcomm Device Loader path then select OK (確定) qdl_add_environment_path.png

  8. Search cmd to open Windows Terminal

qdl_cmd.png

  1. Type qdl and you can see the QDL usage now!! qdl_terminal.png

You can see the QDL_User_Guide.pdf for more details qdl_user_guide.png

winUSB Installation Guide

  1. Let board enter EDL mode

Please check Device Guides for more details

  1. Connect the EDL USB port to PC

  2. Search device manager (裝置管理員) qdl_open_device_manager.png

  3. Uninstall other drivers for the device qdl_remove_usb.png

  4. Open install_driver.bat in QDL path to install winUSB driver qdl_install_usb_driver_bat.png

  5. Press any key to close window qdl_usb_driver_install_success.png

Let device in EDL mode and connect the EDL USB Port to HOST.

Please check Device Guides for more details

Open terminal and enter the image folder

cd <workspace>/images/<machine>/qcom-ubuntu-image

Choosing the platform to flashing image.

QCS6490

QCS6490 Platform Flashing Guide

Flash provision (Once only)

  1. Erase UFS
qdl prog_firehose_ddr.elf provision_ufs31.xml

qcs6490_flash_provision.png

Flash root filesystem

qdl prog_firehose_ddr.elf rawprogram*.xml patch*.xml

qcs6490_flash_image.png

IQ9075

IQ9075 Platform Flashing Guide

Flash provision (Once only)

  1. Erase UFS
qdl prog_firehose_ddr.elf provision_1_2.xml

iq9075_flash_provision.png

Flash Safety Island

  1. Enter sail_nor folder
cd sail_nor
  1. Flash sail_nor
qdl --storage spinor prog_firehose_ddr.elf rawprogram0.xml patch0.xml

iq9075_flash_sail.png

  1. Back to the root path
cd ..

Flash root filesystem

qdl prog_firehose_ddr.elf rawprogram*.xml patch*.xml

iq9075_flash_image.png

Switch device to Normal Mode and power on device

Device Guides

QCS6490

SW1 1           2   
UFS ON           ON 
eMMCOFF         ON 
SW2 1           2   
ON   USB EDL ModeAT 
OFF Normal  ModeATX

IQ9075

SW3           1   2   
USB EDL Mode ON   ON   
Normal  Mode OFF OFF 
SW4 1   
ON   AT 
OFF ATX