Skip to content

Releases: raspberrypi/rpi-eeprom

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

10 Nov 09:25

Choose a tag to compare

Interesting changes since the last release:

2025-11-05: arm_loader: Add iommu_dma_numa_policy=interleave when needed (latest)

2025-10-17: Enable background refresh on 2712d0 for all SDRAM sizes (latest)

  • 2712d0: Enable background refresh on 2712d0 for all SDRAM sizes
    This provides a minor performance benefit.
  • Update GPT to support 4K native sectors
    Bootloader logic updated to correctly interpret the GPT layout format specific to 4K native sector drives.
  • recovery: Use ROM boot-mode flag to detect rpiboot mode
    In recovery-mode use the bootrom register flag to detect the
    original boot-mode rather than looking at whether the rpiboot
    usb-device boot driver is initialised.

2025-10-08: Fix accidental set of PM_RSTS bit 5 when stopping watchdog (latest)

  • Fix accidental set of PM_RSTS bit 5 when stopping watchdog
    Fix an issue in the watchdog code where the raw PM_RSTS value
    was used as partition number. If HADWRF (bit 5) was set (on reboot)
    this could cause bit 10 to be set. If an OS didn't clear the partition
    flags on reboot then this could end up being treated as request to
    boot from partition 32.
  • pi5: Preliminary support for 4K native sectors with NVMe drives
    Pi5 now supports 4K native sector NVMe drives.
    This allows booting from drives with logical block size 4096,
    while 512B drives remain compatible. With 4K sectors, storage density
    increases along with improved reliability and efficiency.
    N.B. USB boot still requires a 512 byte sector size and there are
    no RPi OS disk images with a 4K sector format.
    See: #577
  • arm_dt: Report OTP SDRAM size via device-tree
    Report the SDRAM in gigabits via device-tree as
    /proc/device-tree/chosen/rpi-sdram-size-gbit. Scripts reporting the
    device-capabilities should use this value (if defined) instead of the
    memory-size field in the boardrev row.

2025-09-25: Apply UART_BAUD in early bootsys UART init (latest)

  • Apply UART_BAUD in early bootsys UART init
    Update bootsys and fatal error handlers to use the user
    defined UART_BAUD rate.
  • rpifwcrypto: Add support for ECDSA P-256 key generation

2025-09-23: Fix TFTP to allow larger files (latest)

  • Fix TFTP to allow larger files
    Allow TFTP block counter to rollover to 0.
    See: #720

2025-09-22: Add LZ4 decompressor (latest)

  • Add LZ4 decompressor
    LZ4 gives a better compression ratio than the previously used CK compress. The bootloader can now decompress both LZ4 compressed files and CK compressed files.
  • rpifwcrypto: Add GET_CRYPTO_PRIVATE_KEY mailbox API
    For provisioning, add a new mailbox API which returns the private key
    in DER format. The API will return an error if the key-status for
    the specified key is LOCKED.
  • config: Add support for board_attributes in conditional expressions
    Add support for the board-attributes row in config.txt conditional
    expressions. This can be used to change boot behavior for
    Compute Module Lite / No-WiFi etc.
  • board_info: Log the OTP board revision at startup
    Log the board revision plus the raw OTP value at startup.

2025-08-27: Fix PARTITION property to allow default (0) partition to be overridden (latest)

  • Fix PARTITION property to allow default (0) partition to be overridden
    Fix the partition selection to allow the bootloader PARTITION
    property to override the reboot partition number if the reboot
    argument is 0 or > 31. Previously, it was only allowing
    partition numbers > 31 to be overridden.
    See: #743
  • Enable RPIBOOT in BOOT_ORDER / set-reboot-order
    Previously, rpiboot required the bootrom to have initialised
    rpiboot before running the firmware. Update the rpiboot
    initialisation so that rpiboot to be enabled after booting from
    SPI flash.
    This could be selectively enabled by setting BOOT_ORDER property
    (0x3) behind a GPIO conditional in the EEPROM config. On Pi5, the
    set_reboot_order config.txt option or mailbox property can be
    used to set a one-time boot-order on
    N.B. There is no timeout for RPIBOOT so this should only be set
    as the last boot mode OR used with a boot_watchdog.

