Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
125 changes: 125 additions & 0 deletions config/boards/qcom-robotics-rb5.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,125 @@
# Qualcomm Robotics RB5 QCS8250 Octa-core,8GB LPDDR4X/5,128GB UFS3.1,WiFi6
declare -g BOARD_NAME="Qualcomm Robotics RB5"
declare -g BOARD_MAINTAINER="FantasyGmm"
declare -g BOARDFAMILY="sm8250"
declare -g KERNEL_TARGET="current,edge"
declare -g KERNEL_TEST_TARGET="edge"
declare -g EXTRAWIFI="no"
declare -g BOOTCONFIG="none"
declare -g IMAGE_PARTITION_TABLE="gpt"
# Reserve for ABL Boot
# declare -g BOOTIMG_CMDLINE_EXTRA="clk_ignore_unused pd_ignore_unused console=tty0 console=ttyMSM0,1500000n8 pcie_pme=nomsi panic=30 allow_mismatched_32bit_el0 mem_sleep_default=s2idle"
# declare -g -a ABL_DTB_LIST=("qrb5165-rb5")

# Use the full firmware, complete linux-firmware plus Armbian's (for qcom/a650_sqe.fw)
declare -g BOARD_FIRMWARE_INSTALL="-full"

declare -g SERIALCON="${SERIALCON:-tty1}"
declare -g GRUB_CMDLINE_LINUX_DEFAULT="clk_ignore_unused pd_ignore_unused console=tty0 arm64.nopauth efi=noruntime console=ttyMSM0,1500000n8 pcie_pme=nomsi panic=30 allow_mismatched_32bit_el0 mem_sleep_default=s2idle"
declare -g BOOT_FDT_FILE="qcom/qrb5165-rb5.dtb"
declare -g SECTOR_SIZE="4096"
enable_extension "grub"
enable_extension "grub-with-dtb" # important, puts the whole DTB handling in place.

function qcom_robotics_rb5_is_userspace_supported() {
[[ "${RELEASE}" == "noble" ]] && return 0
[[ "${RELEASE}" == "trixie" ]] && return 0
return 1
}

function post_family_tweaks_bsp__qcom_robotics_rb5_firmware() {
if ! qcom_robotics_rb5_is_userspace_supported; then
if [[ "${RELEASE}" != "" ]]; then
display_alert "Missing userspace for ${BOARD}" "${RELEASE} does not have the userspace necessary to support the ${BOARD}" "warn"
fi
return 0
fi

display_alert "$BOARD" "Add services" "info"

# USB Gadget Network service
mkdir -p $destination/usr/local/bin/
mkdir -p $destination/usr/lib/systemd/system/
mkdir -p $destination/etc/initramfs-tools/scripts/init-bottom/
install -Dm655 $SRC/packages/bsp/usb-gadget-network/setup-usbgadget-network.sh $destination/usr/local/bin/
install -Dm655 $SRC/packages/bsp/usb-gadget-network/remove-usbgadget-network.sh $destination/usr/local/bin/
install -Dm644 $SRC/packages/bsp/usb-gadget-network/usbgadget-rndis.service $destination/usr/lib/systemd/system/
install -Dm655 $SRC/packages/bsp/usb-gadget-network/usb-gadget-initramfs-hook $destination/etc/initramfs-tools/hooks/usb-gadget
install -Dm655 $SRC/packages/bsp/usb-gadget-network/usb-gadget-initramfs-premount $destination/etc/initramfs-tools/scripts/init-premount/usb-gadget
install -Dm655 $SRC/packages/bsp/usb-gadget-network/dropbear $destination/etc/initramfs-tools/scripts/init-premount/
install -Dm655 $SRC/packages/bsp/usb-gadget-network/kill-dropbear $destination/etc/initramfs-tools/scripts/init-bottom/
}

