mirror of
https://github.com/raspberrypi/rpi-eeprom.git
synced 2026-01-20 21:13:36 +08:00
Compare commits
28 Commits
v2024.11.1
...
v2025.02.1
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c954a72f63 | ||
|
|
3679582b23 | ||
|
|
1e5578b70c | ||
|
|
a1bffdeb5d | ||
|
|
bad328a72e | ||
|
|
34eab17ce6 | ||
|
|
0190dbc122 | ||
|
|
b67b21ddda | ||
|
|
9c95b83551 | ||
|
|
7918c84b4b | ||
|
|
478ad485ca | ||
|
|
0944712c0a | ||
|
|
cc58b7d6ce | ||
|
|
6a7ca681cb | ||
|
|
62292b43ad | ||
|
|
54d9c333a9 | ||
|
|
edf686cd51 | ||
|
|
888e374d47 | ||
|
|
f02f0eaf4e | ||
|
|
4ba7cedf18 | ||
|
|
6b431180b8 | ||
|
|
adb3b9befc | ||
|
|
d57c084c9f | ||
|
|
585ec185f2 | ||
|
|
af0426b473 | ||
|
|
fe7bfc7201 | ||
|
|
9621ef6a92 | ||
|
|
4a7375bebe |
2
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
2
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
@@ -80,7 +80,7 @@ body:
|
||||
attributes:
|
||||
label: Bootloader logs
|
||||
description: |
|
||||
If the problem can't be diagnosed from the bootloader HDMI diagnostics screen then we'll normally need to see more detailed logs to diagnose the problem. The bootloader and GPU firmware can be configured to enable log output to the UART pins `14` and `15` on the [40-pin GPIO header](https://www.raspberrypi.com/documentation/computers/os.html#gpio-and-the-40-pin-header)
|
||||
If the problem can't be diagnosed from the bootloader HDMI diagnostics screen then we'll normally need to see more detailed logs to diagnose the problem. The bootloader and GPU firmware can be configured to enable log output to the UART (GPIOs `14` and `15`, pins `8` and `10` on the [40-pin GPIO header](https://www.raspberrypi.com/documentation/computers/os.html#gpio-and-the-40-pin-header, or on the Debug header on a Pi 5)
|
||||
* To enable UART logging from the bootloader specify [BOOT_UART=1](https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#BOOT_UART) in the EEPROM config
|
||||
* To enable UART logging from the `start.elf` GPU firmware stage add [uart_2ndstage=1](https://www.raspberrypi.com/documentation/computers/config_txt.html#uart_2ndstage) to `config.txt`.
|
||||
* If you are familiar with using Wireshark then it's also possible to use [NETCONSOLE](https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#NETCONSOLE) write logs to UDP packets.
|
||||
|
||||
6
LICENSE
6
LICENSE
@@ -6,10 +6,14 @@ Files: *
|
||||
Copyright: 2019, Raspberry Pi (Trading) Ltd.
|
||||
License: BSD-3
|
||||
|
||||
Files: firmware/*
|
||||
Files: firmware-2711/*
|
||||
Copyright: 2019, Raspberry Pi (Trading) Ltd.
|
||||
License: custom
|
||||
|
||||
Files: firmware-2712/*
|
||||
Copyright: 2024, Raspberry Pi (Trading) Ltd.
|
||||
License: custom
|
||||
|
||||
License: BSD-3
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
|
||||
BIN
firmware-2711/default/pieeprom-2025-02-11.bin
Normal file
BIN
firmware-2711/default/pieeprom-2025-02-11.bin
Normal file
Binary file not shown.
Binary file not shown.
BIN
firmware-2711/latest/pieeprom-2024-12-07.bin
Normal file
BIN
firmware-2711/latest/pieeprom-2024-12-07.bin
Normal file
Binary file not shown.
BIN
firmware-2711/latest/pieeprom-2025-02-11.bin
Normal file
BIN
firmware-2711/latest/pieeprom-2025-02-11.bin
Normal file
Binary file not shown.
Binary file not shown.
@@ -1,5 +1,47 @@
|
||||
# Raspberry Pi4 bootloader EEPROM release notes
|
||||
|
||||
## 2025-02-17: Promote 2025-02-11 to default release (default)
|
||||
|
||||
## 2025-02-11: recovery: Walk partitions to delete recovery.bin (latest)
|
||||
|
||||
* recovery: Walk partitions to delete recovery.bin
|
||||
Previously, recovery.bin would fail to delete itself
|
||||
if the bootrom loaded recovery.bin where there are multiple FAT
|
||||
partitions and the first partition does not contain recovery.bin
|
||||
Update the rename code to walk the partition table to find
|
||||
the recovery.bin file to delete.
|
||||
* Enable overriding of high partition numbers
|
||||
Previously, the PARTITION=N bootloader config setting would only
|
||||
be used at power on reset or if the partition number passed to
|
||||
reboot was zero.
|
||||
Change the behaviour so that the bootloader config PARTITION
|
||||
property can override the reboot partition number if the reboot
|
||||
parameter is > 31.
|
||||
* Walk the partition table if the requested partition is not bootable
|
||||
Previously, if the specified boot partition was not bootable the
|
||||
bootloader would stop and advance to the next BOOT_ORDER. If the
|
||||
new PARTITION_WALK option is set to 1 the bootloader will now
|
||||
check each partition in turn starting from the specified partition
|
||||
before advancing the BOOT_ORDER.
|
||||
This feature is intended for use with A/B systems to handle the case
|
||||
where autoboot.txt is missing / corrupted. This change enables
|
||||
the system to failover to the next available bootable partition.
|
||||
The autoboot.txt file is not scanned during the partition-walk
|
||||
phase i.e. there is no recursive processing of autoboot.txt files.
|
||||
This option is only supported on physical block devices
|
||||
(SD, NVMe, USB) and not RAMDISK. USB assumes a single high speed
|
||||
device, partition walks on multiple USB devices is not recommended
|
||||
and may cause timeouts.
|
||||
* Improve keyboard handling in boot menu
|
||||
Try and make it more likely that we have enough time to perform key
|
||||
detection.
|
||||
Ignore mice, which were being enumerated and slowing things down.
|
||||
|
||||
## 2024-12-07: Enable banklow (and so NUMA) by default (latest)
|
||||
|
||||
* Enable banklow (and so NUMA) by default
|
||||
banklow=1 (2712) and banklow=3 (2711) give the best performance.
|
||||
|
||||
## 2024-10-21: Fix PCIe BAR issue for some switches (latest)
|
||||
|
||||
* Boot-menu improvements
|
||||
|
||||
BIN
firmware-2712/default/pieeprom-2025-01-22.bin
Normal file
BIN
firmware-2712/default/pieeprom-2025-01-22.bin
Normal file
Binary file not shown.
BIN
firmware-2712/default/pieeprom-2025-02-12.bin
Normal file
BIN
firmware-2712/default/pieeprom-2025-02-12.bin
Normal file
Binary file not shown.
Binary file not shown.
BIN
firmware-2712/latest/pieeprom-2024-11-27.bin
Normal file
BIN
firmware-2712/latest/pieeprom-2024-11-27.bin
Normal file
Binary file not shown.
BIN
firmware-2712/latest/pieeprom-2024-12-07.bin
Normal file
BIN
firmware-2712/latest/pieeprom-2024-12-07.bin
Normal file
Binary file not shown.
BIN
firmware-2712/latest/pieeprom-2024-12-15.bin
Normal file
BIN
firmware-2712/latest/pieeprom-2024-12-15.bin
Normal file
Binary file not shown.
BIN
firmware-2712/latest/pieeprom-2024-12-19.bin
Normal file
BIN
firmware-2712/latest/pieeprom-2024-12-19.bin
Normal file
Binary file not shown.
BIN
firmware-2712/latest/pieeprom-2025-01-06.bin
Normal file
BIN
firmware-2712/latest/pieeprom-2025-01-06.bin
Normal file
Binary file not shown.
BIN
firmware-2712/latest/pieeprom-2025-01-07.bin
Normal file
BIN
firmware-2712/latest/pieeprom-2025-01-07.bin
Normal file
Binary file not shown.
BIN
firmware-2712/latest/pieeprom-2025-01-08.bin
Normal file
BIN
firmware-2712/latest/pieeprom-2025-01-08.bin
Normal file
Binary file not shown.
BIN
firmware-2712/latest/pieeprom-2025-01-13.bin
Normal file
BIN
firmware-2712/latest/pieeprom-2025-01-13.bin
Normal file
Binary file not shown.
BIN
firmware-2712/latest/pieeprom-2025-01-14.bin
Normal file
BIN
firmware-2712/latest/pieeprom-2025-01-14.bin
Normal file
Binary file not shown.
BIN
firmware-2712/latest/pieeprom-2025-01-22.bin
Normal file
BIN
firmware-2712/latest/pieeprom-2025-01-22.bin
Normal file
Binary file not shown.
BIN
firmware-2712/latest/pieeprom-2025-01-27.bin
Normal file
BIN
firmware-2712/latest/pieeprom-2025-01-27.bin
Normal file
Binary file not shown.
BIN
firmware-2712/latest/pieeprom-2025-02-11.bin
Normal file
BIN
firmware-2712/latest/pieeprom-2025-02-11.bin
Normal file
Binary file not shown.
BIN
firmware-2712/latest/pieeprom-2025-02-12.bin
Normal file
BIN
firmware-2712/latest/pieeprom-2025-02-12.bin
Normal file
Binary file not shown.
Binary file not shown.
@@ -1,5 +1,205 @@
|
||||
# Raspberry Pi5 bootloader EEPROM release notes
|
||||
|
||||
## 2025-02-17: Promote 2025-02-12 to the default release (default)
|
||||
|
||||
## 2025-02-12: Fixup change to disable 3.7V PMIC output on CM5 no-wifi (latest)
|
||||
|
||||
* Fixup change to disable 3.7V PMIC output on CM5 no-wifi
|
||||
|
||||
## 2025-02-11: CM5 no-Wifi stability improvements (latest)
|
||||
|
||||
* recovery: Walk partitions to delete recovery.bin
|
||||
Previously, recovery.bin would fail to delete itself
|
||||
if the bootrom loaded recovery.bin where there are multiple FAT
|
||||
partitions and the first partition does not contain recovery.bin
|
||||
Update the rename code to walk the partition table to find
|
||||
the recovery.bin file to delete.
|
||||
* pi5: Add config filter for simple boot variable expressions (experimental)
|
||||
Add support for a new bootloader/config.txt conditional filter
|
||||
which tests the partition, boot_count and boot_arg1 variables.
|
||||
Syntax (no spaces):
|
||||
ARG boot_arg1, boot_count or partition (EEPROM config stage only)
|
||||
[ARG=VALUE] selected if (ARG == VALUE)
|
||||
[ARG&MASK] selected if ((ARG & VALUE) != 0))
|
||||
[ARG&MASK=VALUE] selected if ((ARG & MASK) == VALUE)
|
||||
[ARG<VALUE] selected if (ARG < VALUE)
|
||||
[ARG>VALUE] selected if (ARG > VALUE)
|
||||
where VALUE and MASK are unsigned integer constants and ARG
|
||||
corresponds to the value in the reset register before the
|
||||
config file is parsed.
|
||||
* pi5: Add a boot-count bootloader variable (experimental)
|
||||
Store the boot-count in a reset register and increment just
|
||||
before the boot-order state-machine. The boot-count variable
|
||||
is visible via device-tree /proc/device-tree/chosen/bootloader/count
|
||||
and can be read/set via vcmailbox
|
||||
GET: sudo vcmailbox 0x0003008d 4 4 0
|
||||
SET to N: sudo vcmailbox 0x0003808d 4 4 N
|
||||
* pi5: Add user-defined reboot argument (boot_arg1) (experimental)
|
||||
Add support for a user-defined boot parameter stored in a reset-safe
|
||||
scratch register on BCM2712. This is visible via device-tree at
|
||||
/proc/device-tree/chosen/bootloader/arg1 and via vcmailboxes
|
||||
GET arg1: sudo vcmailbox 0x0003008c 8 8 1 0
|
||||
SET arg1 to 42: sudo vcmailbox 0x0003808c 8 8 1 42
|
||||
or via config.txt
|
||||
set_reboot_arg1=42
|
||||
The variable is NOT cleared automatically and will persist until
|
||||
a power-on-reset.
|
||||
* Enable overriding of high partition numbers
|
||||
Previously, the PARTITION=N bootloader config setting would only
|
||||
be used at power on reset or if the partition number passed to
|
||||
reboot was zero.
|
||||
Change the behaviour so that the bootloader config PARTITION
|
||||
property can override the reboot partition number if the reboot
|
||||
parameter is > 31.
|
||||
* Disable WiFi PMIC output on CM5 modules without WiFi
|
||||
Disable the 3.7V WiFi power supply on CM5 modules which do not have a
|
||||
WiFi module fitted. This fixes some stability issues where a CM5
|
||||
would shutdown due to a spurious over-voltage condition on the
|
||||
non-connected WiFi power supply.
|
||||
* Add memory barrier to the mbox handler
|
||||
Firmware issue 1944 reports receiving kernel warnings about firmware
|
||||
requests where the status return code is 0. This should not be
|
||||
possible, as handle_mbox_property always sets the top bit of the return
|
||||
code, with the bottom bit indicating success or failure. If the firmware
|
||||
had died, the firmware driver would report a timeout due to the lack of
|
||||
a mailbox interrupt, and that isn't happening.
|
||||
See: https://github.com/raspberrypi/firmware/issues/1944
|
||||
* support dts files with size-cells of 2
|
||||
DTS files with a top-level #size-cells of 2 make a lot of sense for
|
||||
systems with a lot of RAM, but the firmware is currently inconsistent
|
||||
in its support for that. Fix up the other cases to honor #size-cells
|
||||
and #address-cells.
|
||||
* Disable SDIO2 for CM5s without WiFi
|
||||
It has been observed that CM5s without WiFi hang on reboot. To prevent
|
||||
that, disable the sdio2 node on those devices.
|
||||
See: https://github.com/raspberrypi/linux/issues/6647
|
||||
* arm_dt: Use dtoverlay_enable_node
|
||||
Convert the open-coded DT node status changes to use the new dtoverlay
|
||||
method dtoverlay_enable_node.
|
||||
* dtoverlay: Add dtoverlay_enable_node
|
||||
Add a helper function for setting the status of a node.
|
||||
|
||||
## 2025-01-27: Walk the partition table if the requested partition is not bootable (latest)
|
||||
|
||||
* Walk the partition table if the requested partition is not bootable
|
||||
Previously, if the specified boot partition was not bootable the
|
||||
bootloader would stop and advance to the next BOOT_ORDER. If the
|
||||
new PARTITION_WALK option is set to 1 the bootloader will now
|
||||
check each partition in turn starting from the specified partition
|
||||
before advancing the BOOT_ORDER.
|
||||
This feature is intended for use with A/B systems to handle the case
|
||||
where autoboot.txt is missing / corrupted. This change enables
|
||||
the system to failover to the next available bootable partition.
|
||||
The autoboot.txt file is not scanned during the partition-walk
|
||||
phase i.e. there is no recursive processing of autoboot.txt files.
|
||||
This option is only supported on physical block devices
|
||||
(SD, NVMe, USB) and not RAMDISK. USB assumes a single high speed
|
||||
device, partition walks on multiple USB devices is not recommended
|
||||
and may cause timeouts.
|
||||
* Improve keyboard handling in boot menu
|
||||
Try and make it more likely that we have enough time to perform key
|
||||
detection.
|
||||
Ignore mice, which were being enumerated and slowing things down.
|
||||
|
||||
## 2025-01-22: Promote 2025-01-22 to default release (default)
|
||||
|
||||
## 2025-01-22: Add DT /chosen property signed-boot boot.img hash (latest)
|
||||
|
||||
* 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.
|
||||
* filesystem: GPT autoboot/reboot partition number fixes for Pi4 and older
|
||||
* Fix problems when setting arm_freq_min=arm_freq and display clocks
|
||||
if performance governor is not enabled.
|
||||
|
||||
## 2025-01-14: Add set_reboot_order API (latest)
|
||||
|
||||
* 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
|
||||
|
||||
## 2025-01-13: Improved SDRAM refresh timings for Pi5 16GB (latest)
|
||||
|
||||
* 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.
|
||||
|
||||
## 2025-01-08: Update SDRAM refresh timings for BCM2712D0 products (latest)
|
||||
|
||||
* Update SDRAM timings for BCM2712D0 products.
|
||||
|
||||
## 2025-01-07: Fixup M.2 HAT+ detection (latest)
|
||||
|
||||
* Fix a potential timing issue introduced in the 2025-01-06
|
||||
release when enabling PCIE_PWR when booting from SD/USB.
|
||||
|
||||
## 2025-01-06: Stop the fan after after fan-probe (latest)
|
||||
|
||||
* 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.
|
||||
|
||||
## 2024-12-19: Disable fan PWM before shutdown (latest)
|
||||
|
||||
* 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.
|
||||
|
||||
## 2024-12-15: Add net install to boot menu (latest)
|
||||
|
||||
* Add net install to boot menu
|
||||
Press N (or shift).
|
||||
* enable_uart: Require enable_uart=1 to enable RP1 UART console
|
||||
See: https://github.com/raspberrypi/rpi-eeprom/issues/643
|
||||
|
||||
## 2024-12-07: Enable banklow (and so NUMA) by default (latest)
|
||||
|
||||
* 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.
|
||||
|
||||
## 2024-11-27: rp1fw: Add FIFO_STATE & DRAIN_TX, fix CAN_ADD_PROGRAM (default)
|
||||
|
||||
* rp1fw: Add FIFO_STATE & DRAIN_TX, fix CAN_ADD_PROGRAM
|
||||
RP1 firmware eb39cfd516f8c90628aa9d91f52370aade5d0a55 adds methods
|
||||
to drain the TX FIFO and retrieve the state of both FIFOs. It also
|
||||
fixes the CAN_ADD_PROGRAM implementation, which was fatally broken.
|
||||
* network-install - Update the UI to display the board model / variant.
|
||||
|
||||
## 2024-11-12: Promote 2024-11-12 to default release (default)
|
||||
|
||||
* Promote 2024-11 to the default release and archive older versions.
|
||||
|
||||
@@ -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
|
||||
|
||||
# Pi5
|
||||
${script_dir}/make-release critical 2024-09-23 "" "${script_dir}/2712-config" release-2712 rpi-boot-eeprom-recovery 2712
|
||||
${script_dir}/make-release critical 2025-01-22 "" "${script_dir}/2712-config" release-2712 rpi-boot-eeprom-recovery 2712
|
||||
|
||||
@@ -111,7 +111,7 @@ def exit_error(msg):
|
||||
sys.stderr.write("ERROR: %s\n" % msg)
|
||||
sys.exit(1)
|
||||
|
||||
def shell_cmd(args, timeout=5, echo=False):
|
||||
def shell_cmd(args, timeout=10, echo=False):
|
||||
"""
|
||||
Executes a shell command waits for completion returning STDOUT. If an
|
||||
error occurs then exit and output the subprocess stdout, stderr messages
|
||||
@@ -171,8 +171,6 @@ def apply_update(config, eeprom=None, config_src=None):
|
||||
sys.stdout.write("Updating bootloader EEPROM\n image: %s\nconfig_src: %s\nconfig: %s\n%s\n%s\n%s\n" %
|
||||
(eeprom_image, config_src, config, '#' * 80, config_str, '#' * 80))
|
||||
|
||||
sys.stdout.write("\n*** To cancel this update run 'sudo rpi-eeprom-update -r' ***\n\n")
|
||||
|
||||
# Ignore APT package checksums so that this doesn't fail when used
|
||||
# with EEPROMs with configs delivered outside of APT.
|
||||
# The checksums are really just a safety check for automatic updates.
|
||||
@@ -180,7 +178,7 @@ def apply_update(config, eeprom=None, config_src=None):
|
||||
|
||||
# If flashrom is used then the command will not return until the EEPROM
|
||||
# has been updated so use a larger timeout.
|
||||
shell_cmd(args, timeout=60, echo=True)
|
||||
shell_cmd(args, timeout=180, echo=True)
|
||||
|
||||
def edit_config(eeprom=None):
|
||||
"""
|
||||
|
||||
@@ -14,6 +14,8 @@ LOCAL_MODE=0
|
||||
if [ -n "$FIRMWARE_ROOT" ]; then
|
||||
# Provided by environment
|
||||
true
|
||||
elif [ -d /usr/lib/firmware/raspberrypi/bootloader ] || [ -d /usr/lib/firmware/raspberrypi/bootloader-2711 ] || [ -d /usr/lib/firmware/raspberrypi/bootloader-2712 ]; then
|
||||
FIRMWARE_ROOT=/usr/lib/firmware/raspberrypi/bootloader
|
||||
elif [ -d /lib/firmware/raspberrypi/bootloader ] || [ -d /lib/firmware/raspberrypi/bootloader-2711 ] || [ -d /lib/firmware/raspberrypi/bootloader-2712 ]; then
|
||||
FIRMWARE_ROOT=/lib/firmware/raspberrypi/bootloader
|
||||
else
|
||||
@@ -189,6 +191,32 @@ prepareImage()
|
||||
fi
|
||||
}
|
||||
|
||||
runFlashrom()
|
||||
{
|
||||
attempts=5
|
||||
freq=16000
|
||||
|
||||
# If flashrom fails then retry at a lower speed.
|
||||
while [ ${attempts} -gt 0 ]; do
|
||||
echo "flashrom -p linux_spi:dev=${SPIDEV},spispeed=${freq} -w ${BOOTFS}/pieeprom.upd"
|
||||
if flashrom -p linux_spi:dev=${SPIDEV},spispeed=${freq} -w "${BOOTFS}/pieeprom.upd" >> "${FLASHROM_LOG}"; then
|
||||
echo "Verifying update"
|
||||
if flashrom -p linux_spi:dev=${SPIDEV},spispeed=${freq} -v "${BOOTFS}/pieeprom.upd" >> "${FLASHROM_LOG}"; then
|
||||
echo "VERIFY: SUCCESS"
|
||||
return 0
|
||||
else
|
||||
echo "VERIFY: FAIL"
|
||||
fi
|
||||
fi
|
||||
freq=8000
|
||||
attempts=$((attempts - 1))
|
||||
if [ ${attempts} -gt 0 ]; then
|
||||
echo "Failed to update bootloader using flashrom. Retrying."
|
||||
fi
|
||||
done
|
||||
return 1
|
||||
}
|
||||
|
||||
applyRecoveryUpdate()
|
||||
{
|
||||
[ -n "${BOOTLOADER_UPDATE_IMAGE}" ] || [ -n "${VL805_UPDATE_IMAGE}" ] || die "No update images specified"
|
||||
@@ -266,8 +294,7 @@ applyRecoveryUpdate()
|
||||
echo "a bootloader rescue SD card image which restores the default bootloader image."
|
||||
echo
|
||||
FLASHROM_LOG="$(mktemp)"
|
||||
echo "flashrom -p linux_spi:dev=${SPIDEV},spispeed=16000 -w ${BOOTFS}/pieeprom.upd"
|
||||
if flashrom -p linux_spi:dev=${SPIDEV},spispeed=16000 -w "${BOOTFS}/pieeprom.upd" > "${FLASHROM_LOG}"; then
|
||||
if runFlashrom; then
|
||||
# Success - remove update files from the boot partition
|
||||
removePreviousUpdates
|
||||
echo "UPDATE SUCCESSFUL"
|
||||
@@ -877,6 +904,11 @@ checkVersion()
|
||||
|
||||
if [ "${ACTION_UPDATE_BOOTLOADER}" = 1 ] || [ "${ACTION_UPDATE_VL805}" = 1 ]; then
|
||||
echo "*** UPDATE AVAILABLE ***"
|
||||
echo ""
|
||||
echo "Run \"sudo rpi-eeprom-update -a\" to install this update now."
|
||||
echo
|
||||
echo "To configure the bootloader update policy run \"sudo ${RPI_EEPROM_UPDATE_CONFIG_TOOL}\""
|
||||
echo ""
|
||||
printVersions
|
||||
write_status_info "EXIT_UPDATE_REQUIRED"
|
||||
exit ${EXIT_UPDATE_REQUIRED}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
|
||||
FIRMWARE_ROOT=/lib/firmware/raspberrypi/bootloader
|
||||
FIRMWARE_ROOT=/usr/lib/firmware/raspberrypi/bootloader
|
||||
FIRMWARE_RELEASE_STATUS="default"
|
||||
FIRMWARE_BACKUP_DIR="/var/lib/raspberrypi/bootloader/backup"
|
||||
EEPROM_CONFIG_HOOK=
|
||||
|
||||
14
test/install
14
test/install
@@ -20,14 +20,14 @@ CONFIG="/etc/default/rpi-eeprom-update"
|
||||
[ "$(id -u)" = "0" ] || die "$0 Must be run as root - try 'sudo $0 [-b]'"
|
||||
|
||||
# Clear out the old firmware
|
||||
rm -rf /lib/firmware/raspberrypi/bootloader
|
||||
rm -rf /lib/firmware/raspberrypi/bootloader-2711
|
||||
rm -rf /lib/firmware/raspberrypi/bootloader-2712
|
||||
rm -rf /usr/lib/firmware/raspberrypi/bootloader
|
||||
rm -rf /usr/lib/firmware/raspberrypi/bootloader-2711
|
||||
rm -rf /usr/lib/firmware/raspberrypi/bootloader-2712
|
||||
|
||||
mkdir -p /lib/firmware/raspberrypi/bootloader-2711
|
||||
rsync -alv "${FIRMWARE_DIR}-2711"/* /lib/firmware/raspberrypi/bootloader-2711 || echo "Failed"
|
||||
mkdir -p /lib/firmware/raspberrypi/bootloader-2712
|
||||
rsync -alv "${FIRMWARE_DIR}-2712"/* /lib/firmware/raspberrypi/bootloader-2712 || echo "Failed"
|
||||
mkdir -p /usr/lib/firmware/raspberrypi/bootloader-2711
|
||||
rsync -alv "${FIRMWARE_DIR}-2711"/* /usr/lib/firmware/raspberrypi/bootloader-2711 || echo "Failed"
|
||||
mkdir -p /usr/lib/firmware/raspberrypi/bootloader-2712
|
||||
rsync -alv "${FIRMWARE_DIR}-2712"/* /usr/lib/firmware/raspberrypi/bootloader-2712 || echo "Failed"
|
||||
|
||||
cp -fv "${script_dir}/../rpi-eeprom-config" /usr/bin
|
||||
cp -fv "${script_dir}/../rpi-eeprom-digest" /usr/bin
|
||||
|
||||
Reference in New Issue
Block a user