2025-08-20: force_eeprom_read=0 disables HAT I2C (latest)

  • force_eeprom_read=0 disables HAT I2C
    Although setting force_eeprom_read=0 has always prevented the HAT EEPROM
    from being read, with the recent changes to support Power HAT+s it does
    not prevent an early scan to see if such an EEPROM exists. This can be
    problematic for applications where the I2C0 pins have been repurposed.
    Change the inhibit logic to cut all HAT I2C probing off at the knees,
    including any automatic settings of usb_max_current_enable, as it should
    always have done.
    See: raspberrypi/firmware#1985
  • rpifwcrypto: Preliminary firmware support for rpifwcrypto API
  • Add config.txt to block GET_CUSTOMER_PRIVATE_KEY mailbox API lock_device_private_key=1

2025-08-13: Enable the PARTITION_WALK property by default (latest)

  • Enable the PARTITION_WALK property by default
    Previously, the new PARTITION_WALK which searches for bootable
    partitions after a failure had to be explicitly enabled. Change
    the default to be enabled by default. It can be switched off by
    setting PARTITION_WALK=0 in the EEPROM config.
  • pi5: Fix read for cached copy of PMIC sequencer status
    Previously, this was overwritten by the RTC event status.

2025-07-17: Fix config key search which could cause camera_autodetect to fail (latest)

  • Fix config key search which could cause camera_autodetect to fail
    The bootvar0 config property was added in the wrong section which
    could cause the config property search for some other properties
    to fail.

2025-07-17: arm_loader: Also require the early-watchdog property (latest)

  • arm_loader: Also require the early-watchdog property
    The change correcting the implementation of dtoverlay_is_enabled had the
    unintended consequence of causing the firmware to enable the watchdog
    even though the user had not explicitly requested it. This is harmless
    on Linux because the watchdog driver takes over and disarms it, but on
    other operating systems this can lead to a reboot. Avoid this problem
    by also requiring the presence of a new property, "early-watchdog".
    See: raspberrypi/firmware#1980
  • helpers/config_loader: Add bootvar0 eeprom config that can be used in config.txt section expressions
    This allows an eeprom config setting (e.g. BOOTVAR0=0x10) to be set on a board
    which config.txt can use as a conditional expression (e.g. [bootvar0&0x10]).
  • arm_loader: Fix boot-watchdog stop on Pi4
    Fix a problem where the boot_watchdog heartbeat timer was not
    stopped correctly which could cause it to clash with the kernel
    watchdog driver.

2025-07-03: Enable firmware UART output on the 40-pin header (latest)

  • rp1_uart: Allow rp1_uart to be started earlier
    If enabled (with enable_rp1_uart) then the existing boot uart
    messages are redirected to the rp1 uart.

2025-06-29: Check for SD card overcurrent on Pi5 and Pi500 (latest)

  • board_info: Use the Ethernet PHY address probed by the bootloader
    Use the Ethernet PHY address supplied by the bootloader in
    preference to the static configurations defined in start4.elf
  • pi5: Fix overwrite of cache EEPROM config in secure-boot mode
    See: #719
  • Check for SD card overcurrent on Pi5, Pi500 and Pi4
    Before booting, the bootloader now checks the SD power switch
    overcurrent signal. The overcurrent signal occurs if the SD
    card is damaged and has a short circuit which will cause it to
    get hot.
    If an over-current condition is detected the bootloader
    switches off power to the SD card and waits five seconds before
    probing the SD card again. This error is displayed on the
    diagnostic screen, the UART and the activity LED (1 long, 2 short)
    flashes.
    The check can be switched to a non-blocking warning by setting
    SD_OVERCURRENT_CHECK=0 in the bootloader config.
  • Add a new error code pattern for SD overcurrent
    Add a new error pattern (1 long, 2 short) to signal SD card
    overcurrent.
  • Enable RTC wakeup from POWER_OFF_ON_HALT=0
  • Improve HAT+ current handling
    In shipping firmware, the current_supply value is only being used in the
    case of a normal (non-stacked) HAT+, but that is unnecessarily
    restrictive. Also, the presence of MODE0 and MODE1 power HATs is not
    reflected in the value of max_current.
    See: raspberrypi/linux#6678

