Skip to content

Commit f13b578

Browse files
committed
imager-release: Update for Pi5
1 parent a9d76cf commit f13b578

File tree

5 files changed

+83
-41
lines changed

5 files changed

+83
-41
lines changed

imager/README.txt renamed to imager/README-2711.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
Raspberry Pi 4 EEPROM bootloader rescue image
1+
Raspberry Pi 4 EEPROM bootloader recovery image
22
*********************************************
33

44
The Raspberry Pi 4 contains a small EEPROM used to store the bootloader.

imager/README-2712.txt

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
Raspberry Pi 5 EEPROM bootloader recovery image
2+
***********************************************
3+
4+
The Raspberry Pi 5 contains a small EEPROM used to store the bootloader.
5+
6+
This rescue image reverts the bootloader EEPROM to factory default settings.
7+
8+
The easiest method for creating EEPROM rescue images, and formatting SD
9+
cards, is to use Raspberry Pi Imager from https://raspberrypi.com/software.
10+
Raspberry Pi Imager provides a GUI for downloading the latest version of
11+
this rescue image and flashing it to a spare SD card.
12+
13+
Alternatively, copy the contents of this zip file to a blank
14+
FAT formatted SD card. The FAT partition must be < 32 GB.
15+
16+
To update the EEPROM:
17+
18+
1. Power off the Raspberry Pi
19+
2. Insert the bootloader update SD card
20+
3. Power on the Raspberry Pi
21+
4. Wait at least 10 seconds
22+
23+
If successful, the green LED on the Raspberry Pi will blink rapidly forever.
24+
An unsuccessful update of the EEPROM is indicated by a different blinking
25+
pattern corresponding to the specific error.
26+
27+
If an HDMI display is attached, then the screen will display green for
28+
success or red if a failure occurs.
29+
30+
Once the EEPROM is updated, the SD card can be removed. In order to make
31+
the entire capacity of the SD card available again, you must then reformat
32+
the SD card using Raspberry Pi Imager by selecting the 'format card as
33+
FAT32' option.

imager/make-imager-release

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,4 @@ script_dir=$(cd "$(dirname "$0")" && pwd)
88
${script_dir}/make-release critical 2023-01-11 000138c0 "${script_dir}/2711-config" release-2711 rpi-boot-eeprom-recovery 2711
99

1010
# Pi5
11-
${script_dir}/make-release critical 2023-09-21 "" "${script_dir}/2712-config" release-2712 rpi-boot-eeprom-recovery 2712
11+
${script_dir}/make-release critical 2023-10-18 "" "${script_dir}/2712-config" release-2712 rpi-boot-eeprom-recovery 2712

imager/make-recovery-images

Lines changed: 45 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -19,48 +19,57 @@ trap cleanup EXIT
1919
[ -n "${SUDO_UID}" ] || die "SUDO_UID not defined"
2020
[ -n "${SUDO_GID}" ] || die "SUDO_GID not defined"
2121

