mirror of
https://github.com/home-assistant/operating-system.git
synced 2025-07-16 01:26:30 +00:00
Enable usage of rpi-eeprom-update on Raspberry Pi 4/5/Yellow (#4063)
* package/vcgencmd: add tool for RPi VideoCore commands This tool is used by rpi-eeprom-update and is fairly lightweight binary without dependencies. Use it as-is from raspberry/utils repo. * package/rpi-eeprom: change package to install EEPROM userspace scripts * configs: enable rpi-eeprom for rpi4, rpi4-64, rpi5-64 and yellow On Pi5 and Yellow also enable flashrom so the firmware can be installed directly without recovery being involved. On Yellow/CM4 this can't be done without config.txt changes though (SPI and pinmuxing needs to be enabled) but the image is shared there and users may eventually use the tools if they want, so install BCM2711 on Yellow too. The "officially recommended" method is rpiboot though, which is also documented in Yellow docs.
This commit is contained in:
parent
9803d41b2f
commit
65fdef963c
@ -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"
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -0,0 +1,30 @@
|
||||
From ecc0714d0c132acdce1d7363567917e00ece26f9 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Jan=20=C4=8Cerm=C3=A1k?= <sairon@sairon.cz>
|
||||
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 <sairon@sairon.cz>
|
||||
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}"
|
@ -0,0 +1,68 @@
|
||||
From bea845559542e556dfaffcec7334695a6387e0d9 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Jan=20=C4=8Cerm=C3=A1k?= <sairon@sairon.cz>
|
||||
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 <sairon@sairon.cz>
|
||||
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"
|
@ -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
|
||||
|
3
buildroot-external/package/rpi-eeprom/rpi-eeprom.hash
Normal file
3
buildroot-external/package/rpi-eeprom/rpi-eeprom.hash
Normal file
@ -0,0 +1,3 @@
|
||||
# Locally computed
|
||||
sha256 9e64372f0480b8410fce3f9cc12c01548eaac36e36fe0fe8f979535281d41290 rpi-eeprom-cd4048df1d55be89bf84879754a4acf9c92e1f7a.tar.gz
|
||||
sha256 594b7565fd3ccf8acd4711a2ec1b199181aafbc3426d0bacaa50ef40edbf7c4a LICENSE
|
@ -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))
|
||||
|
5
buildroot-external/package/vcgencmd/Config.in
Normal file
5
buildroot-external/package/vcgencmd/Config.in
Normal file
@ -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.
|
3
buildroot-external/package/vcgencmd/vcgencmd.hash
Normal file
3
buildroot-external/package/vcgencmd/vcgencmd.hash
Normal file
@ -0,0 +1,3 @@
|
||||
# Locally computed
|
||||
sha256 c31953e8ee666c9b01499d4da639f4f4ec6567822b6daa55dd402468564b1a12 vcgencmd-c57d8c29c46993d93f191218bbc1dc3a73fc7918.tar.gz
|
||||
sha256 731da956431d1a7c5073e7ee5ebe01f54e359c5339310b32f0893c6fe6507d5a LICENSE
|
17
buildroot-external/package/vcgencmd/vcgencmd.mk
Normal file
17
buildroot-external/package/vcgencmd/vcgencmd.mk
Normal file
@ -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))
|
Loading…
x
Reference in New Issue
Block a user