function post_family_tweaks__qcom_robotics_rb5_enable_services() {
if ! qcom_robotics_rb5_is_userspace_supported; then
if [[ "${RELEASE}" != "" ]]; then
display_alert "Missing userspace for ${BOARD}" "${RELEASE} does not have the userspace necessary to support the ${BOARD}" "warn"
fi
return 0
fi

display_alert "$BOARD" "Enable services" "info"
chroot_sdcard systemctl enable usbgadget-rndis.service

return 0
}

function post_family_tweaks__qcom_robotics_rb5_extra_packages() {
if ! qcom_robotics_rb5_is_userspace_supported; then
if [[ "${RELEASE}" != "" ]]; then
display_alert "Missing userspace for ${BOARD}" "${RELEASE} does not have the userspace necessary to support the ${BOARD}" "warn"
fi
return 0
fi

if [[ "${RELEASE}" == "noble" ]]; then
do_with_retries 3 chroot_sdcard_apt_get_update
do_with_retries 3 chroot_sdcard_apt_get_install software-properties-common
fi

if [[ "${RELEASE}" == "noble" ]]; then
display_alert "Adding qcom-mainline PPA For" "${BOARD}" "info"
do_with_retries 3 chroot_sdcard add-apt-repository ppa:liujianfeng1994/qcom-mainline --yes --no-update
fi

# We need unudhcpd from armbian repo, so enable it
mv "${SDCARD}"/etc/apt/sources.list.d/armbian.sources.disabled "${SDCARD}"/etc/apt/sources.list.d/armbian.sources
do_with_retries 3 chroot_sdcard_apt_get_update
display_alert "Installing ${BOARD} tweaks" "warn"
do_with_retries 3 chroot_sdcard_apt_get_install vulkan-tools mesa-vulkan-drivers mtools zstd alsa-ucm-conf qrtr-tools unudhcpd
# disable armbian repo back
mv "${SDCARD}"/etc/apt/sources.list.d/armbian.sources "${SDCARD}"/etc/apt/sources.list.d/armbian.sources.disabled

if [[ "${DESKTOP_ENVIRONMENT}" == "kde-plasma" ]]; then
display_alert "Adding Extra KDE Package" "${BOARD}" "info"
do_with_retries 3 chroot_sdcard_apt_get_install plasma-workspace plasma-desktop plasma-systemmonitor plasma-nm kde-standard kde-spectacle kinfocenter kscreen krfb kfind filelight \
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

wouldn't this be better to move to kde commons?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It may be that I'm not entirely sure whether it's necessary to move them, as this would significantly increase the size of the KDE desktop image. After all, these packages are merely recommended for installation in my case, being commonly used software packages.

dolphin clinfo wayland-utils
fi

if [[ "${RELEASE}" == "noble" ]]; then
do_with_retries 3 chroot_sdcard_apt_get_install qbootctl
chroot_sdcard systemctl enable qbootctl.service
fi

# No driver support for suspend
chroot_sdcard systemctl mask suspend.target
}

function post_family_tweaks_bsp__qcom_robotics_rb5_bsp_firmware_in_initrd() {
display_alert "Adding to bsp-cli" "${BOARD}: firmware in initrd" "info"
declare file_added_to_bsp_destination # Will be filled in by add_file_from_stdin_to_bsp_destination
# Using Elish's firmware for now
add_file_from_stdin_to_bsp_destination "/etc/initramfs-tools/hooks/qcom-robotics-rb5-firmware" <<- 'FIRMWARE_HOOK'
#!/bin/bash
[[ "$1" == "prereqs" ]] && exit 0
. /usr/share/initramfs-tools/hook-functions
for f in /lib/firmware/qcom/sm8250/Thundercomm/RB5/* ; do
add_firmware "${f#/lib/firmware/}"
done
# Add extra firmware from both possible locations
for fw in "qcom/sm8250/a650_zap.mbn" "qcom/a650_sqe.fw" "qcom/a650_gmu.bin"; do
add_firmware "$fw"
done
FIRMWARE_HOOK
run_host_command_logged chmod -v +x "${file_added_to_bsp_destination}"
}