How to Update the PL-R5 Bootloader

The commercially available Raspberry Pi 5 (hereafter referred to as Pi 5) updates its bootloader by writing a utility image (Misc Utility images) from Raspberry Pi Imager to a microSD card and then powering on the Pi 5.
In contrast, the PL-R5 (with a Compute Module 5 inside) does not use a microSD card. Instead, the bootloader is updated by running a command to write a new .bin image file.
Both systems store the bootloader in SPI flash (commonly referred to as EEPROM) on the board.

This article explains how to update the bootloader on the PL-R5.
Note: The PL-R4 could not update the bootloader on the device itself, but the PL-R5 can now perform the update using commands.

Test Environment

The PL-R5 is connected to a monitor and has an Internet connection.

Working directly on the PL-R5:

  • PL-R5
  • microHDMI-to-HDMI cable (connected to the maintenance port on the PL-R5)
  • Internet connection

Working via SSH:

  • Windows PC (Pro version recommended)
  • PuTTY (SSH client)

Note: When running the commands remotely via SSH, you will need an SSH client such as PuTTY if you are using Windows.

PL-R5 Maintenance Port

 

Checking the Version

First, check the current bootloader version.
It is also a good idea to review the update history before selecting the bootloader version you want to install.

Bootloader release history:
https://github.com/raspberrypi/rpi-eeprom/blob/master/firmware-2712/release-notes.md

Note: The zip files available under GitHub Releases are not .bin files for regular updates; they are boot images used for EEPROM recovery.
 For a normal bootloader update on the PL-R5 (or CM5), use the pieeprom-xxxx-xx-xx.bin file provided within the OS.

The following commands can be run either from the terminal on the PL-R5 itself or via an SSH connection using PuTTY.

vcgencmd bootloader_version

You can confirm the version from output similar to the following.

2025/05/08 15:13:17
version 69471177ba7e4cb7597cb2496f2a0b23f19c1113 (release)
timestamp 1746713597
update-time 0
capabilities 0x0000007f

 

Setting Up the EEPROM Update Tool

Next, set up the EEPROM update tool using the following commands.

sudo apt update
sudo apt install -y rpi-eeprom

If the package is installed, or a message such as rpi-eeprom is already the newest version (28.13-1). is displayed, the setup is complete.

 

Bootloader Image Files (.bin)

The image files are stored by date in the following location (for example, pieeprom-2025-12-08.bin).

ls /lib/firmware/raspberrypi/bootloader-2712/stable/

In our environment, the following dated files were available.

pieeprom-2025-05-08.bin  pieeprom-2025-12-08.bin  pieeprom-2026-01-21.bin  recovery.bin
pieeprom-2025-11-05.bin  pieeprom-2026-01-16.bin  pieeprom-2026-02-06.bin

Bootloader image files (.bin) are added when the OS is updated.

The bootloader-2712 directory corresponds to the CPU chip used by the device. (PL-R5 and Pi 5/CM5: Broadcom SoC BCM2712)
For the PL-R5, select an image from the bootloader-2712 directory corresponding to its BCM2712 SoC. The stable directory contains stable releases. Unless you have a specific reason to choose another release, you will generally select a file from this directory.

Different Raspberry Pi models use different chipsets, so their bootloader images are not interchangeable. Be careful to select the correct image. (Example: Pi 4/CM4: BCM2711)

Differences Between the Bootloader, Firmware, EEPROM, and OS

There are several related terms that can be confusing, including firmware, the EEPROM where the bootloader is written, and file names such as pieeprom.
Each has a different meaning, as shown below. The bootloader discussed in this article is stored in the EEPROM on the board and is separate from the OS update process.

  • Firmware: Control software that runs inside a device
  • Bootloader: A type of firmware responsible for the OS boot sequence
  • OS: The basic software environment used after the system starts

The bootloader is a type of firmware, so depending on the context, updating it may also be described as a “firmware update” or “EEPROM update.”

