mirror of
https://github.com/armbian/build
synced 2025-09-24 19:47:06 +07:00
174 lines
6.6 KiB
Plaintext
174 lines
6.6 KiB
Plaintext
# Rockchip RK3588S octa core 4/8/16GB RAM SoC NVMe USB3 USB-C GbE
|
|
BOARD_NAME="Orange Pi 5"
|
|
BOARDFAMILY="rockchip-rk3588"
|
|
BOARD_MAINTAINER="efectn"
|
|
BOOTCONFIG="orangepi-5-rk3588s_defconfig" # vendor name, not standard, see hook below, set BOOT_SOC below to compensate
|
|
BOOTCONFIG_SATA="orangepi-5-sata-rk3588s_defconfig"
|
|
BOOT_SOC="rk3588"
|
|
KERNEL_TARGET="current,edge,vendor"
|
|
KERNEL_TEST_TARGET="vendor,current"
|
|
FULL_DESKTOP="yes"
|
|
BOOT_LOGO="desktop"
|
|
BOOT_FDT_FILE="rockchip/rk3588s-orangepi-5.dtb"
|
|
BOOT_SCENARIO="spl-blobs"
|
|
BOOT_SUPPORT_SPI="yes"
|
|
BOOT_SPI_RKSPI_LOADER="yes"
|
|
IMAGE_PARTITION_TABLE="gpt"
|
|
declare -g UEFI_EDK2_BOARD_ID="orangepi-5" # This _only_ used for uefi-edk2-rk3588 extension
|
|
|
|
declare -g BLUETOOTH_HCIATTACH_PARAMS="-s 115200 /dev/ttyS9 bcm43xx 1500000" # For the bluetooth-hciattach extension
|
|
enable_extension "bluetooth-hciattach" # Enable the bluetooth-hciattach extension
|
|
|
|
# Mainline U-Boot for current kernel
|
|
function post_family_config__orangepi5_use_mainline_uboot() {
|
|
if [[ $BRANCH == "vendor" ]]; then
|
|
return
|
|
fi
|
|
|
|
display_alert "$BOARD" "Mainline U-Boot overrides for $BOARD - $BRANCH" "info"
|
|
|
|
declare -g BOOTCONFIG="orangepi-5-rk3588s_defconfig" # override the default for the board/family
|
|
declare -g BOOTDELAY=1 # Wait for UART interrupt to enter UMS/RockUSB mode etc
|
|
declare -g BOOTSOURCE="https://github.com/u-boot/u-boot.git" # We ❤️ mainline U-Boot
|
|
declare -g BOOTBRANCH="tag:v2025.04"
|
|
declare -g BOOTPATCHDIR="v2025.04"
|
|
declare -g BOOTDIR="u-boot-${BOARD}" # do not share u-boot directory
|
|
declare -g UBOOT_TARGET_MAP="BL31=${RKBIN_DIR}/${BL31_BLOB} ROCKCHIP_TPL=${RKBIN_DIR}/${DDR_BLOB} $BOOTCONFIG_SATA;;u-boot-rockchip-spi-sata.bin
|
|
BL31=${RKBIN_DIR}/${BL31_BLOB} ROCKCHIP_TPL=${RKBIN_DIR}/${DDR_BLOB} $BOOTCONFIG;;u-boot-rockchip.bin u-boot-rockchip-spi.bin"
|
|
unset uboot_custom_postprocess write_uboot_platform write_uboot_platform_mtd # disable stuff from rockchip64_common; we're using binman here which does all the work already
|
|
|
|
# Just use the binman-provided u-boot-rockchip.bin, which is ready-to-go
|
|
function write_uboot_platform() {
|
|
dd "if=$1/u-boot-rockchip.bin" "of=$2" bs=32k seek=1 conv=notrunc status=none
|
|
}
|
|
|
|
function write_uboot_platform_mtd() {
|
|
FILES=$(find "$1" -maxdepth 1 -type f -name "u-boot-rockchip-spi*.bin")
|
|
if [ -z "$FILES" ]; then
|
|
echo "No SPI image found."
|
|
exit 1
|
|
fi
|
|
|
|
MENU_ITEMS=()
|
|
i=1
|
|
|
|
# Read the files into an array
|
|
while IFS= read -r file; do
|
|
filename=$(basename "$file")
|
|
MENU_ITEMS+=("$i" "$filename" "")
|
|
((i++))
|
|
done <<< "$FILES"
|
|
|
|
# If there is only one image, we can skip the dialog
|
|
if [[ $i -eq 2 ]]; then
|
|
flashcp -v -p "$1/${MENU_ITEMS[1]}" /dev/mtd0
|
|
return
|
|
fi
|
|
|
|
[[ -f /etc/armbian-release ]] && source /etc/armbian-release
|
|
backtitle="Armbian for $BOARD_NAME install script, https://www.armbian.com"
|
|
|
|
CHOICE=$(dialog --no-collapse \
|
|
--title "armbian-install" \
|
|
--backtitle $backtitle \
|
|
--radiolist "Choose SPI image:" 0 56 4 \
|
|
"${MENU_ITEMS[@]}" \
|
|
3>&1 1>&2 2>&3)
|
|
|
|
if [ $? -eq 0 ]; then
|
|
flashcp -v -p "$1/${MENU_ITEMS[($CHOICE*3)-2]}" /dev/mtd0
|
|
else
|
|
echo "No SPI image chosen."
|
|
exit 1
|
|
fi
|
|
}
|
|
}
|
|
|
|
function pre_config_uboot_target__orangepi5_patch_uboot_bootconfig_hack_for_sata() {
|
|
if [[ $BRANCH == "vendor" ]]; then
|
|
return
|
|
fi
|
|
|
|
display_alert "u-boot for ${BOARD}" "u-boot: hack bootconfig for sata spi image" "info"
|
|
|
|
if [[ $target_make == *"orangepi-5-sata-rk3588s_defconfig"* ]]; then
|
|
BOOTCONFIG="orangepi-5-sata-rk3588s_defconfig"
|
|
target_make=${target_make/orangepi-5-sata-rk3588s_defconfig/}
|
|
else
|
|
BOOTCONFIG="orangepi-5-rk3588s_defconfig"
|
|
target_make=${target_make/orangepi-5-rk3588s_defconfig/}
|
|
fi
|
|
}
|
|
|
|
function post_family_tweaks_bsp__orangepi5_copy_usb2_service() {
|
|
if [[ $BRANCH == "edge" || $BRANCH == "current" ]]; then
|
|
return
|
|
fi
|
|
|
|
display_alert "Installing BSP firmware and fixups"
|
|
|
|
# Add USB2 init service. Otherwise, USB2 and TYPE-C won't work by default
|
|
cp $SRC/packages/bsp/orangepi5/orangepi5-usb2-init.service $destination/lib/systemd/system/
|
|
|
|
return 0
|
|
}
|
|
|
|
function post_family_tweaks__orangepi5_enable_usb2_service() {
|
|
if [[ $BRANCH == "edge" || $BRANCH == "current" ]]; then
|
|
return
|
|
fi
|
|
|
|
display_alert "$BOARD" "Installing board tweaks" "info"
|
|
|
|
# enable usb2 init service
|
|
chroot $SDCARD /bin/bash -c "systemctl --no-reload enable orangepi5-usb2-init.service >/dev/null 2>&1"
|
|
|
|
return 0
|
|
}
|
|
|
|
function post_family_tweaks__orangepi5_naming_audios() {
|
|
if [[ $BRANCH == "edge" || $BRANCH == "current" ]]; then
|
|
return
|
|
fi
|
|
|
|
display_alert "$BOARD" "Renaming orangepi5 audios" "info"
|
|
|
|
mkdir -p $SDCARD/etc/udev/rules.d/
|
|
echo 'SUBSYSTEM=="sound", ENV{ID_PATH}=="platform-hdmi0-sound", ENV{SOUND_DESCRIPTION}="HDMI0 Audio"' > $SDCARD/etc/udev/rules.d/90-naming-audios.rules
|
|
echo 'SUBSYSTEM=="sound", ENV{ID_PATH}=="platform-dp0-sound", ENV{SOUND_DESCRIPTION}="DP0 Audio"' >> $SDCARD/etc/udev/rules.d/90-naming-audios.rules
|
|
echo 'SUBSYSTEM=="sound", ENV{ID_PATH}=="platform-es8388-sound", ENV{SOUND_DESCRIPTION}="ES8388 Audio"' >> $SDCARD/etc/udev/rules.d/90-naming-audios.rules
|
|
|
|
return 0
|
|
}
|
|
|
|
function post_family_config__orangepi5_uboot_add_sata_target() {
|
|
if [[ $BRANCH == "edge" || $BRANCH == "current" ]]; then
|
|
return
|
|
fi
|
|
|
|
display_alert "$BOARD" "Configuring ($BOARD) standard and sata uboot target map" "info"
|
|
# Note: whitespace/newlines are significant; BOOT_SUPPORT_SPI & BOOT_SPI_RKSPI_LOADER influence the postprocess step that runs for _every_ target and produces rkspi_loader.img
|
|
UBOOT_TARGET_MAP="BL31=$RKBIN_DIR/$BL31_BLOB $BOOTCONFIG spl/u-boot-spl.bin u-boot.dtb u-boot.itb;;idbloader.img u-boot.itb rkspi_loader.img
|
|
BL31=$RKBIN_DIR/$BL31_BLOB $BOOTCONFIG_SATA spl/u-boot-spl.bin u-boot.dtb u-boot.itb;; rkspi_loader_sata.img"
|
|
}
|
|
|
|
function post_uboot_custom_postprocess__create_sata_spi_image() {
|
|
if [[ $BRANCH == "edge" || $BRANCH == "current" ]]; then
|
|
return
|
|
fi
|
|
|
|
display_alert "$BOARD" "Create rkspi_loader_sata.img" "info"
|
|
|
|
dd if=/dev/zero of=rkspi_loader_sata.img bs=1M count=0 seek=16
|
|
/sbin/parted -s rkspi_loader_sata.img mklabel gpt
|
|
/sbin/parted -s rkspi_loader_sata.img unit s mkpart idbloader 64 7167
|
|
/sbin/parted -s rkspi_loader_sata.img unit s mkpart vnvm 7168 7679
|
|
/sbin/parted -s rkspi_loader_sata.img unit s mkpart reserved_space 7680 8063
|
|
/sbin/parted -s rkspi_loader_sata.img unit s mkpart reserved1 8064 8127
|
|
/sbin/parted -s rkspi_loader_sata.img unit s mkpart uboot_env 8128 8191
|
|
/sbin/parted -s rkspi_loader_sata.img unit s mkpart reserved2 8192 16383
|
|
/sbin/parted -s rkspi_loader_sata.img unit s mkpart uboot 16384 32734
|
|
dd if=idbloader.img of=rkspi_loader_sata.img seek=64 conv=notrunc
|
|
dd if=u-boot.itb of=rkspi_loader_sata.img seek=16384 conv=notrunc
|
|
}
|