Merge branch 'master' into debian/bookworm

This commit is contained in:
Serge Schneider
2024-04-18 10:48:10 +01:00
12 changed files with 45 additions and 12 deletions

Binary file not shown.

Binary file not shown.

View File

@@ -1,5 +1,15 @@
# Raspberry Pi4 bootloader EEPROM release notes # Raspberry Pi4 bootloader EEPROM release notes
## 2024-04-17 - Build Pi4 firmware from the mainline branch - STABLE
* Switch to building the Pi4 firmware from the common Pi4/Pi5
mainline release. This doesn't change the Pi4 features
but should make it quicker to release bug fixes in common code.
* Fix issue that caused the TRYBOOT flag to be lost in secure-boot mode.
* dtoverlay: Use %u when converting u32s to strings
See: https://github.com/raspberrypi/linux/issues/6039
* Improved debug messages for secure-boot.
* Generate the bootloader diagnostics qrcode at run time.
## 2024-04-15 - Fix tryboot mode in secure-boot - DEFAULT ## 2024-04-15 - Fix tryboot mode in secure-boot - DEFAULT
* Promote the secure-boot fix to the DEFAULT release. * Promote the secure-boot fix to the DEFAULT release.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -1,5 +1,22 @@
# Raspberry Pi5 bootloader EEPROM release notes # Raspberry Pi5 bootloader EEPROM release notes
2024-04-18: Promote the 2024-04-17 release to the default release (default) (automatic update)
* Select pieeprom-2024-04-17.bin to be the new default release and bump the
automatic update minimum version to this.
2024-04-18: Update RP1 firmware to extend PCIe L1 entry timeout to 32 us (latest)
* Extend PCIe L1 entry timeout to 32us
Fix xhci soft reset on link-down
Set useful xhci compatibility bits in GUCTL
See https://github.com/raspberrypi/firmware/issues/1877
2024-04-17: Fix TRYBOOT flag in secure-boot mode (latest)
* Fix issue that caused the TRYBOOT flag to be lost in secure-boot mode.
* dtoverlay: Use %u when converting u32s to strings
See: https://github.com/raspberrypi/linux/issues/6039
* Improved debug messages for secure-boot.
* Generate the bootloader diagnostics qrcode at run time.
2024-04-05: HAT+ fixes for max-current, custom CA cert for net install and enable over-clocking to > 3GHz (latest) 2024-04-05: HAT+ fixes for max-current, custom CA cert for net install and enable over-clocking to > 3GHz (latest)
* bootloader: clock_2712: Remove restriction on arm_freq <= 3000 * bootloader: clock_2712: Remove restriction on arm_freq <= 3000
See: https://github.com/raspberrypi/firmware/issues/1876 See: https://github.com/raspberrypi/firmware/issues/1876

View File

@@ -8,4 +8,4 @@ script_dir=$(cd "$(dirname "$0")" && pwd)
${script_dir}/make-release critical 2023-01-11 000138c0 "${script_dir}/2711-config" release-2711 rpi-boot-eeprom-recovery 2711 ${script_dir}/make-release critical 2023-01-11 000138c0 "${script_dir}/2711-config" release-2711 rpi-boot-eeprom-recovery 2711
# Pi5 # Pi5
${script_dir}/make-release critical 2024-02-16 "" "${script_dir}/2712-config" release-2712 rpi-boot-eeprom-recovery 2712 ${script_dir}/make-release critical 2024-04-17 "" "${script_dir}/2712-config" release-2712 rpi-boot-eeprom-recovery 2712

View File