2025-06-20: Add support for a bootloader watchdog (latest)

  • Add support for a bootloader watchdog
    Add support for a boot watchdog (using PM_RSTC hw wdog) which will
    trigger if the OS is not started within the specified amount of time. The
    watchdog is enabled by setting the BOOT_WATCHDOG_TIMEOUT=N (seconds)
    property in the bootlaoder config.
    The BOOT_WATCHDOG_PARTITION=P property can be set to pass a different
    partition number to the bootloader on reset if the watchdog
    is triggered.
    The boot watchdog is automatically cleared just before starting
    the OS and (optionally) enabling the kernel watchdog.
  • pi5: Add a temperature monitor
    In early releases of the bootloader the fan would always be on
    during boot which can be distracting. Later releases switch off the
    fan until the OS has booted.
    This change adds some ...
Read more

rpi-boot-eeprom-recovery-2025-11-05-2711

10 Nov 09:29

Choose a tag to compare

Interesting changes since the last release:

2025-11-05: Add iommu_dma_numa_policy=interleave when needed (latest)

2025-10-14: recovery: Use ROM boot-mode to detect rpiboot (latest)

  • recovery: Use ROM boot-mode flag to detect rpiboot mode
    In recovery-mode use the bootrom register flag to detect the
    original boot-mode rather than looking at whether the rpiboot
    usb-device boot driver is initialised.
  • Manufacturing test updates.

2025-10-08: Fix accidental set of PM_RSTS bit 5 when stopping watchdog (latest)

  • Fix accidental set of PM_RSTS bit 5 when stopping watchdog
    Fix an issue in the watchdog code where the raw PM_RSTS value
    was used as partition number. If HADWRF (bit 5) was set (on reboot)
    this could cause bit 10 to be set. If an OS didn't clear the partition
    flags on reboot then this could end up being treated as request to
    boot from partition 32.

2025-10-03: arm_dt: Report OTP SDRAM size via device-tree (latest)

  • arm_dt: Report OTP SDRAM size via device-tree
    Report the SDRAM in gigabits via device-tree as
    /proc/device-tree/chosen/rpi-sdram-size-gbit. Scripts reporting the
    device-capabilities should use this value (if defined) instead of the
    memory-size field in the boardrev row.
  • Apply UART_BAUD in early bootsys UART init
    Update bootsys and fatal error handlers to use the user
    defined UART_BAUD rate.
  • rpifwcrypto: Add support for ECDSA P-256 key generation
    Also, slightly improve the entropy by passing the system
    timer value as the personality string.

2025-09-23: Fix network install regression on Pi4 (latest)

  • Fix network install regression on Pi4
    Fix an issue with the ECDSA signature code which caused network
    install to fail to load on Pi4.
  • Fix TFTP to allow larger files
    Allow TFTP block counter to rollover to 0.
    See: #720

2025-09-22: Add LZ4 decompressor (latest)

  • Add LZ4 decompressor
    LZ4 gives a better compression ratio than the previously used CK compress. The bootloader can now decompress both LZ4 compressed files and CK compressed files.
  • rpifwcrypto: Add GET_CRYPTO_PRIVATE_KEY mailbox API
    For provisioning, add a new mailbox API which returns the private key
    in DER format. The API will return an error if the key-status for
    the specified key is LOCKED.
  • config: Add support for board_attributes in conditional expressions
    Add support for the board-attributes row in config.txt conditional
    expressions. This can be used to change boot behavior for
    Compute Module Lite / No-WiFi etc.
  • board_info: Log the OTP board revision at startup
    Log the board revision plus the raw OTP value at startup.

2025-08-27: Fix PARTITION property to allow default (0) partition to be overridden (latest)

  • Fix PARTITION property to allow default (0) partition to be overridden
    Fix the partition selection to allow the bootloader PARTITION
    property to override the reboot partition number if the reboot
    argument is 0 or > 31. Previously, it was only allowing
    partition numbers > 31 to be overridden.
    See: #743
  • Enable RPIBOOT in BOOT_ORDER / set-reboot-order
    Previously, rpiboot required the bootrom to have initialised
    rpiboot before running the firmware. Update the rpiboot
    initialisation so that rpiboot to be enabled after booting from
    SPI flash.
    This could be selectively enabled by setting BOOT_ORDER property
    (0x3) behind a GPIO conditional in the EEPROM config. On Pi5, the
    set_reboot_order config.txt option or mailbox property can be
    used to set a one-time boot-order on
    N.B. There is no timeout for RPIBOOT so this should only be set
    as the last boot mode OR used with a boot_watchdog.

