mirror of
https://github.com/raspberrypi/rpi-eeprom.git
synced 2026-01-21 14:53:32 +08:00
Compare commits
54 Commits
v2023.10.1
...
v2024.02.1
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
36e58db5c2 | ||
|
|
b1a715b256 | ||
|
|
0e8ecbcf83 | ||
|
|
d4918d4d4c | ||
|
|
b5c7f1bee6 | ||
|
|
c987375f1d | ||
|
|
99cb0bdaa2 | ||
|
|
a8f2eb75b5 | ||
|
|
606c5d25e5 | ||
|
|
88b33ab030 | ||
|
|
a7f982962b | ||
|
|
9df346bc1c | ||
|
|
68fca2166b | ||
|
|
eca47c5f4c | ||
|
|
097e2d0573 | ||
|
|
4b8e875510 | ||
|
|
21a78a91de | ||
|
|
cc020609fb | ||
|
|
d5f1ab30fa | ||
|
|
8855da9889 | ||
|
|
a5b4f91caf | ||
|
|
7232154170 | ||
|
|
759460850c | ||
|
|
9e0bffb291 | ||
|
|
258d0114c0 | ||
|
|
0cd761bc84 | ||
|
|
72cedfe5ee | ||
|
|
14e934cee3 | ||
|
|
e407fb0030 | ||
|
|
b405ed7465 | ||
|
|
ef0cfffced | ||
|
|
a66e79ba99 | ||
|
|
745eabf90e | ||
|
|
043841636c | ||
|
|
3f325bd482 | ||
|
|
52c5d89d48 | ||
|
|
77402b6527 | ||
|
|
9c8d97d6a2 | ||
|
|
f20bb90a67 | ||
|
|
7e22b8ff47 | ||
|
|
8f19146862 | ||
|
|
e4724b4783 | ||
|
|
1e5594c51b | ||
|
|
b57586ead2 | ||
|
|
46c89bee09 | ||
|
|
6b14e84a2f | ||
|
|
db154d4710 | ||
|
|
aded0825e3 | ||
|
|
d53db79009 | ||
|
|
5ec5c003ba | ||
|
|
b066f89a40 | ||
|
|
ff81e998c5 | ||
|
|
fdff8e81f0 | ||
|
|
645c2a1201 |
6
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
6
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
@@ -6,7 +6,7 @@ body:
|
|||||||
value: |
|
value: |
|
||||||
**Is this the right place for my bug report?**
|
**Is this the right place for my bug report?**
|
||||||
|
|
||||||
* This repository contains the Raspberry Pi 4, Pi400 and CM4 bootloader EEPROM images and installation scripts.
|
* This repository contains the Raspberry Pi 5, Raspberry Pi 4, Pi400, CM4 and CM4-S bootloader EEPROM images and installation scripts.
|
||||||
* Please report boot issues for the earlier models at the GPU firmware repo [github.com/raspberrypi/firmware](https://github.com/raspberrypi/firmware).
|
* Please report boot issues for the earlier models at the GPU firmware repo [github.com/raspberrypi/firmware](https://github.com/raspberrypi/firmware).
|
||||||
* Please report USB issues which occur after the OS has started at the Linux repo [github.com/raspberrypi/linux/](https://github.com/raspberrypi/linux/).
|
* Please report USB issues which occur after the OS has started at the Linux repo [github.com/raspberrypi/linux/](https://github.com/raspberrypi/linux/).
|
||||||
* If you simply have a question, then [the Raspberry Pi forums](https://www.raspberrypi.org/forums) are the best place to ask it.
|
* If you simply have a question, then [the Raspberry Pi forums](https://www.raspberrypi.org/forums) are the best place to ask it.
|
||||||
@@ -39,10 +39,12 @@ body:
|
|||||||
description: On which device you are facing the bug?
|
description: On which device you are facing the bug?
|
||||||
multiple: true
|
multiple: true
|
||||||
options:
|
options:
|
||||||
|
- Raspberry Pi 5
|
||||||
- Raspberry Pi 4 Mod. B
|
- Raspberry Pi 4 Mod. B
|
||||||
- Raspberry Pi 400
|
- Raspberry Pi 400
|
||||||
- Raspberry Pi CM4
|
- Raspberry Pi CM4
|
||||||
- Raspberry Pi CM4 Lite
|
- Raspberry Pi CM4 Lite
|
||||||
|
- Raspberry Pi CM4-S
|
||||||
- Other
|
- Other
|
||||||
validations:
|
validations:
|
||||||
required: true
|
required: true
|
||||||
@@ -52,7 +54,7 @@ body:
|
|||||||
attributes:
|
attributes:
|
||||||
label: Bootloader configuration.
|
label: Bootloader configuration.
|
||||||
description: |
|
description: |
|
||||||
Copy and paste the results of `vcgencmd bootloader_config` or describe the failing configuration.
|
Copy and paste the results of `rpi-eeprom-config` or describe the failing configuration.
|
||||||
|
|
||||||
* `rpi-eeprom-update` saves a backup of the previous bootloader configuration to `/var/lib/raspberrypi/bootloader/backup` before it schedules the update.
|
* `rpi-eeprom-update` saves a backup of the previous bootloader configuration to `/var/lib/raspberrypi/bootloader/backup` before it schedules the update.
|
||||||
* `rpi-eeprom-config pieeprom.upd` can be used to read the contents of an EEPROM image.
|
* `rpi-eeprom-config pieeprom.upd` can be used to read the contents of an EEPROM image.
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ To reset the bootloader back to factory defaults use [Raspberry Pi Imager](https
|
|||||||
|
|
||||||
# Bootloader documentation
|
# Bootloader documentation
|
||||||
* [Config.txt boot options](https://www.raspberrypi.com/documentation/computers/config_txt.html#boot-options)
|
* [Config.txt boot options](https://www.raspberrypi.com/documentation/computers/config_txt.html#boot-options)
|
||||||
* [Bootloader EEPROM](https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#raspberry-pi-4-boot-eeprom)
|
* [Bootloader EEPROM](https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#raspberry-pi-boot-eeprom)
|
||||||
* [Bootloader configuration](https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#raspberry-pi-4-bootloader-configuration)
|
* [Bootloader configuration](https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#raspberry-pi-bootloader-configuration)
|
||||||
* [Updating the Compute Module 4 bootloader](https://www.raspberrypi.com/documentation/computers/compute-module.html#cm4bootloader)
|
* [Updating the Compute Module 4 bootloader](https://www.raspberrypi.com/documentation/computers/compute-module.html#cm4bootloader)
|
||||||
* [Releases and release notes](releases.md)
|
* [Releases and release notes](releases.md)
|
||||||
|
|||||||
BIN
firmware-2711/latest/pieeprom-2024-01-18.bin
Normal file
BIN
firmware-2711/latest/pieeprom-2024-01-18.bin
Normal file
Binary file not shown.
BIN
firmware-2711/latest/pieeprom-2024-01-22.bin
Normal file
BIN
firmware-2711/latest/pieeprom-2024-01-22.bin
Normal file
Binary file not shown.
Binary file not shown.
@@ -1,5 +1,12 @@
|
|||||||
# Raspberry Pi4 bootloader EEPROM release notes
|
# Raspberry Pi4 bootloader EEPROM release notes
|
||||||
|
|
||||||
|
## 2024-01-22 - Fix issue boot.img end sector check - STABLE
|
||||||
|
* See https://github.com/raspberrypi/rpi-eeprom/issues/521
|
||||||
|
|
||||||
|
## 2024-01-18 - Fix issue with minimal sized FAT partition - STABLE
|
||||||
|
* Fix handling of files that use the last cluster in the partition
|
||||||
|
https://github.com/raspberrypi/rpi-eeprom/issues/521
|
||||||
|
|
||||||
## 2023-08-01 - Remove beta release folder
|
## 2023-08-01 - Remove beta release folder
|
||||||
* Remove the beta release folder and provide a symlink to stable
|
* Remove the beta release folder and provide a symlink to stable
|
||||||
for backwards compatibility for anyone who has beta in
|
for backwards compatibility for anyone who has beta in
|
||||||
|
|||||||
BIN
firmware-2712/default/pieeprom-2023-10-30.bin
Normal file
BIN
firmware-2712/default/pieeprom-2023-10-30.bin
Normal file
Binary file not shown.
BIN
firmware-2712/default/pieeprom-2023-11-20.bin
Normal file
BIN
firmware-2712/default/pieeprom-2023-11-20.bin
Normal file
Binary file not shown.
BIN
firmware-2712/default/pieeprom-2023-12-06.bin
Normal file
BIN
firmware-2712/default/pieeprom-2023-12-06.bin
Normal file
Binary file not shown.
BIN
firmware-2712/default/pieeprom-2023-12-14.bin
Normal file
BIN
firmware-2712/default/pieeprom-2023-12-14.bin
Normal file
Binary file not shown.
BIN
firmware-2712/default/pieeprom-2024-01-05.bin
Normal file
BIN
firmware-2712/default/pieeprom-2024-01-05.bin
Normal file
Binary file not shown.
BIN
firmware-2712/default/pieeprom-2024-02-16.bin
Normal file
BIN
firmware-2712/default/pieeprom-2024-02-16.bin
Normal file
Binary file not shown.
Binary file not shown.
BIN
firmware-2712/latest/pieeprom-2023-10-30.bin
Normal file
BIN
firmware-2712/latest/pieeprom-2023-10-30.bin
Normal file
Binary file not shown.
BIN
firmware-2712/latest/pieeprom-2023-11-20.bin
Normal file
BIN
firmware-2712/latest/pieeprom-2023-11-20.bin
Normal file
Binary file not shown.
BIN
firmware-2712/latest/pieeprom-2023-12-06.bin
Normal file
BIN
firmware-2712/latest/pieeprom-2023-12-06.bin
Normal file
Binary file not shown.
BIN
firmware-2712/latest/pieeprom-2023-12-14.bin
Normal file
BIN
firmware-2712/latest/pieeprom-2023-12-14.bin
Normal file
Binary file not shown.
BIN
firmware-2712/latest/pieeprom-2024-01-05.bin
Normal file
BIN
firmware-2712/latest/pieeprom-2024-01-05.bin
Normal file
Binary file not shown.
BIN
firmware-2712/latest/pieeprom-2024-01-15.bin
Normal file
BIN
firmware-2712/latest/pieeprom-2024-01-15.bin
Normal file
Binary file not shown.
BIN
firmware-2712/latest/pieeprom-2024-01-22.bin
Normal file
BIN
firmware-2712/latest/pieeprom-2024-01-22.bin
Normal file
Binary file not shown.
BIN
firmware-2712/latest/pieeprom-2024-01-24.bin
Normal file
BIN
firmware-2712/latest/pieeprom-2024-01-24.bin
Normal file
Binary file not shown.
BIN
firmware-2712/latest/pieeprom-2024-02-05.bin
Normal file
BIN
firmware-2712/latest/pieeprom-2024-02-05.bin
Normal file
Binary file not shown.
BIN
firmware-2712/latest/pieeprom-2024-02-08.bin
Normal file
BIN
firmware-2712/latest/pieeprom-2024-02-08.bin
Normal file
Binary file not shown.
BIN
firmware-2712/latest/pieeprom-2024-02-14.bin
Normal file
BIN
firmware-2712/latest/pieeprom-2024-02-14.bin
Normal file
Binary file not shown.
BIN
firmware-2712/latest/pieeprom-2024-02-16.bin
Normal file
BIN
firmware-2712/latest/pieeprom-2024-02-16.bin
Normal file
Binary file not shown.
Binary file not shown.
@@ -1,6 +1,92 @@
|
|||||||
# Raspberry Pi5 bootloader EEPROM release notes
|
# Raspberry Pi5 bootloader EEPROM release notes
|
||||||
|
|
||||||
2023-10-18: Display autodetect + HAT gpiomap (default + latest)
|
2024-02-16: u-boot loading and thermal throttling fixes (latest) (default)
|
||||||
|
* arm_loader: Move non-kernels back to 512KB
|
||||||
|
See: https://github.com/raspberrypi/firmware/issues/1868
|
||||||
|
|
||||||
|
* Limit throttled frequency to OS requested frequency rather than
|
||||||
|
config.txt frequency.
|
||||||
|
See: https://github.com/raspberrypi/rpi-eeprom/issues/518
|
||||||
|
|
||||||
|
2024-02-14: Fix vcgencmd otp_dump and implement C(initial_turbo) (latest)
|
||||||
|
* Fix a regression that caused vcgencmd otp_dump to fail.
|
||||||
|
* Implement C(initial_turbo) on Pi5
|
||||||
|
See: https://github.com/raspberrypi/firmware/issues/1864
|
||||||
|
|
||||||
|
2024-02-08: Adjust SDRAM refresh based on temperature (latest)
|
||||||
|
|
||||||
|
* Adjust the SDRAM refresh interval based on the temperature. This
|
||||||
|
addresses the gap in performance between the 8GB and 4GB variants.
|
||||||
|
See https://github.com/raspberrypi/firmware/issues/1854
|
||||||
|
* Preliminary support for signed boot.
|
||||||
|
|
||||||
|
2024-02-05: Add support for HAT+ POE HATs (latest)
|
||||||
|
* Add support for probing HAT+ POE HATs
|
||||||
|
* Implement DWC3 specific XHCI quirks
|
||||||
|
|
||||||
|
2024-01-24: NVMe boot fix for WD NVMe (latest)
|
||||||
|
* Add a workaround for an issue seen when booting with WD Blue SN550 NVMe SSD
|
||||||
|
|
||||||
|
2024-01-22: Add support for network-install (latest)
|
||||||
|
* Fix issue boot.img end sector check - STABLE
|
||||||
|
See: https://github.com/raspberrypi/rpi-eeprom/issues/521
|
||||||
|
* Fix handling of files that use the last cluster in the partition
|
||||||
|
See: https://github.com/raspberrypi/rpi-eeprom/issues/521
|
||||||
|
* Fix SD card detection
|
||||||
|
See: https://github.com/raspberrypi/rpi-eeprom/issues/523
|
||||||
|
|
||||||
|
2024-01-15: Add support for network-install (latest)
|
||||||
|
* Add support for Network Install
|
||||||
|
* Preliminary D0 firmware support
|
||||||
|
|
||||||
|
2024-01-08: Promote 2024-01-05 to default (automatic update)
|
||||||
|
|
||||||
|
2024-01-05: Fix handling of FAT files without LFNs.
|
||||||
|
* Fix issues with SFN entries sometimes being treated as LFNs
|
||||||
|
see https://github.com/raspberrypi/rpi-eeprom/issues/514
|
||||||
|
* Add a dedicated message for "M.2 HAT" not being found instead of
|
||||||
|
the generic 'unsupported boot order' message when NVMe boot is
|
||||||
|
skipped.
|
||||||
|
|
||||||
|
2023-12-17: Promote 2023-12-14 to default release
|
||||||
|
* Bump to the default release now that the partition number fix is confirmed.
|
||||||
|
|
||||||
|
2023-12-14: Fix boot partition parameter (latest)
|
||||||
|
* Fix an issue where the boot partition parameter in PM_RSTS was cleared
|
||||||
|
before being checked.
|
||||||
|
https://github.com/raspberrypi/firmware/issues/1853
|
||||||
|
* Add a specific fatal error pattern for RP1 not found - 4 long - 3 short
|
||||||
|
|
||||||
|
2023-12-12: Promote 2023-12-06 to default release.
|
||||||
|
|
||||||
|
2023-12-06: Initialise DWC PHY (latest)
|
||||||
|
|
||||||
|
* Initialise the DWC PHY to enable DWC host+peripheral support under Linux.
|
||||||
|
Requires https://github.com/raspberrypi/linux/commit/82069a7a02632aa60fa5c69415bf891ede7d6fd4
|
||||||
|
* Force PWM on 3V3 supply if cameras or HATs are connected or if power_force_3v3_pwm=1 in config.txt
|
||||||
|
Resolves an image quality issue with the GS camera.
|
||||||
|
* Add support for C(arm_min_freq) < 1500 MHz (must be at >= 200 MHz)
|
||||||
|
* Manufacturing test updates for DVFS.
|
||||||
|
|
||||||
|
2023-11-20: Auto-detect support for PCIe expansion HAT (default + latest)
|
||||||
|
|
||||||
|
* Add autodetect support for PCIe expansion HATs
|
||||||
|
* Add PCIE_PROBE=1 to the EEPROM config for custom PCIe exapansion
|
||||||
|
designs that do not support the upcoming HAT spec. This gives
|
||||||
|
similar behaviour to CM4 where PCIe x1 is enumerated to discover NVMe
|
||||||
|
devices.
|
||||||
|
* Fix loading of multiple initramfs images that are not 32-bit aligned sizes
|
||||||
|
https://github.com/raspberrypi/firmware/issues/1843
|
||||||
|
* Kernel load performance improvement - remove a memcpy
|
||||||
|
|
||||||
|
2023-10-30: UPG watchdog support + SD reset fixes (default + latest)
|
||||||
|
|
||||||
|
* Fix SDIO / WiFi clock-setup for BOOT_ORDER=0xf14
|
||||||
|
* Fix SD power-on-reset
|
||||||
|
* Firmware support for improved watchdog driver
|
||||||
|
* Update DHCP Option97 to be R,P,i,5 on Pi5
|
||||||
|
|
||||||
|
2023-10-18: Display autodetect + HAT gpiomap (default + latest) (automatic update)
|
||||||
|
|
||||||
* Add support for HAT gpiomap for improved HAT compatibility.
|
* Add support for HAT gpiomap for improved HAT compatibility.
|
||||||
* Add I2C probe for DSI display auto detect
|
* Add I2C probe for DSI display auto detect
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
[all]
|
[all]
|
||||||
BOOT_UART=1
|
BOOT_UART=1
|
||||||
BOOT_ORDER=0xf41
|
BOOT_ORDER=0xf461
|
||||||
POWER_OFF_ON_HALT=0
|
POWER_OFF_ON_HALT=0
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
[all]
|
[all]
|
||||||
BOOT_UART=1
|
BOOT_UART=1
|
||||||
BOOT_ORDER=0xf41
|
BOOT_ORDER=0xf461
|
||||||
POWER_OFF_ON_HALT=0
|
POWER_OFF_ON_HALT=0
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
[all]
|
[all]
|
||||||
BOOT_UART=1
|
BOOT_UART=1
|
||||||
BOOT_ORDER=0xf14
|
BOOT_ORDER=0xf146
|
||||||
POWER_OFF_ON_HALT=0
|
POWER_OFF_ON_HALT=0
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
${script_dir}/make-release critical 2023-01-11 000138c0 "${script_dir}/2711-config" release-2711 rpi-boot-eeprom-recovery 2711
|
||||||
|
|
||||||
# Pi5
|
# Pi5
|
||||||
${script_dir}/make-release critical 2023-10-18 "" "${script_dir}/2712-config" release-2712 rpi-boot-eeprom-recovery 2712
|
${script_dir}/make-release critical 2024-02-16 "" "${script_dir}/2712-config" release-2712 rpi-boot-eeprom-recovery 2712
|
||||||
|
|||||||
@@ -109,7 +109,7 @@ def exit_error(msg):
|
|||||||
sys.stderr.write("ERROR: %s\n" % msg)
|
sys.stderr.write("ERROR: %s\n" % msg)
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
def shell_cmd(args):
|
def shell_cmd(args, timeout=5, echo=False):
|
||||||
"""
|
"""
|
||||||
Executes a shell command waits for completion returning STDOUT. If an
|
Executes a shell command waits for completion returning STDOUT. If an
|
||||||
error occurs then exit and output the subprocess stdout, stderr messages
|
error occurs then exit and output the subprocess stdout, stderr messages
|
||||||
@@ -117,9 +117,14 @@ def shell_cmd(args):
|
|||||||
"""
|
"""
|
||||||
start = time.time()
|
start = time.time()
|
||||||
arg_str = ' '.join(args)
|
arg_str = ' '.join(args)
|
||||||
result = subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
bufsize = 0 if echo else -1
|
||||||
|
result = subprocess.Popen(args, bufsize=bufsize, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
||||||
|
|
||||||
while time.time() - start < 5:
|
while time.time() - start < timeout:
|
||||||
|
if echo:
|
||||||
|
s = result.stdout.read(80).decode('utf-8')
|
||||||
|
if s != "":
|
||||||
|
sys.stdout.write(s)
|
||||||
if result.poll() is not None:
|
if result.poll() is not None:
|
||||||
break
|
break
|
||||||
|
|
||||||
@@ -128,8 +133,8 @@ def shell_cmd(args):
|
|||||||
|
|
||||||
if result.returncode != 0:
|
if result.returncode != 0:
|
||||||
exit_error("%s failed: %d\n %s\n %s\n" %
|
exit_error("%s failed: %d\n %s\n %s\n" %
|
||||||
(arg_str, result.returncode, result.stdout.read(), result.stderr.read()))
|
(arg_str, result.returncode, result.stdout.read().decode('utf-8'), result.stderr.read().decode('utf-8')))
|
||||||
else:
|
elif not echo:
|
||||||
return result.stdout.read().decode('utf-8')
|
return result.stdout.read().decode('utf-8')
|
||||||
|
|
||||||
def get_latest_eeprom():
|
def get_latest_eeprom():
|
||||||
@@ -170,8 +175,10 @@ def apply_update(config, eeprom=None, config_src=None):
|
|||||||
# with EEPROMs with configs delivered outside of APT.
|
# with EEPROMs with configs delivered outside of APT.
|
||||||
# The checksums are really just a safety check for automatic updates.
|
# The checksums are really just a safety check for automatic updates.
|
||||||
args = ['rpi-eeprom-update', '-d', '-i', '-f', tmp_update]
|
args = ['rpi-eeprom-update', '-d', '-i', '-f', tmp_update]
|
||||||
resp = shell_cmd(args)
|
|
||||||
sys.stdout.write(resp)
|
# 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=20, echo=True)
|
||||||
|
|
||||||
def edit_config(eeprom=None):
|
def edit_config(eeprom=None):
|
||||||
"""
|
"""
|
||||||
@@ -377,6 +384,15 @@ class BootloaderImage(object):
|
|||||||
% (src_filename, len(src_bytes), MAX_FILE_SIZE))
|
% (src_filename, len(src_bytes), MAX_FILE_SIZE))
|
||||||
self.update(src_bytes, dst_filename)
|
self.update(src_bytes, dst_filename)
|
||||||
|
|
||||||
|
def set_timestamp(self, timestamp):
|
||||||
|
"""
|
||||||
|
Sets the self-update timestamp in an EEPROM image file. This is useful when
|
||||||
|
using flashrom to write to SPI flash instead of using the bootloader self-update mode.
|
||||||
|
"""
|
||||||
|
ts = int(timestamp)
|
||||||
|
struct.pack_into('<L', self._bytes, len(self._bytes) - 4, ts)
|
||||||
|
struct.pack_into('<L', self._bytes, len(self._bytes) - 8, ~ts & 0xffffffff)
|
||||||
|
|
||||||
def write(self):
|
def write(self):
|
||||||
"""
|
"""
|
||||||
Writes the updated EEPROM image to stdout or the specified output file.
|
Writes the updated EEPROM image to stdout or the specified output file.
|
||||||
@@ -498,6 +514,7 @@ See 'rpi-eeprom-update -h' for more information about the available EEPROM image
|
|||||||
parser.add_argument('-d', '--digest', help='Signed boot only. The name of the .sig file generated by rpi-eeprom-dgst for config.txt ', required=False)
|
parser.add_argument('-d', '--digest', help='Signed boot only. The name of the .sig file generated by rpi-eeprom-dgst for config.txt ', required=False)
|
||||||
parser.add_argument('-p', '--pubkey', help='Signed boot only. The name of the RSA public key file to store in the EEPROM', required=False)
|
parser.add_argument('-p', '--pubkey', help='Signed boot only. The name of the RSA public key file to store in the EEPROM', required=False)
|
||||||
parser.add_argument('-x', '--extract', action='store_true', default=False, help='Extract the modifiable files (boot.conf, pubkey, signature)', required=False)
|
parser.add_argument('-x', '--extract', action='store_true', default=False, help='Extract the modifiable files (boot.conf, pubkey, signature)', required=False)
|
||||||
|
parser.add_argument('-t', '--timestamp', help='Set the timestamp in the EEPROM image file', required=False)
|
||||||
parser.add_argument('eeprom', nargs='?', help='Name of EEPROM file to use as input')
|
parser.add_argument('eeprom', nargs='?', help='Name of EEPROM file to use as input')
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
|
|
||||||
@@ -518,6 +535,8 @@ See 'rpi-eeprom-update -h' for more information about the available EEPROM image
|
|||||||
apply_update(args.apply, args.eeprom, args.apply)
|
apply_update(args.apply, args.eeprom, args.apply)
|
||||||
elif args.eeprom is not None:
|
elif args.eeprom is not None:
|
||||||
image = BootloaderImage(args.eeprom, args.out)
|
image = BootloaderImage(args.eeprom, args.out)
|
||||||
|
if args.timestamp is not None:
|
||||||
|
image.set_timestamp(args.timestamp)
|
||||||
if args.config is not None:
|
if args.config is not None:
|
||||||
if not os.path.exists(args.config):
|
if not os.path.exists(args.config):
|
||||||
exit_error("config file '%s' not found" % args.config)
|
exit_error("config file '%s' not found" % args.config)
|
||||||
@@ -527,6 +546,8 @@ See 'rpi-eeprom-update -h' for more information about the available EEPROM image
|
|||||||
if args.pubkey is not None:
|
if args.pubkey is not None:
|
||||||
image.update_key(args.pubkey, PUBKEY_BIN)
|
image.update_key(args.pubkey, PUBKEY_BIN)
|
||||||
image.write()
|
image.write()
|
||||||
|
elif args.config is None and args.timestamp is not None:
|
||||||
|
image.write()
|
||||||
else:
|
else:
|
||||||
image.read()
|
image.read()
|
||||||
elif args.config is None and args.eeprom is None:
|
elif args.config is None and args.eeprom is None:
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ elif [ -d /lib/firmware/raspberrypi/bootloader ] || [ -d /lib/firmware/raspberry
|
|||||||
else
|
else
|
||||||
# Work from local git checkout
|
# Work from local git checkout
|
||||||
LOCAL_MODE=1
|
LOCAL_MODE=1
|
||||||
|
IGNORE_DPKG_CHECKSUMS=1
|
||||||
FIRMWARE_ROOT="${script_dir}/firmware"
|
FIRMWARE_ROOT="${script_dir}/firmware"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -89,6 +90,9 @@ cleanup() {
|
|||||||
if [ -f "${NEW_EEPROM_CONFIG}" ]; then
|
if [ -f "${NEW_EEPROM_CONFIG}" ]; then
|
||||||
rm -f "${NEW_EEPROM_CONFIG}"
|
rm -f "${NEW_EEPROM_CONFIG}"
|
||||||
fi
|
fi
|
||||||
|
if [ -f "${FLASHROM_LOG}" ]; then
|
||||||
|
rm -f "${FLASHROM_LOG}"
|
||||||
|
fi
|
||||||
if [ -d "${TMP_BOOTFS_MNT}" ]; then
|
if [ -d "${TMP_BOOTFS_MNT}" ]; then
|
||||||
umount "${TMP_BOOTFS_MNT}"
|
umount "${TMP_BOOTFS_MNT}"
|
||||||
rmdir "${TMP_BOOTFS_MNT}"
|
rmdir "${TMP_BOOTFS_MNT}"
|
||||||
@@ -97,6 +101,7 @@ cleanup() {
|
|||||||
TMP_EEPROM_IMAGE=
|
TMP_EEPROM_IMAGE=
|
||||||
TMP_EEPROM_CONFIG=
|
TMP_EEPROM_CONFIG=
|
||||||
NEW_EEPROM_CONFIG=
|
NEW_EEPROM_CONFIG=
|
||||||
|
FLASHROM_LOG=
|
||||||
}
|
}
|
||||||
trap cleanup EXIT
|
trap cleanup EXIT
|
||||||
|
|
||||||
@@ -169,7 +174,14 @@ prepareImage()
|
|||||||
if [ "${OVERWRITE_CONFIG}" = 0 ]; then
|
if [ "${OVERWRITE_CONFIG}" = 0 ]; then
|
||||||
"${script_dir}/rpi-eeprom-config" \
|
"${script_dir}/rpi-eeprom-config" \
|
||||||
--out "${TMP_EEPROM_IMAGE}" \
|
--out "${TMP_EEPROM_IMAGE}" \
|
||||||
--config "${NEW_EEPROM_CONFIG}" "${BOOTLOADER_UPDATE_IMAGE}"
|
--config "${NEW_EEPROM_CONFIG}" \
|
||||||
|
--timestamp "$(date -u +%s)" \
|
||||||
|
"${BOOTLOADER_UPDATE_IMAGE}"
|
||||||
|
else
|
||||||
|
"${script_dir}/rpi-eeprom-config" \
|
||||||
|
--out "${TMP_EEPROM_IMAGE}" \
|
||||||
|
--timestamp "$(date -u +%s)" \
|
||||||
|
"${BOOTLOADER_UPDATE_IMAGE}"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -200,7 +212,7 @@ applyRecoveryUpdate()
|
|||||||
# and the current timestamp.
|
# and the current timestamp.
|
||||||
rpi-eeprom-digest -i "${TMP_EEPROM_IMAGE}" -o "${BOOTFS}/pieeprom.sig"
|
rpi-eeprom-digest -i "${TMP_EEPROM_IMAGE}" -o "${BOOTFS}/pieeprom.sig"
|
||||||
|
|
||||||
cp -f "${TMP_EEPROM_IMAGE}" "${BOOTFS}/pieeprom.upd" \
|
cp -fv "${TMP_EEPROM_IMAGE}" "${BOOTFS}/pieeprom.upd" \
|
||||||
|| die "Failed to copy ${TMP_EEPROM_IMAGE} to ${BOOTFS}"
|
|| die "Failed to copy ${TMP_EEPROM_IMAGE} to ${BOOTFS}"
|
||||||
|
|
||||||
# For NFS mounts ensure that the files are readable to the TFTP user
|
# For NFS mounts ensure that the files are readable to the TFTP user
|
||||||
@@ -225,7 +237,7 @@ applyRecoveryUpdate()
|
|||||||
RPI_EEPROM_SELF_UPDATE=0
|
RPI_EEPROM_SELF_UPDATE=0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Setting bootlaoder_update=0 was really intended for use with network-boot with shared
|
# Setting bootloader_update=0 was really intended for use with network-boot with shared
|
||||||
# config.txt files. However, if it looks as though self-update has been disabled then
|
# config.txt files. However, if it looks as though self-update has been disabled then
|
||||||
# assume recovery.bin is required.
|
# assume recovery.bin is required.
|
||||||
config_txt="${BOOTFS}/config.txt"
|
config_txt="${BOOTFS}/config.txt"
|
||||||
@@ -237,8 +249,33 @@ applyRecoveryUpdate()
|
|||||||
|
|
||||||
[ "${BOOTLOADER_CURRENT_VERSION}" -ge "${RPI_EEPROM_SELF_UPDATE_MIN_VER}" ] || RPI_EEPROM_SELF_UPDATE=0
|
[ "${BOOTLOADER_CURRENT_VERSION}" -ge "${RPI_EEPROM_SELF_UPDATE_MIN_VER}" ] || RPI_EEPROM_SELF_UPDATE=0
|
||||||
|
|
||||||
if [ "${RPI_EEPROM_SELF_UPDATE}" != "1" ]; then
|
# For immediate updates via flash the recovery.bin update is created and then discarded if the
|
||||||
echo "Using recovery.bin for EEPROM update"
|
# flashrom update was successful. For SD boot (most common) this provides a rollback in the event
|
||||||
|
# of power loss.
|
||||||
|
if [ "${RPI_EEPROM_USE_FLASHROM}" = 1 ]; then
|
||||||
|
echo
|
||||||
|
echo "UPDATING bootloader."
|
||||||
|
echo
|
||||||
|
echo "*** WARNING: Do not disconnect the power until the update is complete ***"
|
||||||
|
echo "If a problem occurs then the Raspberry Pi Imager may be used to create"
|
||||||
|
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
|
||||||
|
# Success - remove update files from the boot partition
|
||||||
|
removePreviousUpdates
|
||||||
|
echo "UPDATE SUCCESSFUL"
|
||||||
|
else
|
||||||
|
# Leave the recovery files in case the EEPROM has been partially updated
|
||||||
|
cat "${FLASHROM_LOG}"
|
||||||
|
die "UPDATE FAILED"
|
||||||
|
fi
|
||||||
|
return
|
||||||
|
elif [ "${RPI_EEPROM_SELF_UPDATE}" = "1" ]; then
|
||||||
|
echo "Using self-update"
|
||||||
|
else
|
||||||
|
echo "Copying recovery.bin to ${BOOTFS} for EEPROM update"
|
||||||
cp -f "${RECOVERY_BIN}" "${BOOTFS}/recovery.bin" || die "Failed to copy ${RECOVERY_BIN} to ${BOOTFS}"
|
cp -f "${RECOVERY_BIN}" "${BOOTFS}/recovery.bin" || die "Failed to copy ${RECOVERY_BIN} to ${BOOTFS}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -269,6 +306,25 @@ applyUpdate() {
|
|||||||
) || die "Unable to validate EEPROM image package checksums"
|
) || die "Unable to validate EEPROM image package checksums"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Disable flashrom if the SPI device is not found
|
||||||
|
if [ "${RPI_EEPROM_USE_FLASHROM}" = 1 ]; then
|
||||||
|
flashrom_probe_ok=0
|
||||||
|
if ! [ -e "${SPIDEV}" ]; then
|
||||||
|
echo "WARNING: SPI device ${SPIDEV} not found. Setting RPI_EEPROM_USE_FLASHROM to 0"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! flashrom -p linux_spi:dev=${SPIDEV},spispeed=16000 > /dev/null 2>&1; then
|
||||||
|
echo "WARNING: Flashrom probe of ${SPIDEV} failed"
|
||||||
|
else
|
||||||
|
flashrom_probe_ok=1
|
||||||
|
fi
|
||||||
|
if [ "${flashrom_probe_ok}" != 1 ]; then
|
||||||
|
echo "Setting RPI_EEPROM_USE_FLASHROM to 0"
|
||||||
|
echo
|
||||||
|
export RPI_EEPROM_USE_FLASHROM=0
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
applyRecoveryUpdate
|
applyRecoveryUpdate
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -309,7 +365,7 @@ getBootloaderUpdateVersion() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
chipNotSupported() {
|
chipNotSupported() {
|
||||||
echo "This tool only works with Raspberry Pi4 and Rapberry Pi5"
|
echo "Device does not a have a Raspberry Pi bootloader EEPROM (e.g. Pi 4 or Pi 5). Skipping bootloader update."
|
||||||
exit ${EXIT_SUCCESS}
|
exit ${EXIT_SUCCESS}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -334,17 +390,25 @@ checkDependencies() {
|
|||||||
BCM_CHIP=2711
|
BCM_CHIP=2711
|
||||||
EEPROM_SIZE=524288
|
EEPROM_SIZE=524288
|
||||||
BOOTLOADER_AUTO_UPDATE_MIN_VERSION="${BOOTLOADER_AUTO_UPDATE_MIN_VERSION:-1599135103}"
|
BOOTLOADER_AUTO_UPDATE_MIN_VERSION="${BOOTLOADER_AUTO_UPDATE_MIN_VERSION:-1599135103}"
|
||||||
|
|
||||||
|
SPIDEV=/dev/spidev0.0
|
||||||
elif [ $(((0x$BOARD_INFO >> 12) & 15)) = 4 ]; then
|
elif [ $(((0x$BOARD_INFO >> 12) & 15)) = 4 ]; then
|
||||||
# BCM2712 always supports self-update so recovery.bin is only used for RPi imager
|
|
||||||
# bootloader updated SD cards or with RPIBOOT.
|
|
||||||
BCM_CHIP=2712
|
BCM_CHIP=2712
|
||||||
EEPROM_SIZE=2097152
|
EEPROM_SIZE=2097152
|
||||||
RPI_EEPROM_SELF_UPDATE=1
|
BOOTLOADER_AUTO_UPDATE_MIN_VERSION="${BOOTLOADER_AUTO_UPDATE_MIN_VERSION:-1704470260}"
|
||||||
BOOTLOADER_AUTO_UPDATE_MIN_VERSION="${BOOTLOADER_AUTO_UPDATE_MIN_VERSION:-1695896697}"
|
SPIDEV=/dev/spidev10.0
|
||||||
else
|
else
|
||||||
chipNotSupported
|
chipNotSupported
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Default to off - in the future Raspberry Pi 5 may default to using flashrom if
|
||||||
|
# flashrom is available.
|
||||||
|
[ -z "${RPI_EEPROM_USE_FLASHROM}" ] && RPI_EEPROM_USE_FLASHROM=0
|
||||||
|
if [ "${RPI_EEPROM_USE_FLASHROM}" -eq 1 ] && ! command -v flashrom > /dev/null; then
|
||||||
|
echo "WARNING: flashrom not found. Setting RPI_EEPROM_USE_FLASHROM to 0"
|
||||||
|
RPI_EEPROM_USE_FLASHROM=0
|
||||||
|
fi
|
||||||
|
|
||||||
FIRMWARE_IMAGE_DIR="${FIRMWARE_ROOT}-${BCM_CHIP}/${FIRMWARE_RELEASE_STATUS}"
|
FIRMWARE_IMAGE_DIR="${FIRMWARE_ROOT}-${BCM_CHIP}/${FIRMWARE_RELEASE_STATUS}"
|
||||||
if ! [ -d "${FIRMWARE_IMAGE_DIR}" ]; then
|
if ! [ -d "${FIRMWARE_IMAGE_DIR}" ]; then
|
||||||
# Use unadorned name for backwards compatiblity
|
# Use unadorned name for backwards compatiblity
|
||||||
@@ -361,6 +425,18 @@ checkDependencies() {
|
|||||||
echo "The recommended method for flashing the EEPROM is rpiboot."
|
echo "The recommended method for flashing the EEPROM is rpiboot."
|
||||||
echo "See: https://github.com/raspberrypi/usbboot/blob/master/Readme.md"
|
echo "See: https://github.com/raspberrypi/usbboot/blob/master/Readme.md"
|
||||||
echo "Run with -h for more information."
|
echo "Run with -h for more information."
|
||||||
|
echo
|
||||||
|
echo "To enable flashrom programming of the EEPROM"
|
||||||
|
echo "Add these the following entries to /etc/default/rpi-eeprom-update"
|
||||||
|
echo "RPI_EEPROM_USE_FLASHROM=1"
|
||||||
|
echo "CM4_ENABLE_RPI_EEPROM_UPDATE=1"
|
||||||
|
echo
|
||||||
|
echo "and these entries to config.txt and reboot"
|
||||||
|
echo "[cm4]"
|
||||||
|
echo "dtparam=spi=on"
|
||||||
|
echo "dtoverlay=audremap"
|
||||||
|
echo "dtoverlay=spi-gpio40-45"
|
||||||
|
echo
|
||||||
exit ${EXIT_SUCCESS}
|
exit ${EXIT_SUCCESS}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -378,11 +454,15 @@ checkDependencies() {
|
|||||||
die "lspci not found. Try installing the pciutils package."
|
die "lspci not found. Try installing the pciutils package."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if ! command -v strings > /dev/null; then
|
||||||
|
die "strings not found. Try installing the binutils package."
|
||||||
|
fi
|
||||||
|
|
||||||
# vcgencmd bootloader_version is deprecated. Use device-tree if available to
|
# vcgencmd bootloader_version is deprecated. Use device-tree if available to
|
||||||
# reduce the number of dependencies on VCHI.
|
# reduce the number of dependencies on VCHI.
|
||||||
if ! [ -f "${DT_BOOTLOADER_TS}" ]; then
|
if ! [ -f "${DT_BOOTLOADER_TS}" ]; then
|
||||||
if ! command -v vcgencmd > /dev/null; then
|
if ! command -v vcgencmd > /dev/null; then
|
||||||
die "vcgencmd not found. Try installing the libraspberrypi-bin package."
|
die "vcgencmd not found. Try installing the raspi-utils package."
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -401,7 +481,7 @@ checkDependencies() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if ! command -v sha256sum > /dev/null; then
|
if ! command -v sha256sum > /dev/null; then
|
||||||
die "sha256sum not found. Try installing the coreutilities package."
|
die "sha256sum not found. Try installing the coreutils package."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "${BCM_CHIP}" = 2711 ] && [ ! -f "${RECOVERY_BIN}" ]; then
|
if [ "${BCM_CHIP}" = 2711 ] && [ ! -f "${RECOVERY_BIN}" ]; then
|
||||||
@@ -454,7 +534,6 @@ Options:
|
|||||||
Ignores the FREEZE_VERSION flag in bootloader and is intended for manual
|
Ignores the FREEZE_VERSION flag in bootloader and is intended for manual
|
||||||
firmware updates.
|
firmware updates.
|
||||||
-h Display help text and exit
|
-h Display help text and exit
|
||||||
-i Ignore package checksums - for rpi-eeprom developers.
|
|
||||||
-j Write status information using JSON notation (requires -m option)
|
-j Write status information using JSON notation (requires -m option)
|
||||||
-l Returns the full path to the latest available EEPROM image file according
|
-l Returns the full path to the latest available EEPROM image file according
|
||||||
to the FIRMWARE_RELEASE_STATUS and FIRMWARE_IMAGE_DIR settings.
|
to the FIRMWARE_RELEASE_STATUS and FIRMWARE_IMAGE_DIR settings.
|
||||||
@@ -492,10 +571,10 @@ to be stable.
|
|||||||
|
|
||||||
default:
|
default:
|
||||||
The default bootloader image which supports all current models and hardware
|
The default bootloader image which supports all current models and hardware
|
||||||
revisions.
|
revisions. If there is an important bug fix or hardware change that could
|
||||||
If a critical bug fix is required then the minimum default version number
|
affect most users then the BOOTLOADER_AUTO_UPDATE_MIN_VERSION is updated
|
||||||
(BOOTLOADER_AUTO_UPDATE_MIN_VERSION) in the rpi-eeprom package is updated
|
causing the update to be applied the next time the rpi-eeprom APT package is
|
||||||
causing the bootloader to be automatically updated.
|
updated.
|
||||||
|
|
||||||
latest:
|
latest:
|
||||||
Contains new features, bug fixes and performance improvements.
|
Contains new features, bug fixes and performance improvements.
|
||||||
@@ -545,6 +624,22 @@ N.B. If there is a power failure during SELF_UPDATE the EEPROM write may fail an
|
|||||||
usbboot must be used to flash the bootloader EEPROM. SELF_UPDATE is not recommended
|
usbboot must be used to flash the bootloader EEPROM. SELF_UPDATE is not recommended
|
||||||
for updating the bootloader on remote systems.
|
for updating the bootloader on remote systems.
|
||||||
|
|
||||||
|
FLASHROM:
|
||||||
|
|
||||||
|
If the RPI_EEPROM_USE_FLASHROM variable is set to 1 then flashrom is used to perform
|
||||||
|
an immediate update to the SPI flash rather than installing the recovery.bin plus
|
||||||
|
pieeprom.upd files. The power must not be disconnected during this update otherwise the
|
||||||
|
EEPROM will need to be re-flashed using the Rasberry Pi Imager bootloader restore feature.
|
||||||
|
|
||||||
|
On Raspberry Pi 4, CM4, CM4-S and Pi400 flashrom updates are not enabled by default
|
||||||
|
because the SPI GPIOs are shared with analog audio. To enable this add the following
|
||||||
|
entries to config.txt. This moves analog audio to GPIO pins 12,13 and may not be
|
||||||
|
compatible with some HATS / CM4 IO boards.
|
||||||
|
|
||||||
|
dtparam=spi=on
|
||||||
|
dtoverlay=audremap
|
||||||
|
dtoverlay=spi-gpio40-45
|
||||||
|
|
||||||
EOF
|
EOF
|
||||||
exit ${EXIT_SUCCESS}
|
exit ${EXIT_SUCCESS}
|
||||||
}
|
}
|
||||||
@@ -598,7 +693,9 @@ findBootFS()
|
|||||||
elif [ -z "$BOOTFS" ]; then
|
elif [ -z "$BOOTFS" ]; then
|
||||||
if ! BOOTFS=$(/usr/lib/raspberrypi-sys-mods/get_fw_loc 2> /dev/null); then
|
if ! BOOTFS=$(/usr/lib/raspberrypi-sys-mods/get_fw_loc 2> /dev/null); then
|
||||||
for BOOTFS in /boot/firmware /boot; do
|
for BOOTFS in /boot/firmware /boot; do
|
||||||
if findmnt --fstab "$BOOTFS" > /dev/null; then
|
if [ -f "${BOOTFS}/config.txt" ]; then
|
||||||
|
break
|
||||||
|
elif findmnt --fstab "$BOOTFS" > /dev/null; then
|
||||||
break
|
break
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
@@ -717,7 +814,7 @@ checkAndApply()
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "${ACTION_UPDATE_BOOTLOADER}" = 1 ] || [ "${ACTION_UPDATE_VL805}" = 1 ]; then
|
if [ "${ACTION_UPDATE_BOOTLOADER}" = 1 ] || [ "${ACTION_UPDATE_VL805}" = 1 ]; then
|
||||||
echo "*** INSTALLING EEPROM UPDATES ***"
|
echo "*** PREPARING EEPROM UPDATES ***"
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
printVersions
|
printVersions
|
||||||
@@ -730,7 +827,7 @@ checkAndApply()
|
|||||||
fileUpdate()
|
fileUpdate()
|
||||||
{
|
{
|
||||||
removePreviousUpdates
|
removePreviousUpdates
|
||||||
echo "*** INSTALLING ${BOOTLOADER_UPDATE_IMAGE} ${VL805_UPDATE_IMAGE} ***"
|
echo "*** CREATED UPDATE ${BOOTLOADER_UPDATE_IMAGE} ${VL805_UPDATE_IMAGE} ***"
|
||||||
echo
|
echo
|
||||||
|
|
||||||
if [ -n "${BOOTLOADER_UPDATE_IMAGE}" ]; then
|
if [ -n "${BOOTLOADER_UPDATE_IMAGE}" ]; then
|
||||||
@@ -822,7 +919,8 @@ AUTO_UPDATE_VL805=0
|
|||||||
SILENT_UPDATE=0
|
SILENT_UPDATE=0
|
||||||
MACHINE_OUTPUT=""
|
MACHINE_OUTPUT=""
|
||||||
JSON_OUTPUT="no"
|
JSON_OUTPUT="no"
|
||||||
IGNORE_DPKG_CHECKSUMS=${LOCAL_MODE}
|
# Ignore dpkg checksums by default so that rpi-update can install new binaries into /lib/firmware
|
||||||
|
IGNORE_DPKG_CHECKSUMS=${IGNORE_DPKG_CHECKSUMS:-1}
|
||||||
PACKAGE_INFO_DIR="/var/lib/dpkg/info/"
|
PACKAGE_INFO_DIR="/var/lib/dpkg/info/"
|
||||||
if [ ! -d "${PACKAGE_INFO_DIR}" ]; then
|
if [ ! -d "${PACKAGE_INFO_DIR}" ]; then
|
||||||
IGNORE_DPKG_CHECKSUMS=1
|
IGNORE_DPKG_CHECKSUMS=1
|
||||||
@@ -852,7 +950,9 @@ while getopts A:abdhilf:m:ju:rs option; do
|
|||||||
;;
|
;;
|
||||||
f) BOOTLOADER_UPDATE_IMAGE="${OPTARG}"
|
f) BOOTLOADER_UPDATE_IMAGE="${OPTARG}"
|
||||||
;;
|
;;
|
||||||
i) IGNORE_DPKG_CHECKSUMS=1
|
i)
|
||||||
|
# Script default is 1 but this could have been set to zero in the defaults file
|
||||||
|
IGNORE_DPKG_CHECKSUMS=1
|
||||||
;;
|
;;
|
||||||
j) JSON_OUTPUT="yes"
|
j) JSON_OUTPUT="yes"
|
||||||
;;
|
;;
|
||||||
|
|||||||
@@ -2,8 +2,10 @@
|
|||||||
FIRMWARE_ROOT=/lib/firmware/raspberrypi/bootloader
|
FIRMWARE_ROOT=/lib/firmware/raspberrypi/bootloader
|
||||||
FIRMWARE_RELEASE_STATUS="default"
|
FIRMWARE_RELEASE_STATUS="default"
|
||||||
FIRMWARE_BACKUP_DIR="/var/lib/raspberrypi/bootloader/backup"
|
FIRMWARE_BACKUP_DIR="/var/lib/raspberrypi/bootloader/backup"
|
||||||
USE_FLASHROM=0
|
|
||||||
EEPROM_CONFIG_HOOK=
|
EEPROM_CONFIG_HOOK=
|
||||||
|
|
||||||
# BOOTFS can be set here to override auto-detection in rpi-eeprom-update
|
# BOOTFS can be set here to override auto-detection in rpi-eeprom-update
|
||||||
#BOOTFS=/boot
|
#BOOTFS=/boot
|
||||||
|
|
||||||
|
# Use flashrom if available to update the bootloader without rebooting - Raspberry Pi 5
|
||||||
|
#RPI_EEPROM_USE_FLASHROM=1
|
||||||
|
|||||||
Reference in New Issue
Block a user