Raspberry Pi Bootloader v2026.05.11-2712

v2026.05.11-2712

rpi-boot-eeprom-recovery-2026-05-11-2712

Added 6
  • Add MFG_VER string for rpi-eeprom-update minver check to validate minimum recommended bootloader version against hardware
  • Record hardware board information in OTP on Pi5 and report minimal bootloader version via device-tree under /proc/device-tree/chosen/rpi-min-boot-ver
  • Add an error code for the bootloader memory test to display 5 short flashes if DDR init succeeds but memory test fails
  • Add support for customer OTP rows in conditional expressions in config.txt from Pi 1 onwards
  • Copy early bootloader UART logs into vcos logging accessible via sudo vclog -m on Pi5
  • Add support for 8-bit bus width eMMC on CM5
Changed 8
  • Set bootloader mfg version id to 1 to indicate support for new SDRAM variants
  • Increase default v3d frequency on 2712d0
  • Enable turbo clocks before loading the kernel on Pi5 to reduce boot time by approximately 1 second on NVMe boot
  • Update Broadcom SDRAM firmware to 4.72 to support additional memory variants
  • Update the slow non-tuned DDR init used by recovery.bin to support more SDRAM variants
  • Automatically reboot after displaying a fatal error three times instead of waiting forever, with option to disable via REBOOT_ON_FATAL_ERROR=0
  • Assume eMMC for CM4/CM5 non-lite modules by skipping SD interface condition command timeout to save approximately 250ms of boot time
  • Apply rpifwcrypto lock permissions to GET/SET USER OTP mailboxes to prevent access to device unique private key when locked
Fixed 4
  • Correct logging message for hdmi_pixel_freq_limit in arm_display
  • Fix partition walk for boot_ramdisk and secure-boot to allow retries if partition walk was enabled
  • Fix bad hmac arguments lock-up in rpi-fw-crypto by improving argument validation for key-id and private key
  • Preserve the RTC alarm state so it can be queried by the rpi-rtc driver

Interesting changes since the last release:

2026-05-11: 2712: Set bootloader mfg verison id to 1 (latest)
  • 2712: Set bootloader mfg verison id to 1 Advance the minimum version id to 1 to indicate support for new SDRAM variants.
  • Add MFG_VER string for rpi-eeprom-update minver check On new boards, the minimum recommended version will be written to OTP. This will allow rpi-eeprom-update to check the minimum recommended version required by the hardware against the version field embedded in EEPROM image binary. strings pieeeprom.bin | grep 'MFG_VER:'
  • pi5: Record hardware board information in OTP On Pi5 report minimal bootloader version via device-tree under /proc/device-tree/chosen/rpi-min-boot-ver.
2026-04-30: 2712: arm_boot: Enable turbo clocks before loading the kernel (latest)
  • arm_display: Correct logging message hdmi_pixel_freq_limit Noticed in a raspinfo log file.
  • Increase default v3d frqeuency on 2712d0
  • pi5: arm_boot: Enable turbo clocks before loading the kernel Originally, for the entire boot ran at the idle-operating point. Subsequently, the default for intial_turbo was changed so that the kernel is started with turbo-clocks unless disabled via config.txt. This change enables the turbo-clocks as soon as it is safe as soon as the turbo voltage has been calibrated to speedup kernel loading and device-tree processing. This reduces boot time by approximately 1 second on a Pi5 booting from NVMe.
2026-04-27: Broadcom SDRAM firmware update to 4.72 (latest)

Broadcom SDRAM firmware update to 4.72

Update the Broadcom SDRAM firmware to 4.72 to support additional memory variants.

2026-04-14: Update recovery.bin to support more SDRAM variants (latest)
  • Update the slow (non tuned) DDR init used by recovery.bin to support more SDRAM variants.
  • Add an error code for the bootloader memory test. The bootloader contains simple memory test to validate that the DDR init firmware has completed successfully. If the DDR init firmware reports an error code then continue to display 8 short flashes. However, if the DDR init firmware is successful but the memory test fails then display 5 short flashes. This is very unlikely to fail in practise but is useful debug mechanism when stress testing boards e.g. different temperatures.
  • Automatically reboot after a displaying a fatal error Change the fatal error handler to perform a hard reset after displaying the fatal error three times in a row instead of waiting forever. This change can mitigate intermittent hardware issues due e.g. power supplies, HATs or board temperature. Displaying the error pattern three times first rate limits reboots. If a faster reboot is required then the BOOT_WATCHDOG setting should be used instead. To disable this feature set REBOOT_ON_FATAL_ERROR=0 in the bootloader config.
2026-02-23: Fix partition walk for boot_ramdisk / secure-boot (latest)
  • Fix partition walk for boot_ramdisk / secure-boot If secure-boot / boot_ramdisk was enabled and boot.img was not found then the bootloader would immediately exit the boot mode instead allowing the partition walk to run. Change the logic to allow retries if partition walk was enabled.
2026-02-06: config: Add support for customer OTP rows in conditional expressions (latest)
  • config: Add support for customer OTP rows in conditional expressions Support conditional filter for eight customer OTP rows to be used by config.txt from Pi 1 onwards.
  • pi5: Copy early bootloader UART logs into vcos logging Early bootloader loggings in bootmain are now available via 'sudo vclog -m'
2026-01-21: rpi-fw-crypto: Fix bad hmac arguments lock-up (latest)
  • rpi-fw-crypto: Fix bad hmac arguments lock-up Improve argument validation so that a bad key-id or invalid private key can no longer cause a lock-up during HMAC operations.
2026-01-16: Assume eMMC for CM4/CM5 non-lite (latest)
  • Assume eMMC for CM4/CM5 non-lite Attempt the fast path by skipping the SD interface condition command timeout on CM4/CM5 (non-lite) modules and enable eMMC mode directly. This saves ~250ms of the boot time.
  • Don't stomp on RTC alarm state Preserve the RTC's alarm state so that it can be queried by the rpi-rtc driver. See: https://github.com/raspberrypi/firmware/issues/2011
  • arm_loader: Apply rpifwcrypto lock permissions GET/SET USER OTP Previously, the GET/SET user OTP mailboxes would provide access to the device unique private key. Update the mailbox API to fail if the key has been locked via lock_device_private_key=1 in config.txt or the associated mailbox call. GET/SET user OTP fails by setting the result tag to the standard error code (0x80000000). The dedicate GET/SET private key continue to fail the entire mailbox operation to force vcmailbox to exit with a non-zero error code.
  • cm5: Add support for 8-bit bus width eMMC
View original

Upgraded? How did it go?

Discussion