@@ -463,6 +463,7 @@ class BootloaderImage(object):
sys.stdout.write(config_bytes) sys.stdout.write(config_bytes)
def main(): def main():
global DEBUG
""" """
Utility for reading and writing the configuration file in the Utility for reading and writing the configuration file in the
Raspberry Pi bootloader EEPROM image. Raspberry Pi bootloader EEPROM image.
@@ -510,7 +511,7 @@ Operating modes:
The configuration file will be taken from: The configuration file will be taken from:
* The blconfig reserved memory nvmem device * The blconfig reserved memory nvmem device
* The cached bootloader configuration 'vcgencmd bootloader_config' * The cached bootloader configuration 'vcgencmd bootloader_config'
* The current pending update - typically /boot/pieeprom.upd * The current pending update - typically /boot/firmware/pieeprom.upd
sudo -E rpi-eeprom-config --edit [pieeprom.bin] sudo -E rpi-eeprom-config --edit [pieeprom.bin]
@@ -524,8 +525,7 @@ Operating modes:
the corresponding RSA public key. the corresponding RSA public key.
Requires Python Cryptodomex libraries and OpenSSL. To install on Raspberry Pi OS run:- Requires Python Cryptodomex libraries and OpenSSL. To install on Raspberry Pi OS run:-
sudo apt install openssl python-pip sudo apt install python3-pycryptodome
sudo python3 -m pip install cryptodomex
rpi-eeprom-digest -k private.pem -i bootconf.txt -o bootconf.sig rpi-eeprom-digest -k private.pem -i bootconf.txt -o bootconf.sig
rpi-eeprom-config --config bootconf.txt --digest bootconf.sig --pubkey public.pem --out pieeprom-signed.bin pieeprom.bin rpi-eeprom-config --config bootconf.txt --digest bootconf.sig --pubkey public.pem --out pieeprom-signed.bin pieeprom.bin
@@ -543,14 +543,16 @@ See 'rpi-eeprom-update -h' for more information about the available EEPROM image
parser.add_argument('-c', '--config', help='Name of bootloader configuration file', required=False) parser.add_argument('-c', '--config', help='Name of bootloader configuration file', required=False)
parser.add_argument('-e', '--edit', action='store_true', default=False, help='Edit the current EEPROM config') parser.add_argument('-e', '--edit', action='store_true', default=False, help='Edit the current EEPROM config')
parser.add_argument('-o', '--out', help='Name of output file', required=False) parser.add_argument('-o', '--out', help='Name of output file', required=False)
parser.add_argument('-d', '--digest', help='Signed boot only. The name of the .sig file generated by rpi-eeprom-dgst for config.txt ', required=False) parser.add_argument('-d', '--digest', help='Signed boot only. The name of the .sig file generated by rpi-eeprom-digest for config.txt ', required=False)
parser.add_argument('-p', '--pubkey', help='Signed boot only. The name of the RSA public key file to store in the EEPROM', required=False) parser.add_argument('-p', '--pubkey', help='Signed boot only. The name of the RSA public key file to store in the EEPROM', required=False)
parser.add_argument('-x', '--extract', action='store_true', default=False, help='Extract the modifiable files (boot.conf, pubkey, signature)', required=False) parser.add_argument('-x', '--extract', action='store_true', default=False, help='Extract the modifiable files (boot.conf, pubkey, signature)', required=False)
parser.add_argument('-b', '--bootcode', help='Signed boot 2712 only. The name of the customer signed bootcode.bin file to store in the EEPROM', required=False) parser.add_argument('-b', '--bootcode', help='Signed boot 2712 only. The name of the customer signed bootcode.bin file to store in the EEPROM', required=False)
parser.add_argument('-t', '--timestamp', help='Set the timestamp in the EEPROM image file', required=False) parser.add_argument('-t', '--timestamp', help='Set the timestamp in the EEPROM image file', required=False)
parser.add_argument('--cacertder', help='The name of a CA Certificate DER encoded file to store in the EEPROM', required=False) parser.add_argument('--cacertder', help='The name of a CA Certificate DER encoded file to store in the EEPROM', required=False)
parser.add_argument('--debug', help='Debug logging for this tool', action='store_true', required=False)
parser.add_argument('eeprom', nargs='?', help='Name of EEPROM file to use as input') parser.add_argument('eeprom', nargs='?', help='Name of EEPROM file to use as input')
args = parser.parse_args() args = parser.parse_args()
DEBUG = args.debug
if (args.edit or args.apply is not None) and os.getuid() != 0: if (args.edit or args.apply is not None) and os.getuid() != 0:
exit_error("--edit/--apply must be run as root") exit_error("--edit/--apply must be run as root")
@@ -571,10 +573,15 @@ See 'rpi-eeprom-update -h' for more information about the available EEPROM image
image = BootloaderImage(args.eeprom, args.out) image = BootloaderImage(args.eeprom, args.out)
if args.timestamp is not None: if args.timestamp is not None:
image.set_timestamp(args.timestamp) image.set_timestamp(args.timestamp)
if args.bootcode is not None: if args.bootcode is not None:
image.update_file(args.bootcode, BOOTCODE_BIN) image.update_file(args.bootcode, BOOTCODE_BIN)
image.write()
elif args.config is not None: if args.cacertder is not None:
image.update_file(args.cacertder, CACERT_DER)
if args.config is not None:
# The public key, EEPROM config and signature should be set together
if not os.path.exists(args.config): if not os.path.exists(args.config):
exit_error("config file '%s' not found" % args.config) exit_error("config file '%s' not found" % args.config)
image.update_file(args.config, BOOTCONF_TXT) image.update_file(args.config, BOOTCONF_TXT)
@@ -582,10 +589,9 @@ See 'rpi-eeprom-update -h' for more information about the available EEPROM image
image.update_file(args.digest, BOOTCONF_SIG) image.update_file(args.digest, BOOTCONF_SIG)
if args.pubkey is not None: if args.pubkey is not None:
image.update_key(args.pubkey, PUBKEY_BIN) image.update_key(args.pubkey, PUBKEY_BIN)
if args.cacertder is not None:
image.update_file(args.cacertder, CACERT_DER) if args.config is not None or args.timestamp is not None or args.bootcode is not None or args.cacertder is not None:
image.write() debug("Writing image")
elif args.config is None and args.timestamp is not None:
image.write() image.write()
else: else:
image.read() image.read()

View File

@@ -400,7 +400,7 @@ checkDependencies() {
elif [ $(((0x$BOARD_INFO >> 12) & 15)) = 4 ]; then elif [ $(((0x$BOARD_INFO >> 12) & 15)) = 4 ]; then
BCM_CHIP=2712 BCM_CHIP=2712
EEPROM_SIZE=2097152 EEPROM_SIZE=2097152
BOOTLOADER_AUTO_UPDATE_MIN_VERSION="${BOOTLOADER_AUTO_UPDATE_MIN_VERSION:-1704470260}" BOOTLOADER_AUTO_UPDATE_MIN_VERSION="${BOOTLOADER_AUTO_UPDATE_MIN_VERSION:-1713358463}"
SPIDEV=/dev/spidev10.0 SPIDEV=/dev/spidev10.0
# Default is to use flashrom if availableon BCM2712 # Default is to use flashrom if availableon BCM2712
RPI_EEPROM_USE_FLASHROM=${RPI_EEPROM_USE_FLASHROM:-1} RPI_EEPROM_USE_FLASHROM=${RPI_EEPROM_USE_FLASHROM:-1}