22-
for src in release/*.zip; do
23-
src=$(basename "${src}")
24-
img=$(echo "${src}" | sed 's/\.zip/.img/')
25-
TMP_DIR=$(mktemp -d)
26-
(
27-
cp "release/${src}" "${TMP_DIR}"
28-
mkdir "${TMP_DIR}/files"
29-
cd "${TMP_DIR}/files"
30-
unzip "../${src}"
31-
cd "${TMP_DIR}"
32-
dd if=/dev/zero bs=1M count=258 of=temp.img
33-
/sbin/sfdisk temp.img <<EOF
22+
build_images()
23+
{
24+
chip="$1"
25+
for src in release-${chip}/*.zip; do
26+
src=$(basename "${src}")
27+
img=$(echo "${src}" | sed 's/\.zip/.img/')
28+
TMP_DIR=$(mktemp -d)
29+
(
30+
cp "release-${chip}/${src}" "${TMP_DIR}"
31+
mkdir "${TMP_DIR}/files"
32+
cd "${TMP_DIR}/files"
33+
unzip "../${src}"
34+
cd "${TMP_DIR}"
35+
dd if=/dev/zero bs=1M count=258 of=temp.img
36+
/sbin/sfdisk temp.img <<EOF
3437
label: dos
3538
label-id: 0x0a7b5ac5
3639
device: temp.img
3740
unit: sectors
3841
3942
./test.img1 : start= 2048, size= 524288, type=c
4043
EOF
41-
file temp.img
42-
kpartx -lv temp.img | head -n1 | awk '{print $1}'
43-
LOOP="/dev/mapper/$(kpartx -lv temp.img | head -n1 | awk '{print $1}')"
44-
kpartx -av temp.img
45-
/sbin/mkfs.fat -F 32 -s 1 "${LOOP}"
46-
mkdir fs
47-
mount "${LOOP}" fs
48-
cp -v files/* fs
49-
sync
50-
sleep 5
51-
umount fs
52-
# Delay before calling kpartx otherwise it's sometimes possible to get orphaned loopback devices
53-
sleep 5
54-
kpartx -dv temp.img
55-
)
56-
mkdir -p images
57-
chown "${SUDO_UID}:${SUDO_GID}" images
58-
mv "${TMP_DIR}/temp.img" "images/${img}"
59-
file "images/${img}"
60-
cd images
44+
file temp.img
45+
kpartx -lv temp.img | head -n1 | awk '{print $1}'
46+
LOOP="/dev/mapper/$(kpartx -lv temp.img | head -n1 | awk '{print $1}')"
47+
kpartx -av temp.img
48+
/sbin/mkfs.fat -F 32 -s 1 "${LOOP}"
49+
mkdir fs
50+
mount "${LOOP}" fs
51+
cp -v files/* fs
52+
sync
53+
sleep 5
54+
umount fs
55+
# Delay before calling kpartx otherwise it's sometimes possible to get orphaned loopback devices
56+
sleep 5
57+
kpartx -dv temp.img
58+
)
59+
image_dir="images-${chip}"
60+
mkdir -p "${image_dir}"
61+
chown "${SUDO_UID}:${SUDO_GID}" "${image_dir}"
62+
mv "${TMP_DIR}/temp.img" "${image_dir}/${img}"
63+
file "${image_dir}/${img}"
64+
cd "${image_dir}"
6165
zip "${src}" "${img}"
6266
cd ..
63-
rm "images/${img}"
64-
chown "${SUDO_UID}:${SUDO_GID}" "images/${src}"
65-
done
66-
echo "Wrote images for rpi-imager to $(pwd)/images/${src}"
67+
rm "${image_dir}/${img}"
68+
chown "${SUDO_UID}:${SUDO_GID}" "${image_dir}/${src}"
69+
done
70+
echo "Wrote images for rpi-imager to $(pwd)/${image_dir}/${src}"
71+
}
72+
73+
build_images 2711
74+
build_images 2712
75+

imager/make-release

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ gen_release() {
3030
(
3131
tmp_dir="$(mktemp -d --tmpdir tmp.rpi-eeprom.XXXXXXXXXX)"
3232
cd "${tmp_dir}"
33-
cp "${script_dir}/README.txt" .
33+
cp "${script_dir}/README-${bcm_chip}.txt" README.txt
3434
cp "${firmware_dir}/recovery.bin" .
3535
if [ ${bcm_chip} = 2711 ]; then
3636
cp "${firmware_dir}/vl805-${vl805_version}.bin" vl805.bin
@@ -79,9 +79,9 @@ firmware_dir=${script_dir}/../firmware-${bcm_chip}/${firmware_status}
7979
if [ "${bcm_chip}" = 2711 ]; then
8080
[ -f "${firmware_dir}/vl805-${vl805_version}.bin" ] || (echo "${firmware_status}/vl805-${vl805_version}.bin doesn't exist" && exit 1)
8181
[ -d "${config_dir}" ] || (echo "${config_dir} doesn't exist" && exit 1)
82-
tag="${pieeprom_version}-vl805-${vl805_version}"
82+
tag="${pieeprom_version}-${bcm_chip}-vl805-${vl805_version}"
8383
else
84-
tag="${pieeprom_version}"
84+
tag="${pieeprom_version}-${bcm_chip}"
8585
fi
8686
# use realpath to ensure paths are absolute
8787
config_dir=$(realpath "${config_dir}")

0 commit comments

Comments
 (0)