2025-08-20: Fix PARTITION_WALK for missing start.elf files (latest)

  • Fix PARTITION_WALK for missing start.elf files
    Fix a missing call to bootloader_reset_state so that PARTITION_WALK
    will work if the boot-partition is FAT, contains config.txt etc
    but does not have valid firmware.
    See: #738
  • force_eeprom_read=0 disables HAT I2C
    Although setting force_eeprom_read=0 has always prevented the HAT EEPROM
    from being read, with the recent changes to support Power HAT+s it does
    not prevent an early scan to see if such an EEPROM exists. This can be
    problematic for applications where the I2C0 pins have been repurposed.
    Change the inhibit logic to cut all HAT I2C probing off at the knees,
    including any automatic settings of usb_max_current_enable, as it should
    always have done.
    See: raspberrypi/firmware#1985
  • bootcode.bin: Add support for boot.img ramdisk on Pi3 and earlier
    Add support for boot.img ramdisk support, enable by adding boot_ramdisk=1
    in config.txt
  • rpifwcrypto: Preliminary firmware support for rpifwcrypto API
  • Add config.txt to block GET_CUSTOMER_PRIVATE_KEY mailbox API
    lock_device_private_key=1

2025-08-13: Enable PARTITION_WALK property by default (latest)

  • Enable the PARTITION_WALK property by default
    Previously, the new PARTITION_WALK which searches for bootable
    partitions after a failure had to be explicitly enabled. Change
    the default to be enabled by default. It can be switched off by
    setting PARTITION_WALK=0 in the EEPROM config.
  • Optimise bootmain for size on Pi4
    Pi4 only has a 512KB SPI flash EEPROM and the addition of features
    plus fixes is now causing contention for space between the code and
    the EEPROM config. Since bootmain is only responsible for loading
    start.elf revert to the original configuration which is optimised
    for size rather than speed. Pi5 continues to be optimised for speed.

2025-07-17: arm_loader: Also require the early-watchdog property (latest)

  • arm_loader: Also require the early-watchdog property
    The change correcting the implementation of dtoverlay_is_enabled had the
    unintended consequence of causing the firmware to enable the watchdog
    even though the user had not explicitly requested it. This is harmless
    on Linux because the watchdog driver takes over and disarms it, but on
    other operating systems this can lead to a reboot. Avoid this problem
    by also requiring the presence of a new property, "early-watchdog".
    See: raspberrypi/firmware#1980
  • helpers/config_loader: Add bootvar0 eeprom config that can be used in config.txt section expressions
    This allows an eeprom config setting (e.g. BOOTVAR0=0x10) to be set on a board
    which config.txt can use as a conditional expression (e.g. [bootvar0&0x10]).
  • arm_loader: Fix boot-watchdog stop on Pi4
    Fix a problem where the boot_watchdog heartbeat timer was not
    stopped correctly which could cause it to clash with the kernel
    watchdog driver.

2025-07-03: Check for SD card overcurrent (latest)

  • board_info: Use the Ethernet PHY address probed by the bootloader
    Use the Ethernet PHY address supplied by the bootloader in
    preference to the static configurations defined in start4.elf
  • Check for SD card overcurrent on Pi5, Pi500 and Pi4
    Before booting, the bootloader now checks the SD power switch
    overcurrent signal. The overcurrent signal occurs if the SD
    card is damaged and has a short circuit which will cause it to
    get hot.
    If an over-current condition is detected the bootloader switches
    switches off power to the SD card and waits five seconds before
    probing the SD card again. This error is displayed on the
    diagnostic screen, the UART and the activity LED (1 long, 2 short)
    flashes.
    The check can be switched to a non-blocking warning by setting
    SD_OVERCURRENT_CHECK=0 in the bootloader config.
  • Add a new error code pattern for SD overcurrent
    Add a new error pattern (1 long, 2 short) to signal SD card
    overcurrent.
  • Add support for a bootloader watchdog
    Add support for a boot watchdog (using PM_RSTC hw wdog) which will
    trigger if the OS is not started within the specified amount of time. The
    watchdog is enabled by setting the BOOT_WATCHDOG_TIMEOUT=N (seconds)
    property in the bootlaoder config.
    The BOOT_WATCHDOG_PARTITION=P property can be set to pass a different
    partition number to the bootloader on reset if the watchdog
    is triggered.
    The boot watchdog is automatically cleared just before starting
    the OS and (optionally) enabling the kernel watchdog.
  • Skip first SD boot if no card detected
    On platforms with an SD Card detect signal, skip the first attempt to
    boot from SD if the card appears to be absent. This can save over a
    second on a cold boot, and a little under a second for a reboot.

