diff --git a/buildroot-external/Config.in b/buildroot-external/Config.in index 1bdb1b922..c2e9b877a 100644 --- a/buildroot-external/Config.in +++ b/buildroot-external/Config.in @@ -17,4 +17,5 @@ source "$BR2_EXTERNAL_HASSOS_PATH/package/rpi-rf-mod/Config.in" source "$BR2_EXTERNAL_HASSOS_PATH/package/rtl88x2bu/Config.in" source "$BR2_EXTERNAL_HASSOS_PATH/package/tempio/Config.in.host" source "$BR2_EXTERNAL_HASSOS_PATH/package/udisks2/Config.in" +source "$BR2_EXTERNAL_HASSOS_PATH/package/vcgencmd/Config.in" source "$BR2_EXTERNAL_HASSOS_PATH/package/xe-guest-utilities/Config.in" diff --git a/buildroot-external/configs/rpi4_64_defconfig b/buildroot-external/configs/rpi4_64_defconfig index b90128956..70c9c154d 100644 --- a/buildroot-external/configs/rpi4_64_defconfig +++ b/buildroot-external/configs/rpi4_64_defconfig @@ -160,6 +160,8 @@ BR2_PACKAGE_HASSIO_MACHINE="raspberrypi4-64" BR2_PACKAGE_OS_AGENT=y BR2_PACKAGE_OS_AGENT_BOARD="RaspberryPi4" BR2_PACKAGE_PI_BLUETOOTH=y +BR2_PACKAGE_RPI_EEPROM=y +BR2_PACKAGE_RPI_EEPROM_TARGET_RPI4=y BR2_PACKAGE_RPI_RF_MOD=y BR2_PACKAGE_RPI_RF_MOD_DTS=y BR2_PACKAGE_RTL88X2BU=y diff --git a/buildroot-external/configs/rpi4_defconfig b/buildroot-external/configs/rpi4_defconfig index a3a5c0c7b..ce7dd1d7c 100644 --- a/buildroot-external/configs/rpi4_defconfig +++ b/buildroot-external/configs/rpi4_defconfig @@ -158,6 +158,8 @@ BR2_PACKAGE_HASSIO_MACHINE="raspberrypi4" BR2_PACKAGE_OS_AGENT=y BR2_PACKAGE_OS_AGENT_BOARD="RaspberryPi4" BR2_PACKAGE_PI_BLUETOOTH=y +BR2_PACKAGE_RPI_EEPROM=y +BR2_PACKAGE_RPI_EEPROM_TARGET_RPI4=y BR2_PACKAGE_RPI_RF_MOD=y BR2_PACKAGE_RPI_RF_MOD_DTS=y BR2_PACKAGE_RTL88X2BU=y diff --git a/buildroot-external/configs/rpi5_64_defconfig b/buildroot-external/configs/rpi5_64_defconfig index f674b7bfa..d62ef6011 100644 --- a/buildroot-external/configs/rpi5_64_defconfig +++ b/buildroot-external/configs/rpi5_64_defconfig @@ -75,6 +75,7 @@ BR2_PACKAGE_LINUX_FIRMWARE_RTL_RTW89=y BR2_PACKAGE_LINUX_FIRMWARE_RTL_815X=y BR2_PACKAGE_LINUX_FIRMWARE_USB_SERIAL_TI=y BR2_PACKAGE_DBUS_BROKER=y +BR2_PACKAGE_FLASHROM=y BR2_PACKAGE_GPTFDISK=y BR2_PACKAGE_GPTFDISK_SGDISK=y # BR2_PACKAGE_LVM2_STANDARD_INSTALL is not set @@ -151,6 +152,8 @@ BR2_PACKAGE_HASSIO_MACHINE="raspberrypi5-64" BR2_PACKAGE_OS_AGENT=y BR2_PACKAGE_OS_AGENT_BOARD="RaspberryPi5" BR2_PACKAGE_PI_BLUETOOTH=y +BR2_PACKAGE_RPI_EEPROM=y +BR2_PACKAGE_RPI_EEPROM_TARGET_RPI5=y BR2_PACKAGE_RPI_RF_MOD=y BR2_PACKAGE_RPI_RF_MOD_DTS=y BR2_PACKAGE_RTL88X2BU=y diff --git a/buildroot-external/configs/yellow_defconfig b/buildroot-external/configs/yellow_defconfig index dd6e0a5a2..22ec270ab 100644 --- a/buildroot-external/configs/yellow_defconfig +++ b/buildroot-external/configs/yellow_defconfig @@ -77,6 +77,7 @@ BR2_PACKAGE_RPI_FIRMWARE=y BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI4=y # BR2_PACKAGE_RPI_FIRMWARE_INSTALL_DTB_OVERLAYS is not set BR2_PACKAGE_DBUS_BROKER=y +BR2_PACKAGE_FLASHROM=y BR2_PACKAGE_GPTFDISK=y BR2_PACKAGE_GPTFDISK_SGDISK=y BR2_PACKAGE_INPUT_EVENT_DAEMON=y @@ -164,6 +165,7 @@ BR2_PACKAGE_HASSIO_MACHINE="yellow" BR2_PACKAGE_OS_AGENT=y BR2_PACKAGE_OS_AGENT_BOARD="Yellow" BR2_PACKAGE_PI_BLUETOOTH=y +BR2_PACKAGE_RPI_EEPROM=y BR2_PACKAGE_RPI_RF_MOD=y BR2_PACKAGE_RPI_RF_MOD_DTS=y BR2_PACKAGE_RPI_RF_MOD_DTS_YELLOW=y diff --git a/buildroot-external/package/rpi-eeprom/0001-rpi-eeprom-update-adjust-hassos-boot-discovery.patch b/buildroot-external/package/rpi-eeprom/0001-rpi-eeprom-update-adjust-hassos-boot-discovery.patch new file mode 100644 index 000000000..e99c1853a --- /dev/null +++ b/buildroot-external/package/rpi-eeprom/0001-rpi-eeprom-update-adjust-hassos-boot-discovery.patch @@ -0,0 +1,30 @@ +From ecc0714d0c132acdce1d7363567917e00ece26f9 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Jan=20=C4=8Cerm=C3=A1k?= +Date: Tue, 13 May 2025 17:19:59 +0200 +Subject: [PATCH] rpi-eeprom-update: adjust hassos-boot discovery +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Make discovery of boot partition compatible with HAOS without the need +to set BOOTFS in /etc/default/rpi-eeprom-update. + +Signed-off-by: Jan Čermák +Upstream: not applicable +--- + rpi-eeprom-update | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/rpi-eeprom-update b/rpi-eeprom-update +index b970142..720efb7 100755 +--- a/rpi-eeprom-update ++++ b/rpi-eeprom-update +@@ -725,7 +725,7 @@ findBootFS() + # If ${BOOTFS} is not writable OR is not on /dev/mmcblk0 then error because the ROM + # can only load recovery.bin from the on-board SD-CARD slot or the EEPROM. + +- if blkid | grep -qE "/dev/mmcblk0p1.*LABEL_FATBOOT.*RECOVERY.*TYPE.*vfat"; then ++ if blkid | grep -qE "/dev/mmcblk0p1.*LABEL_FATBOOT.*hassos-boot.*TYPE.*vfat"; then + TMP_BOOTFS_MNT="$(mktemp -d)" + mount /dev/mmcblk0p1 "${TMP_BOOTFS_MNT}" + BOOTFS="${TMP_BOOTFS_MNT}" diff --git a/buildroot-external/package/rpi-eeprom/0002-rpi-eeprom-update-remove-raspi-config-mentions-and-u.patch b/buildroot-external/package/rpi-eeprom/0002-rpi-eeprom-update-remove-raspi-config-mentions-and-u.patch new file mode 100644 index 000000000..846f068a6 --- /dev/null +++ b/buildroot-external/package/rpi-eeprom/0002-rpi-eeprom-update-remove-raspi-config-mentions-and-u.patch @@ -0,0 +1,68 @@ +From bea845559542e556dfaffcec7334695a6387e0d9 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Jan=20=C4=8Cerm=C3=A1k?= +Date: Tue, 13 May 2025 18:07:13 +0200 +Subject: [PATCH] rpi-eeprom-update: remove raspi-config mentions and + unnecessary sudo in help +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +There is no sudo on HAOS, remove it from messages that could be shown to +users. Also remove raspi-config mention, we will only carry the default +release. + +Signed-off-by: Jan Čermák +Upstream: not applicable +--- + rpi-eeprom-update | 10 +++------- + 1 file changed, 3 insertions(+), 7 deletions(-) + +diff --git a/rpi-eeprom-update b/rpi-eeprom-update +index 720efb7..eb19872 100755 +--- a/rpi-eeprom-update ++++ b/rpi-eeprom-update +@@ -30,7 +30,6 @@ FIRMWARE_RELEASE_STATUS=${FIRMWARE_RELEASE_STATUS:-default} + FIRMWARE_BACKUP_DIR=${FIRMWARE_BACKUP_DIR:-/var/lib/raspberrypi/bootloader/backup} + ENABLE_VL805_UPDATES=${ENABLE_VL805_UPDATES:-1} + CM4_ENABLE_RPI_EEPROM_UPDATE=${CM4_ENABLE_RPI_EEPROM_UPDATE:-0} +-RPI_EEPROM_UPDATE_CONFIG_TOOL="${RPI_EEPROM_UPDATE_CONFIG_TOOL:-raspi-config}" + + # Self-update is preferred to using recovery.bin because it avoids modifiy the + # boot partition in order to rename recovery.bin after use. Since the 2711 ROM +@@ -315,7 +314,7 @@ applyRecoveryUpdate() + echo "EEPROM updates pending. Please reboot to apply the update." + + if [ "${RPI_EEPROM_USE_FLASHROM}" = 0 ]; then +- echo "To cancel a pending update run \"sudo rpi-eeprom-update -r\"." ++ echo "To cancel a pending update run \"rpi-eeprom-update -r\"." + fi + } + +@@ -634,7 +633,7 @@ To update the configuration file in an EEPROM image: + rpi-eeprom-config pieeprom.bin --config bootconf.txt --out pieeprom-new.bin + + To flash the new image: +- sudo rpi-eeprom-update -d -f ./pieeprom-new.bin ++ rpi-eeprom-update -d -f ./pieeprom-new.bin + + The syntax is the same as config.txt See online documentation for the list of parameters. + +@@ -694,7 +693,6 @@ printVersions() + echo " CURRENT: $(date -u "-d@${BOOTLOADER_CURRENT_VERSION}") (${BOOTLOADER_CURRENT_VERSION})" + echo " LATEST: $(date -u "-d@${BOOTLOADER_UPDATE_VERSION}") (${BOOTLOADER_UPDATE_VERSION})" + echo " RELEASE: ${FIRMWARE_RELEASE_STATUS} (${FIRMWARE_IMAGE_DIR})" +- echo " Use ${RPI_EEPROM_UPDATE_CONFIG_TOOL} to change the release." + + if [ "${BCM_CHIP}" = 2711 ]; then + echo "" +@@ -905,9 +903,7 @@ checkVersion() + if [ "${ACTION_UPDATE_BOOTLOADER}" = 1 ] || [ "${ACTION_UPDATE_VL805}" = 1 ]; then + echo "*** UPDATE AVAILABLE ***" + echo "" +- echo "Run \"sudo rpi-eeprom-update -a\" to install this update now." +- echo +- echo "To configure the bootloader update policy run \"sudo ${RPI_EEPROM_UPDATE_CONFIG_TOOL}\"" ++ echo "Run \"rpi-eeprom-update -a\" to install this update now." + echo "" + printVersions + write_status_info "EXIT_UPDATE_REQUIRED" diff --git a/buildroot-external/package/rpi-eeprom/Config.in b/buildroot-external/package/rpi-eeprom/Config.in index 08f6987df..3aa59f621 100644 --- a/buildroot-external/package/rpi-eeprom/Config.in +++ b/buildroot-external/package/rpi-eeprom/Config.in @@ -1,6 +1,37 @@ config BR2_PACKAGE_RPI_EEPROM bool "rpi-eeprom" + select BR2_PACKAGE_PYTHON3 + select BR2_PACKAGE_VCGENCMD help - EEPROM bootloader firmware for Raspberry Pi 4 + EEPROM bootloader firmware update tool for Raspberry Pi https://github.com/raspberrypi/rpi-eeprom + +if BR2_PACKAGE_RPI_EEPROM + +choice + prompt "Target platform" + default BR2_PACKAGE_RPI_EEPROM_TARGET_ANY + help + Select the target platform for the EEPROM files to be + installed. The default is to install all EEPROM files for + all Raspberry Pi boards. + +config BR2_PACKAGE_RPI_EEPROM_TARGET_ANY + bool "Any Raspberry Pi" + help + Install all EEPROM files for all Raspberry Pi boards. + +config BR2_PACKAGE_RPI_EEPROM_TARGET_RPI4 + bool "Raspberry Pi 4" + help + Install EEPROM files for Raspberry Pi 4 boards only. + +config BR2_PACKAGE_RPI_EEPROM_TARGET_RPI5 + bool "Raspberry Pi 5" + help + Install EEPROM files for Raspberry Pi 5 boards only. + +endchoice + +endif diff --git a/buildroot-external/package/rpi-eeprom/rpi-eeprom.hash b/buildroot-external/package/rpi-eeprom/rpi-eeprom.hash new file mode 100644 index 000000000..958b57bb8 --- /dev/null +++ b/buildroot-external/package/rpi-eeprom/rpi-eeprom.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 9e64372f0480b8410fce3f9cc12c01548eaac36e36fe0fe8f979535281d41290 rpi-eeprom-cd4048df1d55be89bf84879754a4acf9c92e1f7a.tar.gz +sha256 594b7565fd3ccf8acd4711a2ec1b199181aafbc3426d0bacaa50ef40edbf7c4a LICENSE diff --git a/buildroot-external/package/rpi-eeprom/rpi-eeprom.mk b/buildroot-external/package/rpi-eeprom/rpi-eeprom.mk index a1ee7d0a6..a85e4644b 100644 --- a/buildroot-external/package/rpi-eeprom/rpi-eeprom.mk +++ b/buildroot-external/package/rpi-eeprom/rpi-eeprom.mk @@ -4,24 +4,34 @@ # ################################################################################ -RPI_EEPROM_VERSION = 16bb29427f96dc8276a7102c0526154a1084bffd +RPI_EEPROM_VERSION = cd4048df1d55be89bf84879754a4acf9c92e1f7a RPI_EEPROM_SITE = $(call github,raspberrypi,rpi-eeprom,$(RPI_EEPROM_VERSION)) RPI_EEPROM_LICENSE = BSD-3-Clause RPI_EEPROM_LICENSE_FILES = LICENSE -RPI_EEPROM_INSTALL_IMAGES = YES -RPI_EEPROM_FIRMWARE_PATH = firmware/beta/pieeprom-2020-10-28.bin -define RPI_EEPROM_BUILD_CMDS - $(@D)/rpi-eeprom-config $(@D)/$(RPI_EEPROM_FIRMWARE_PATH) --out $(@D)/default.conf - (cat $(@D)/default.conf | grep -v ^$$; echo HDMI_DELAY=0) > $(@D)/boot.conf - $(@D)/rpi-eeprom-config $(@D)/$(RPI_EEPROM_FIRMWARE_PATH) --config $(@D)/boot.conf --out $(@D)/pieeprom.upd - sha256sum $(@D)/pieeprom.upd | awk '{ print $$1 }' > $(@D)/pieeprom.sig - echo "ts: $$(date -u +%s)" >> $(@D)/pieeprom.sig +ifneq ($(BR2_PACKAGE_RPI_EEPROM_TARGET_ANY)$(BR2_PACKAGE_RPI_EEPROM_TARGET_RPI4),) +define RPI_EEPROM_INSTALL_RPI4_FILES + $(INSTALL) -d $(TARGET_DIR)/usr/lib/firmware/raspberrypi/bootloader-2711/default + $(INSTALL) -D -m 0644 $(@D)/firmware-2711/default/recovery.bin $(TARGET_DIR)/usr/lib/firmware/raspberrypi/bootloader-2711/default/ + $(INSTALL) -D -m 0644 $(@D)/firmware-2711/default/vl805-000138c0.bin $(TARGET_DIR)/usr/lib/firmware/raspberrypi/bootloader-2711/default/ + $(INSTALL) -D -m 0644 $(@D)/firmware-2711/default/pieeprom-2025-02-11.bin $(TARGET_DIR)/usr/lib/firmware/raspberrypi/bootloader-2711/default/ endef +endif -define RPI_EEPROM_INSTALL_IMAGES_CMDS - $(INSTALL) -D -m 0644 $(@D)/pieeprom.sig $(BINARIES_DIR)/rpi-eeprom/pieeprom.sig - $(INSTALL) -D -m 0644 $(@D)/pieeprom.upd $(BINARIES_DIR)/rpi-eeprom/pieeprom.upd +ifneq ($(BR2_PACKAGE_RPI_EEPROM_TARGET_ANY)$(BR2_PACKAGE_RPI_EEPROM_TARGET_RPI5),) +define RPI_EEPROM_INSTALL_RPI5_FILES + $(INSTALL) -d $(TARGET_DIR)/usr/lib/firmware/raspberrypi/bootloader-2712/default + $(INSTALL) -D -m 0644 $(@D)/firmware-2712/default/recovery.bin $(TARGET_DIR)/usr/lib/firmware/raspberrypi/bootloader-2712/default/ + $(INSTALL) -D -m 0644 $(@D)/firmware-2712/default/pieeprom-2025-03-10.bin $(TARGET_DIR)/usr/lib/firmware/raspberrypi/bootloader-2712/default/ +endef +endif + +define RPI_EEPROM_INSTALL_TARGET_CMDS + $(RPI_EEPROM_INSTALL_RPI4_FILES) + $(RPI_EEPROM_INSTALL_RPI5_FILES) + $(INSTALL) -D -m 0755 $(@D)/rpi-eeprom-config $(TARGET_DIR)/usr/bin/rpi-eeprom-config + $(INSTALL) -D -m 0755 $(@D)/rpi-eeprom-digest $(TARGET_DIR)/usr/bin/rpi-eeprom-digest + $(INSTALL) -D -m 0755 $(@D)/rpi-eeprom-update $(TARGET_DIR)/usr/bin/rpi-eeprom-update endef $(eval $(generic-package)) diff --git a/buildroot-external/package/vcgencmd/Config.in b/buildroot-external/package/vcgencmd/Config.in new file mode 100644 index 000000000..d5e42fb0b --- /dev/null +++ b/buildroot-external/package/vcgencmd/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_VCGENCMD + bool "vcgencmd" + help + Command line utility that can get various pieces of + information from the VideoCore GPU on the Raspberry Pi. diff --git a/buildroot-external/package/vcgencmd/vcgencmd.hash b/buildroot-external/package/vcgencmd/vcgencmd.hash new file mode 100644 index 000000000..35ed7e000 --- /dev/null +++ b/buildroot-external/package/vcgencmd/vcgencmd.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 c31953e8ee666c9b01499d4da639f4f4ec6567822b6daa55dd402468564b1a12 vcgencmd-c57d8c29c46993d93f191218bbc1dc3a73fc7918.tar.gz +sha256 731da956431d1a7c5073e7ee5ebe01f54e359c5339310b32f0893c6fe6507d5a LICENSE diff --git a/buildroot-external/package/vcgencmd/vcgencmd.mk b/buildroot-external/package/vcgencmd/vcgencmd.mk new file mode 100644 index 000000000..3c015ae2a --- /dev/null +++ b/buildroot-external/package/vcgencmd/vcgencmd.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# vcgencmd +# +################################################################################ + +VCGENCMD_VERSION = c57d8c29c46993d93f191218bbc1dc3a73fc7918 +VCGENCMD_SITE = $(call github,raspberrypi,utils,$(VCGENCMD_VERSION)) +VCGENCMD_LICENSE = BSD-3-Clause +VCGENCMD_LICENSE_FILES = LICENSE +VCGENCMD_SUBDIR = vcgencmd + +define VCGENCMD_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/vcgencmd/vcgencmd $(TARGET_DIR)/usr/bin/vcgencmd +endef + +$(eval $(cmake-package))