Writing a Specific Bootloader Version

bootloader_version before and after the update

The -d option allows you to update to a specific bootloader image (.bin). Use the -f option to specify the location of the file.
sudo rpi-eeprom-update -d -f pieeprom.bin

The following example specifies pieeprom-2026-02-06.bin, which was the version used when this article was written.

sudo rpi-eeprom-update -d -f /lib/firmware/raspberrypi/bootloader-2712/stable/pieeprom-2026-02-06.bin

If the update is successful, UPDATE SUCCESSFUL will appear on the final line, as shown below.

Verifying update
VERIFY: SUCCESS
UPDATE SUCCESSFUL

Reboot the system to activate the new bootloader.

sudo reboot

The bootloader update is now complete.

Role of the Bootloader

As its name suggests, the bootloader can be configured to control the boot order.
The default setting is BOOT_ORDER=0xf461, as shown below.

[all]
BOOT_UART=1
BOOT_ORDER=0xf461
NET_INSTALL_AT_POWER_ON=1

0xf461 is read from right to left.

In this case, the boot order is:
→ eMMC (0x1)
→ NVMe SSD connected via M.2 (0x6)
→ USB flash drive / USB-connected SSD (0x4)
→ Return to the beginning and retry (0xf)

Bootloader Values for PL-R5/CM5

ValueBoot DeviceNotes for CM5
0x1eMMCAvailable on CM5 models equipped with eMMC. Boots from the onboard eMMC storage.
0x2NetworkNetwork boot. Intended for PXE/TFTP-based environments.
0x3RPIBOOTConnects to a host PC via USB for writing to or recovering the eMMC.
0x4USB-MSDBoots from external storage such as a USB flash drive or USB SSD.
0x5BCM-USB-MSDNot normally used for current general-purpose applications.
0x6NVMeBoots from an NVMe SSD connected to the M.2 slot.
0x7HTTPHTTP boot over Ethernet. Intended for enterprise and test environments.
0xESTOPStops the boot process at this point.
0xFRESTARTReturns to the beginning of the boot order and retries.

Note: On Pi 5, 0x1 represents the microSD card.

Changing the Boot Order

You can edit the boot order using the following command.
Adding the -E option preserves your usual editor environment settings (such as nano), making the configuration screen easier to use.
On Raspberry Pi OS, the editor may open in vi if the -E option is not specified, which can be confusing if you are not familiar with vi.
Since nano is commonly used from the terminal on Raspberry Pi OS, we recommend using the -E option.

sudo -E rpi-eeprom-config --edit

Once the editor opens, change the value as required.

BOOT_ORDER=0xf461

In industrial applications, booting from eMMC is common. NVMe SSD may be given priority when additional capacity or speed is required. If eMMC is configured as a fallback boot device, use BOOT_ORDER=0xf16.

Notes for Different Models

Different Raspberry Pi models may use different chips and therefore require different bootloader image files.

The PL-R5 is based on the CM5, so it uses the same chip as the Pi 5/CM5 and the corresponding bootloader image files are also the same.
However, the PL-R5 bootloader is updated using commands, which differs from the procedure used for the Pi 5.
In addition, bootloader values may differ from those of the Pi 5 depending on factors such as the presence of eMMC.

Terms such as “firmware,” “EEPROM,” and “bootloader” have technically different meanings, but they may sometimes be used in similar contexts.
This article explained how to update the bootloader on the PL-R5.

Much of the information available online is intended for the Pi 5, so if you are unsure about the procedure for the PL-R5, please contact us.


Contributed by: Raspida

Raspida operates raspida.com, a Raspberry Pi information website designed to be enjoyable and accessible even for non-engineers. Drawing on many years of experience with Raspberry Pi, the site publishes a wide range of useful information and topics for both experienced Raspberry Pi users and those who are just getting started. Raspida also contributes technical blog articles about industrial Raspberry Pi systems to the PiLink website.