2025-05-16: 2711: Automatically set revoke_devkey if program_pubkey=1 (latest)

  • 2711: (recovery) Automatically set revoke_devkey if program_pubkey=1
    Previously, on BCM2711 products it was possible to program the key
    hash without revoking the development key. This can be useful for
    testing but should never be used in production because it is possible
    to an install an older version of the bootloader which doesn't
    support secure-boot. Since the secure-boot tools are stable and
    have improved usability (RPi secure-boot provisioner) this test
    feature not necessary and is just a security risk so the behaviour
    is changed to always revoke the development key if program_pubkey=1.
    This change is not relevant on BCM2712 because secure-boot requires
    that the second stage bootloader is counter-signed with the customer's
    private key.

rpi-boot-eeprom-recovery-2025-05-08-2712

14 May 18:26

Choose a tag to compare

Interesting changes since the last release:

  • arm_loader: Correct some mailbox response lengths
    The GET_GENCMD_RESULT mailbox handler was setting the wrong response
    length, and GET_FIRMWARE_COMMIT_HASH and GET_FIRMWARE_VARIANT were not
    setting any length.
    See: raspberrypi/firmware#1968
  • Signed boot and HTTP boot mode
    HTTP boot mode is supposed to be disabled if signed boot is enabled and
    a host is not specified. The code is checking the http_secure flag to
    enforce this. But this is valid now we support custom CA certs.
    Only disable HTTP mode if we're using the default HOST.
  • Implement TCP window for net boot
    The minimal IP stack used for https booting lacks the ability to cache
    packets received out of order, which can lead to severe slowdown when
    it happens. The problem seems to affect some ISPs more than others.
    The receive window implemented here copes with packet losses of 10%.
  • netboot: Correct the TCP MSS
  • rp1_net: Overwrite the length field
    Although concise, ORing in the packet length runs the risk of leaving
    some unwanted bits set. Ensure the length field is cleared before
    ORing in the required value.
  • Correct msecs in debug timestamps
    The fractional part of timestamps in UART debug output was showing the
    100ths and 1000ths of a second, rather than 10ths and 100ths, causing
    strange sequences that appear to jump backwards.
  • Implement GET_BOARD_MAC_ADDRESS on Pi5
    The Pi 5 EEPROM implements a subset of the original mailbox properties.
    Add GET_BOARD_MAC_ADDRESS to the subset.
    See: #698
  • Ensure the initramfs matches the kernel
    As far as is possible, both the kernel and initramfs are matched to the
    device. However, where multiple kernel variants can run on a device, the
    initramfs must be matched to the chosen kernel. Make that the sole rule
    for initramfs selection, rather than duplicating the device matching
    logic.
    See: raspberrypi/firmware#1965
  • Enable logging messages from OS loader
    Pi 5 EEPROM builds were missing the output from the main OS loading
    function, including some important diagnostics. Enabling the logging
    output from this loader code results in some near-duplicates, but is
    more user friendly and is available via "sudo vclog -m".
  • arm_dt: Revert to using the max fan speed
    It has been reported that the presence of a cooling fan at boot time
    can lead to a maximum observed fan speed of ~300 but a current speed
    of 0. The absence of a fan results in 0s for both metrics.
    See: #690
  • os_check: cm5: Check for CM5 specific dtbs
    Check for BCM2712 support in bcm2712-rpi-cm5-cm5io.dtb
    or bcm2712-rpi-cm5l-cm5io.dtb on CM5 instead of bcm2712-rpi-5-b.dtb.
    This avoids needing to put os_check=1 or specifying device_tree
    in config.txt in minimal images for CM5.
    See: #682
  • Log the fan speed at boot
    Record the fan RPM (and the maximum seen) during boot, so that it is
    accessible using "sudo vclog -m".
    See: #678
  • Add current_supply to HAT+ support
    Refactor the HAT library to make it more self-contained, and combine
    the I2C address detection and the reading of the EEPROM contents.
    Use it to allow the earlier boot stages to check for a current_supply
    setting in the EEPROM of a normal (non-stackable) HAT+.

