pieeprom-2025-01-27: 2712: Add PARTITION_WALK option (latest)
[rpi-eeprom.git] / firmware-2712 / release-notes.md
blobbe40283bc5f194902dc179a9c5e7b36401af9e0f
1 # Raspberry Pi5 bootloader EEPROM release notes
3 ## 2025-01-27: Walk the partition table if the requested partition is not bootable (latest)
5 * Walk the partition table if the requested partition is not bootable
6   Previously, if the specified boot partition was not bootable the
7   bootloader would stop and advance to the next BOOT_ORDER. If the
8   new PARTITION_WALK option is set to 1 the bootloader will now
9   check each partition in turn starting from the specified partition
10   before advancing the BOOT_ORDER.
11   This feature is intended for use with A/B systems to handle the case
12   where autoboot.txt is missing / corrupted. This change enables
13   the system to failover to the next available bootable partition.
14   The autoboot.txt file is not scanned during the partition-walk
15   phase i.e. there is no recursive processing of autoboot.txt files.
16   This option is only supported on physical block devices
17   (SD, NVMe, USB) and not RAMDISK. USB assumes a single high speed
18   device, partition walks on multiple USB devices is not recommended
19   and may cause timeouts.
20 * Improve keyboard handling in boot menu
21   Try and make it more likely that we have enough time to perform key
22   detection.
23   Ignore mice, which were being enumerated and slowing things down.
25 ## 2025-01-22: Promote 2025-01-22 to default release (default)
27 ## 2025-01-22: Add DT /chosen property signed-boot boot.img hash (latest)
29 * Add DT /chosen property signed-boot boot.img hash
30   Make the sha256 hash of the boot.img file available via
31   device-tree /proc/device-tree/chosen/bootloader/boot_img_sha256 if
32   signed boot is enabled.
33 * filesystem: GPT autoboot/reboot partition number fixes for Pi4 and older
34 * Fix problems when setting arm_freq_min=arm_freq and display clocks
35   if performance governor is not enabled.
37 ## 2025-01-14: Add set_reboot_order API (latest)
39 * Add set_reboot_order API and config.txt properties
40   If set_reboot_order is defined in config.txt or set via vcmailbox
41   then this will override the bootloader config BOOT_ORDER property
42   on the next reboot. The parameter is stored in a reset safe register
43   and is cleared by the bootloader after reading it.
44   Typically, the config.txt value only be used via rpiboot to
45   override the boot-order on the next reboot. Otherwise, it should
46   reside in a conditional section so that the boot order is not
47   overridden on every reboot.
48   Example, test network boot
49   sudo vcmailbox 0x0003808b 4 4 0xf4612; sudo reboot
51 ## 2025-01-13: Improved SDRAM refresh timings for Pi5 16GB (latest)
53 * Improved SDRAM refresh timings for Pi5 - 16GB
54 * Add an option to wait for the power button to be pressed before booting.
55   If POWER_OFF_ON_HALT=1 and WAIT_FOR_POWER_BUTTON=1 in the bootloader
56   config then the bootloader will wait for either the power button
57   to be pressed or an RTC alarm before booting. The wait state
58   switches the PMIC to STANDBY mode which is the lowest possible
59   power state.
61 ## 2025-01-08: Update SDRAM refresh timings for BCM2712D0 products (latest)
63 * Update SDRAM timings for BCM2712D0 products.
65 ## 2025-01-07: Fixup M.2 HAT+ detection (latest)
67 * Fix a potential timing issue introduced in the 2025-01-06
68   release when enabling PCIE_PWR when booting from SD/USB.
70 ## 2025-01-06: Stop the fan after after fan-probe (latest)
72 * Stop the fan after after fan-probe
73   After the fan-probe has completed drive the fan PWM GPIO
74   to high if a fan was detected and let the OS take over.
75 * Add SD_QUIRKS for hardware bringup / workarounds
76   Add a new SD_QUIRKS flags property which can be used to
77   disable high-speed mode (bit 0). Other bits are reserved for
78   future use.
79 * Change uart_2ndstage default to 1 on Pi5
80   Change the default to 1 because this gives useful diagnostics
81   for device-tree loading with minimal overhead. Set uart_2ndstage=0
82   or BOOT_UART=0 to disable this.
83 * Move M.2 HAT+ detection to early boot.
84   Initialse M.2 HAT+ detection before DDR init to give NVMe
85   drive firmware more time to boot.
87 ## 2024-12-19: Disable fan PWM before shutdown (latest)
89 * Disable fan PWM before shutdown
90   Drive the RP1 fan PWM GPIO high before entering the VPU
91   sleep (POWER_OFF_ON_HALT=0) to stop the fan spinning.
92 * Disable fan PWM GPIO between RP1 init and fan probe
93   Drive fan PWM GPIO high during early boot to disable the fan
94   until it is probed during the device-tree setup stage.
95   This stops the spinning at max rpm during network-install.
96 * arm_dt: enable_uart defaults to 0 on 2712
97   The default value of enable_uart on 2712 is 0, regardless of the
98   presence of the debug UART cable, so guarantee that the default is
99   always set correctly.
101 ## 2024-12-15: Add net install to boot menu (latest)
103 * Add net install to boot menu
104   Press N (or shift).
105 * enable_uart: Require enable_uart=1 to enable RP1 UART console
106   See: https://github.com/raspberrypi/rpi-eeprom/issues/643
108 ## 2024-12-07: Enable banklow (and so NUMA) by default (latest)
110 * Enable banklow (and so NUMA) by default
111   banklow=1 (2712) and banklow=3 (2711) give the best performance.
112 * enable_uart=1 now enables a Linix UART console on the 40-pin header
113   unless a cable is detected on the dedicated boot-uart.
114 * Recreate internal bl31 stub from clean git tree to fix dirty commit message.
116 ## 2024-11-27: rp1fw: Add FIFO_STATE & DRAIN_TX, fix CAN_ADD_PROGRAM (default)
118 * rp1fw: Add FIFO_STATE & DRAIN_TX, fix CAN_ADD_PROGRAM
119   RP1 firmware eb39cfd516f8c90628aa9d91f52370aade5d0a55 adds methods
120   to drain the TX FIFO and retrieve the state of both FIFOs. It also
121   fixes the CAN_ADD_PROGRAM implementation, which was fatally broken.
122 * network-install - Update the UI to display the board model / variant.
124 ## 2024-11-12: Promote 2024-11-12 to default release (default)
126 * Promote 2024-11 to the default release and archive older versions.
128 ## 2024-11-12: Enable initial_turbo=60 by default (latest)
130 * net-install: Fix keyboard detection on hubs
131 * recovery: Always enable UART debug output on 2712
132 * Set POWER_OFF_ON_HALT defaults
133   The default value for POWER_OFF_ON_HALT on CM5 and Pi 500 will be 1.
134   Pi5 defaults to 0 for backwards compatibility.
135 * boot-time: Remove unnecessary 1 second delay when configuring DWC2 controller.
136 * Enable initial_turbo=60 by default
137   This reduces the time to get load and decompress the kernel.
138 * logging: Remove superfluous newline on SDRAM refresh changed messages
139 * Fix initial_turbo duration
140   The timeout counter for the previous implementation could run too quickly
141   causing the initial-turbo timeout to end earlier than expected.
142 * rp1-fw: Add the mailbox firmware interface, and PIO support that uses it.
143 * rp1-fw: Turn off unused 25MHz Ethernet refclk
145 ## 2024-11-07: recovery.bin - Update default release to latest version (default)
147 * Update recovery.bin to the most recent version required for CM5 and Pi500.
148   (firmware version 2024-10-21)
150 ## 2024-11-05: NUMA - Add system_heap.max_order=0 when needed (latest)
152 * NUMA - Add system_heap.max_order=0 when needed - configure this
153   setting automatically depending on whether NUMA is enabled.
155 ## 2024-10-21: Fix PCIe BAR issue for some switches  (latest)
157 * Fix PCIe BAR setup issue which prevented NVMe boot from working with some PCIe switches
158   See: https://github.com/raspberrypi/firmware/issues/1833
159 * Boot-menu improvements
160   Remain in the forced boot mode until the menu is used to select a different
161   boot-mode or reset to the original boot-order.
163 ## 2024-10-10: Add support to override the boot-mode at power on (latest)
165 * Introduce a new boot-menu feature where pressing SPACE at power on
166   gives the user a one-shot option to select a different boot mode.
167   e.g. Select USB boot if the default SD card is corrupted or unavailable.
168 * Display the bootloader network-install UI for longer on a cold boot to make
169   this feature more visible to first time users.
170   To revert to the previous behaviour remove NET_INSTALL_AT_POWER_ON=1
171   from the bootloader config.
172 * Support non-UUID HAT mapping
173   Extend the HAT map support to allow matching on product and vendor
174   strings, as well as product ID and version. As a minimum, there must
175   be a product string - if that matches, the other keys are considered.
176   Without a product key, the UUID is compared as before.
177 * Remove requirement for GPT ptable array  to be at LBA-2
178   See: https://github.com/raspberrypi/rpi-eeprom/issues/585
179 * 2712C1 clock manager improvements to slightly reduce idle power ~50mW saving
180 * Adjust SDRAM page-hold and auto-precharge to improve performance.
181   ~2% improvement with Geekbench 6
182 * armstubs: 2712: Rebuild with updated max-power throttle and direct stream settings
183   See: https://github.com/raspberrypi/arm-trusted-firmware/commit/fc45bc492dd655f9ea4893a384527341a48cf03d
184 * debug: Only display the program_pubkey log if configuring secure-boot
185 * Default to 2GB start for PCI bus addresses on 2711 and 2712
186   This change also constrains the window size to 2GB, so all PCI bus address
187   assignments fall below 4GB, avoiding a potential bug with 32-bit BARs in
188   esoteric bus topologies (e.g. lots of GPUs).
190 ## 2024-09-24: Promote 2024-09-23 release (default) (automatic update)
192 ## 2024-09-23: SDRAM performance tuning (latest)
193 * Allow BANKLOW to be configured by SDRAM_BANKLOW parameter
194 * Manufacturing test updates
196 ## 2024-09-11: Promote 2024-09-10 release (default) (automatic update)
198 ## 2024-09-10: Fix lockup on 7" DSI panel clones (latest)
199 * Fix lockup regression with some 3rd party 7" DSI panels
200   See: https://github.com/raspberrypi/linux/issues/6341
202 ## 2024-09-05: Fix self-update if EEPROM is write-protected  (latest)
203 * arm_dt: Consult the hat_map for all HATs
204 * USB boot - ignore RP2 / RP3 MSD device in BOOTSEL mode.
205 * recovery.bin - Fix erase_eeprom to not block reboot_recovery
206 * Fix self-update to continue to boot instead of retrying forever
207   if the EEPROM is write protected.
208   https://github.com/raspberrypi/rpi-eeprom/issues/597
210 ## 2024-07-30: Promote the 2024-07-30 release to default (default)
212 ## 2024-08-14 - (recovery.bin) Add support for OTP metadata (latest)
213 * Update to recovery.bin to output metadata about OTP during rpiboot
215 ## 2024-07-30: Optimized SDRAM timings for Pi5 8GB (latest)
216 * Optimize all-banks/per-bank refresh timings for Pi5 8GB
217 * Improve compatibility for booting from some USB SD card readers
218     https://github.com/raspberrypi/rpi-eeprom/issues/527
219 * Add enable_rp1_uart=1 to config.txt to initialise RP1 UART0 immediately
220   prior to starting the ARMs get earlycon on 40-pin header (pins 14,15)
221   Also requires pciex4_reset=0 in config.txt, and
222   earlycon=pl011,0x1f00030000,115200n8 in cmdline.txt
224 ## 2024-07-25: Support CM4 nEXTRST on CM5 (latest)
225 * Drive nEXTRST on CM5 for CM4IO compatibility.
226 * Preliminary changes for CM5 Lite.
228 ## 2024-06-11: Promote pieeprom-2024-06-05 to the default release (default)
230 ## 2024-06-05: CM5 bringup changes (latest)
231 * Minor changes to support CM5 bringup and test.
233 ## 2024-06-04: Fix [pi5] config.txt conditional state (latest)
234 * The [pi5] conditional statement should apply to the entire pi5
235   family i.e. include cm5 as well.
236 * Bump SDIO bus priorities so that a GPU/RAM intensive process
237   can't unnecessarily stall I/O.
238 * Assorted log message tidyups.
240 ## 2024-05-17: Ignore bootloader updates for Pi5 on Pi4 - (latest)
241 * Add timestamps to UART log messages
243 ## 2024-05-13: Add support for NVMe boot with PCIe switches (latest)
244 * Add preliminary support for booting NVMe devices behind PCIe switches.
245   See: https://github.com/raspberrypi/firmware/issues/1833
246 * Fix MAX_RESTARTS parameter
247   See: https://github.com/raspberrypi/rpi-eeprom/issues/576
248 * arm_dt: Support HAT EEPROM dtparams
249 * Fix reporting of the partition number via DT
250   See: https://github.com/raspberrypi/rpi-eeprom/issues/575
251 * Resolve HID counting bug which caused Network Install to fail on some keyboards
252   See: Fixes https://github.com/raspberrypi/rpi-eeprom/issues/574
253 * Pull PCIE DET_WAKE high by default on CM5
255 ## 2024-04-20: Fix SDRAM refesh timing (default) (automatic update)
256 * Fix a possible performance regression on Pi5.
258 ## 2024-04-18: Promote the 2024-04-17 release to the default release (default) (automatic update)
259 * Select pieeprom-2024-04-17.bin to be the new default release and bump the
260   automatic update minimum version to this.
262 ## 2024-04-18: Update RP1 firmware to extend PCIe L1 entry timeout to 32 us (latest)
263 * Extend PCIe L1 entry timeout to 32us
264   Fix xhci soft reset on link-down
265   Set useful xhci compatibility bits in GUCTL
266   See https://github.com/raspberrypi/firmware/issues/1877
268 ## 2024-04-17: Fix TRYBOOT flag in secure-boot mode (latest)
269 * Fix issue that caused the TRYBOOT flag to be lost in secure-boot mode.
270 * dtoverlay: Use %u when converting u32s to strings
271    See: https://github.com/raspberrypi/linux/issues/6039
272 * Improved debug messages for secure-boot.
273 * Generate the bootloader diagnostics qrcode at run time.
275 ## 2024-04-05: HAT+ fixes for max-current, custom CA cert for net install and enable over-clocking to > 3GHz (latest)
276 * bootloader: clock_2712: Remove restriction on arm_freq <= 3000
277   See: https://github.com/raspberrypi/firmware/issues/1876
278 * arm_dt: Update max_current to match HAT value
279 * arm_dt: Remove unused legacy parameters (core_freq, arm_freq, uart0_clkrate and cache_line_size)
280 * Add support for custom CA cert for network install
281     You need to specify
282     HTTP_HOST=myhost.com
283     HTTP_PATH=/path/to/files
284     HTTP_CACERT_HASH=<hash>
286     where <hash> is a sha256 hash of the der encoded ca certificate.
287     CA cert is added using rpi-eeprom-config.
288 * Optimise Vbat current draw with charging disabled
289 * Display OTP boot status in UART log messages.
290 * Preliminary support for secure-boot OTP provisioning.
291 * Update PCIE DET_WAKE pinmux for D0 products
293 ## 2024-02-16: u-boot loading and thermal throttling fixes (latest) (default)
294 * arm_loader: Move non-kernels back to 512KB
295   See: https://github.com/raspberrypi/firmware/issues/1868
297 * Limit throttled frequency to OS requested frequency rather than
298   config.txt frequency.
299   See: https://github.com/raspberrypi/rpi-eeprom/issues/518
301 ## 2024-02-14: Fix vcgencmd otp_dump and implement C(initial_turbo) (latest)
302 * Fix a regression that caused vcgencmd otp_dump to fail.
303 * Implement C(initial_turbo) on Pi5
304   See: https://github.com/raspberrypi/firmware/issues/1864
306 ## 2024-02-08: Adjust SDRAM refresh based on temperature (latest)
308 * Adjust the SDRAM refresh interval based on the temperature. This
309   addresses the gap in performance between the 8GB and 4GB variants.
310   See https://github.com/raspberrypi/firmware/issues/1854
311 * Preliminary support for signed boot.
313 ## 2024-02-05: Add support for HAT+ POE HATs (latest)
314 * Add support for probing HAT+ POE HATs
315 * Implement DWC3 specific XHCI quirks
317 ## 2024-01-24: NVMe boot fix for WD NVMe (latest)
318 * Add a workaround for an issue seen when booting with WD Blue SN550 NVMe SSD
320 ## 2024-01-22: Add support for network-install (latest)
321 * Fix issue boot.img end sector check - STABLE
322   See:  https://github.com/raspberrypi/rpi-eeprom/issues/521
323 * Fix handling of files that use the last cluster in the partition
324   See: https://github.com/raspberrypi/rpi-eeprom/issues/521
325 * Fix SD card detection
326   See: https://github.com/raspberrypi/rpi-eeprom/issues/523
328 ## 2024-01-15: Add support for network-install (latest)
329 * Add support for Network Install
330 * Preliminary D0 firmware support
332 ## 2024-01-08: Promote 2024-01-05 to default (automatic update)
334 ## 2024-01-05: Fix handling of FAT files without LFNs.
335 * Fix issues with SFN entries sometimes being treated as LFNs
336   see https://github.com/raspberrypi/rpi-eeprom/issues/514
337 * Add a dedicated message for "M.2 HAT" not being found instead of
338   the generic 'unsupported boot order' message when NVMe boot is
339   skipped.
341 ## 2023-12-17: Promote 2023-12-14 to default release
342 * Bump to the default release now that the partition number fix is confirmed.
344 ## 2023-12-14: Fix boot partition parameter (latest)
345 * Fix an issue where the boot partition parameter in PM_RSTS was cleared
346   before being checked.
347   https://github.com/raspberrypi/firmware/issues/1853
348 * Add a specific fatal error pattern for RP1 not found - 4 long - 3 short
350 ## 2023-12-12: Promote 2023-12-06 to default release.
352 ## 2023-12-06: Initialise DWC PHY (latest)
354 * Initialise the DWC PHY to enable DWC host+peripheral support under Linux.
355   Requires https://github.com/raspberrypi/linux/commit/82069a7a02632aa60fa5c69415bf891ede7d6fd4
356 * Force PWM on 3V3 supply if cameras or HATs are connected or if power_force_3v3_pwm=1 in config.txt
357   Resolves an image quality issue with the GS camera.
358 * Add support for C(arm_min_freq) < 1500 MHz (must be at >= 200 MHz)
359 * Manufacturing test updates for DVFS.
361 ## 2023-11-20: Auto-detect support for PCIe expansion HAT (default + latest)
363 * Add autodetect support for PCIe expansion HATs
364 * Add PCIE_PROBE=1 to the EEPROM config for custom PCIe exapansion
365   designs that do not support the upcoming HAT spec. This gives
366   similar behaviour to CM4 where PCIe x1 is enumerated to discover NVMe
367   devices.
368 * Fix loading of multiple initramfs images that are not 32-bit aligned sizes
369   https://github.com/raspberrypi/firmware/issues/1843
370 * Kernel load performance improvement - remove a memcpy
372 ## 2023-10-30: UPG watchdog support + SD reset fixes (default + latest)
374 * Fix SDIO / WiFi clock-setup for BOOT_ORDER=0xf14
375 * Fix SD power-on-reset
376 * Firmware support for improved watchdog driver
377 * Update DHCP Option97 to be R,P,i,5 on Pi5
379 ## 2023-10-18: Display autodetect + HAT gpiomap (default + latest) (automatic update)
381 * Add support for HAT gpiomap for improved HAT compatibility.
382 * Add I2C probe for DSI display auto detect
383 * Automatically set dtparam=nvme if booted from nvme
384 * Fix network boot reset issue where only the first attempt works.
385 * Adding pciex4_reset=0 to config.txt will leave RP1 PCIe enabled when ARM stage is started.
386 * Prevent HDMI diagnostics being displayed immediately when waking after HALT.
387 * Update board-name - "Raspberry Pi 5"
389 ## 2023-09-28: vcgencmd pmic_read_adcs fixes (automatic update)
391 * Fix the LDO names and current scaling codes
392 * Manufacturing test updates
394 ## 2023-09-21: Power button and ACT LED improvements
396 * Fix bug where button press was not monitor for USB-C power supplies
397   that were detected as < 3A.
398 * In USB boot mode automatically select max-current during a reboot
399   (but not power on reset) to improve OS installation experience.
400 * USB-MSD stability improvements
401 * Remove the HALT error pattern and go to halt/standby immediately.
402 * Add support for HAT map.
405 ## 2023-09-13: Initial release
407 * Initial manufacturing software
408 * Network Install is not available in this version
409 * rpi-eeprom-update uses self-update on Pi5 rather than recovery.bin.
410   so that the update mechanism is the same on all boot-modes and the
411   boot file-system is never modified by the firmware/recovery.bin.
412   recovery.bin is still used by RPi Imager - bootloader update SD card images.
413 * Pi4 and Pi4 bootloader images and recovery.bin are not compatible.
414   The 2711/2712 boot ROM ignores incompatible recovery.bin files.