# Raspberry Pi Bootloader: what changed from 2025 to 2026 - Product: Raspberry Pi Bootloader (https://whatsnew.fyi/product/rpi-eeprom) - Vendor: Raspberry Pi - Range: changelog entries numbered after v2025.12.08-2711-138c0 up to and including v2026.05.17-2711-0138c0, stable releases only - Entries below: 2 releases (newest first) - Resolved: 2025 is v2025.12.08-2711-138c0 and 2026 is v2026.05.17-2711-0138c0, the newest stable release of each major we track - Not shown: 3 releases whose versions could not be placed against this range - Carrying security changes: 0 · CVEs mentioned: 0 · Mentioning breaking changes: 0 · Removing or deprecating something: 0 - Page: https://whatsnew.fyi/product/rpi-eeprom/compare/2025...2026 What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. Reuse: the summaries, labels and curation here are © What's New. Quote freely with attribution and a link back; wholesale republication of the corpus is not permitted — terms: https://whatsnew.fyi/terms. The vendors' own release notes remain their publishers'. ## What changed (21 changes, grouped by kind) ### Added #### v2026.05.11-2712 (2026-05-11) - 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 #### v2026.01.09-2711 (2026-01-16) - Add support for more SDRAM die configurations ### Changed #### v2026.05.11-2712 (2026-05-11) - 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 #### v2026.01.09-2711 (2026-01-16) - Query all sdram devices for temperature when adjusting refresh ### Fixed #### v2026.05.11-2712 (2026-05-11) - 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 #### v2026.01.09-2711 (2026-01-16) - Apply rpifwcrypto lock permissions to GET/SET USER OTP mailboxes to prevent access to the device unique private key when locked via lock_device_private_key=1 in config.txt or associated mailbox call ## Release notes ### v2026.05.11-2712 — rpi-boot-eeprom-recovery-2026-05-11-2712 - Date: 2026-05-11 - Version: v2026.05.11-2712 - Original notes: https://github.com/raspberrypi/rpi-eeprom/releases/tag/v2026.05.11-2712 - Permalink: https://whatsnew.fyi/product/rpi-eeprom/releases/v2026.05.11-2712 - **changed** — Set bootloader mfg version id to 1 to indicate support for new SDRAM variants - **added** — Add MFG_VER string for rpi-eeprom-update minver check to validate minimum recommended bootloader version against hardware - **added** — 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 - **fixed** — Correct logging message for hdmi_pixel_freq_limit in arm_display - **changed** — Increase default v3d frequency on 2712d0 - **changed** — Enable turbo clocks before loading the kernel on Pi5 to reduce boot time by approximately 1 second on NVMe boot - **changed** — Update Broadcom SDRAM firmware to 4.72 to support additional memory variants - **changed** — Update the slow non-tuned DDR init used by recovery.bin to support more SDRAM variants - **added** — Add an error code for the bootloader memory test to display 5 short flashes if DDR init succeeds but memory test fails - **changed** — Automatically reboot after displaying a fatal error three times instead of waiting forever, with option to disable via REBOOT_ON_FATAL_ERROR=0 - **fixed** — Fix partition walk for boot_ramdisk and secure-boot to allow retries if partition walk was enabled - **added** — Add support for customer OTP rows in conditional expressions in config.txt from Pi 1 onwards - **added** — Copy early bootloader UART logs into vcos logging accessible via sudo vclog -m on Pi5 - **fixed** — Fix bad hmac arguments lock-up in rpi-fw-crypto by improving argument validation for key-id and private key - **changed** — Assume eMMC for CM4/CM5 non-lite modules by skipping SD interface condition command timeout to save approximately 250ms of boot time - **fixed** — Preserve the RTC alarm state so it can be queried by the rpi-rtc driver - **changed** — Apply rpifwcrypto lock permissions to GET/SET USER OTP mailboxes to prevent access to device unique private key when locked - **added** — Add support for 8-bit bus width eMMC on CM5 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 opera _[Truncated at 4000 characters — full notes: https://github.com/raspberrypi/rpi-eeprom/releases/tag/v2026.05.11-2712]_ ### v2026.01.09-2711 — rpi-boot-eeprom-recovery-2026-01-09 - Date: 2026-01-16 - Version: v2026.01.09-2711 - Original notes: https://github.com/raspberrypi/rpi-eeprom/releases/tag/v2026.01.09-2711 - Permalink: https://whatsnew.fyi/product/rpi-eeprom/releases/v2026.01.09-2711 - **fixed** — Apply rpifwcrypto lock permissions to GET/SET USER OTP mailboxes to prevent access to the device unique private key when locked via lock_device_private_key=1 in config.txt or associated mailbox call - **changed** — Query all sdram devices for temperature when adjusting refresh - **added** — Add support for more SDRAM die configurations Interesting changes since the last release:- ##### 2026-01-09: arm_loader: Apply rpifwcrypto lock permissions GET/SET USER OTP (latest) * 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. * Query all sdram devices for temperature when adjusting refresh * Add support for more SDRAM die configurations.