rpi-boot-eeprom-recovery-2025-05-08-vl805-000138c0

14 May 18:32

Choose a tag to compare

Interesting changes since the last release:

  • Signed boot and HTTP boot mode
    HTTP boot mode is supposed to be disabled if signed boot is enabled and
    a host is not specified. The code is checking the http_secure flag to
    enforce this. But this is valid now we support custom CA certs.
    Only disable HTTP mode if we're using the default HOST.
  • Implement TCP window for net boot
    The minimal IP stack used for https booting lacks the ability to cache
    packets received out of order, which can lead to severe slowdown when
    it happens. The problem seems to affect some ISPs more than others.
    The receive window implemented here copes with packet losses of 10%.
  • netboot: Correct the TCP MSS
  • Correct msecs in debug timestamps
    The fractional part of timestamps in UART debug output was showing the
    100ths and 1000ths of a second, rather than 10ths and 100ths, causing
    strange sequences that appear to jump backwards.

rpi-boot-eeprom-recovery-2025-03-10-2712

26 Mar 14:54

Choose a tag to compare

Interesting changes since the last release:-

  • Log the fan speed at boot
  • Add current_supply to HAT+ support
  • Update SDRAM init timings to intermittent 8-flash SDRAM init errors on some boards.
    See: #67
  • config_loader: Add support [boot_partition=N] as an expression filter
  • Fix missing initialisation of selected_expr to 1 in config.txt
  • Fix BCM2712 GPIO pull configuration on 2712D0
  • Disable UARTA for CM5s without WiFi
  • recovery: Walk partitions to delete recovery.bin

rpi-boot-eeprom-recovery-2025-02-12-2712

18 Feb 12:49

Choose a tag to compare

Interesting changes since the last release:-

  • recovery: Walk partitions to delete recovery.bin
  • pi5: Add config filter for simple boot variable expressions (experimental)
  • pi5: Add a boot-count bootloader variable (experimental)
  • pi5: Add user-defined reboot argument (boot_arg1)
  • Enable overriding of high partition numbers via EEPROM PARTITION=N setting
  • Disable WiFi PMIC output on CM5 modules without WiFi
  • Add memory barrier to the mbox handler
  • support dts files with size-cells of 2
  • Disable SDIO2 for CM5s without WiFi
  • Walk the partition table if the requested partition is not bootable and PARTITION_WALK is set in the bootloader config.

rpi-boot-eeprom-recovery-2025-02-11-vl805-000138c0

18 Feb 13:09

Choose a tag to compare

Interesting changes since the last release:-

  • recovery: Walk partitions to delete recovery.bin
  • Enable overriding of high partition numbers via EEPROM config PARTITION property
  • Walk the partition table if the requested partition is not bootable and PARTITION_WALK=1
  • Improve keyboard handling in boot menu
  • Enable banklow (and so NUMA) by default
  • Use soft-reset to preseve SDRAM contents after ramoops
  • Display the bootloader network-install UI for longer on a cold boot (NET_INSTALL_AT_POWER_ON=1)
  • Default to 2GB start for PCI bus addresses
  • USB boot - ignore RP2 / RP3 MSD device in BOOTSEL mode
  • Fix MAX_RESTARTS parameter
  • Switch to building the Pi4 firmware from the common Pi4/Pi5 release.
  • Update VL805 to 138C0 - fix for handling of split transactions

rpi-boot-eeprom-recovery-2025-01-22-2712

22 Jan 17:18

Choose a tag to compare

Interesting changes since the last release:-

  • Add DT /chosen property signed-boot boot.img hash
    Make the sha256 hash of the boot.img file available via
    device-tree /proc/device-tree/chosen/bootloader/boot_img_sha256 if
    signed boot is enabled.
  • Fix problems when setting arm_freq_min=arm_freq and display clocks if performance governor is not enabled.
  • Add set_reboot_order API and config.txt properties
    If set_reboot_order is defined in config.txt or set via vcmailbox
    then this will override the bootloader config BOOT_ORDER property
    on the next reboot. The parameter is stored in a reset safe register
    and is cleared by the bootloader after reading it.
    Typically, the config.txt value only be used via rpiboot to
    override the boot-order on the next reboot. Otherwise, it should
    reside in a conditional section so that the boot order is not
    overridden on every reboot.
    Example, test network boot
    sudo vcmailbox 0x0003808b 4 4 0xf4612; sudo reboot
  • Improved SDRAM refresh timings for Pi5 - 16GB
  • Add an option to wait for the power button to be pressed before booting.
    If POWER_OFF_ON_HALT=1 and WAIT_FOR_POWER_BUTTON=1 in the bootloader
    config then the bootloader will wait for either the power button
    to be pressed or an RTC alarm before booting. The wait state
    switches the PMIC to STANDBY mode which is the lowest possible
    power state.
  • Update SDRAM timings for BCM2712D0 products.
  • Fix a potential timing issue introduced in the 2025-01-06
    release when enabling PCIE_PWR when booting from SD/USB.
  • Stop the fan after after fan-probe
    After the fan-probe has completed drive the fan PWM GPIO
    to high if a fan was detected and let the OS take over.
  • Add SD_QUIRKS for hardware bringup / workarounds
    Add a new SD_QUIRKS flags property which can be used to
    disable high-speed mode (bit 0). Other bits are reserved for
    future use.
  • Change uart_2ndstage default to 1 on Pi5
    Change the default to 1 because this gives useful diagnostics
    for device-tree loading with minimal overhead. Set uart_2ndstage=0
    or BOOT_UART=0 to disable this.
  • Move M.2 HAT+ detection to early boot.
    Initialse M.2 HAT+ detection before DDR init to give NVMe
    drive firmware more time to boot.
  • Disable fan PWM before shutdown
    Drive the RP1 fan PWM GPIO high before entering the VPU
    sleep (POWER_OFF_ON_HALT=0) to stop the fan spinning.
  • Disable fan PWM GPIO between RP1 init and fan probe
    Drive fan PWM GPIO high during early boot to disable the fan
    until it is probed during the device-tree setup stage.
    This stops the spinning at max rpm during network-install.
  • arm_dt: enable_uart defaults to 0 on 2712
    The default value of enable_uart on 2712 is 0, regardless of the
    presence of the debug UART cable, so guarantee that the default is
    always set correctly.
  • Add net install to boot menu
    Press N (or shift).
  • enable_uart: Require enable_uart=1 to enable RP1 UART console
    See: #643
  • Enable banklow (and so NUMA) by default
    banklow=1 (2712) and banklow=3 (2711) give the best performance.
  • enable_uart=1 now enables a Linix UART console on the 40-pin header
    unless a cable is detected on the dedicated boot-uart.
  • Recreate internal bl31 stub from clean git tree to fix dirty commit message.

rpi-boot-eeprom-recovery-2024-11-12-2712

25 Nov 17:36

Choose a tag to compare

Interesting changes since the last release:

  • Remove POWER_OFF_ON_HALT config line and use board default - Pi5 is 0 and CM5 / Pi500 is 1.
  • Set NET_INSTALL_AT_POWER_ON=1 in the imager EEPROM config
  • RP1 firmware - Add support for Linux PIO driver
  • Change initial_turbo default from 0 to 60 to reduce boot time.
  • Remove unnecessary 1 second delay in DWC host-mode setup.
  • network-install - fix keyboard detection on hubs
  • recovery.bin - Always enable UART output

rpi-boot-eeprom-recovery-2024-11-08-2712

08 Nov 11:51

Choose a tag to compare

Update recovery.bin to the minimum supported version for all 2712 devices.