I just came across Pi Dramble cluster (I'm also aware it runs Drupal) and usb boot (which gives better performance) and I'll need the latest eeprom configuration to do this.

By the usage of "LATEST", can I conclude the RPis I ordered this morning have the latest configuration?


1 Answer 1


This is a bit complicated, so please bear with me:

While "LATEST" (latest actually) now is a branch of the EEPROM firmware, it may not be in the sense that you mean. I'll explain that in some detail below, but in the meantime know that the only definitive method for specifying an EEPROM firmware release is by its date; for example: Apr 29 2021 17:11:25. I'll explain this further in the sequel.

Wrt your question:

"can i conclude the rpis i ordered this morning have the latest configuration?"

The definitive answer to this question: "No - you should not conclude this." Imagine a factory putting out over 100,000 units a month, all going into a "retail distribution" system where the "new" units are mixed with "old" units and sold by a variety of vendors; each vendor free to sell from their mixed vintage inventory with no rules or oversight from The RPi Organization to govern how this is to be done. Fortunately the EEPROM firmware can be updated and managed by the owner/user.

What is the "LATEST" firmware?

First, understand that the term "LATEST" is fraught with ambiguity because the EEPROM firmware is released and maintained under three (3) separate branches:

  • default - a.k.a. critical; roughly corresponds to what you may know as a "stable" release; i.e. one with the lowest risk of "bugs"
  • latest - a.k.a. stable; roughly corresponds to what you may know as a "beta" release; i.e. one not fully tested, but enough to reduce the risk of "bugs"
  • beta - contains relatively new and lightly-tested features.

And so, each branch has its own "LATEST" version (yes, including the latest branch!). The branches are on full display in /lib/firmware/raspberrypi/bootloader:

$ ls -l /lib/firmware/raspberrypi/bootloader 
total 40
drwxr-xr-x 2 root root  4096 Jul 11 23:27 beta
drwxr-xr-x 2 root root  4096 Jul 11 23:27 critical
lrwxrwxrwx 1 root root     8 Jan 14  2021 default -> critical
lrwxrwxrwx 1 root root     6 Jan 14  2021 latest -> stable
-rw-r--r-- 1 root root 27748 Jul  7 08:25 release-notes.md
drwxr-xr-x 2 root root  4096 Jul 11 23:27 stable

And if you care to look in the stable folder (for example), you may find numerous versions, each filename structured as pieeprom-YYYY-MM-DD.bin, where YYYY-MM-DD correspond to that version's release date. Furthermore, you can determine the firmware version currently in use on your system from the command line as follows:

$ vcgencmd bootloader_version

Which, for my system, yields the following output:

Apr 29 2021 17:11:25
version c2f8c388c4ee37ad709ace403467d163e8dd91ce (release)
timestamp 1619712685
update-time 1629146551
capabilities 0x0000001f


What is the version number here? Answers here, and here.

A detailed answer for obtaining the required bootloader firmware:

All of that said, and as a more practical answer to your question, once you receive the RPi you ordered, here's how you can get and maintain the "LATEST" firmware - or the firmware you need or want on your system:

  • If you know you want to "follow" a particular branch of the firmware, you may declare that in: /etc/default/rpi-eeprom-update by changing the FIRMWARE_RELEASE_STATUS variable from its default value FIRMWARE_RELEASE_STATUS="default" to reflect the branch you wish to follow; e.g. FIRMWARE_RELEASE_STATUS="latest".
    Done in this way, your EEPROM firmware will be updated with your usual update procedure (sudo apt update, followed by sudo apt upgrade), and it will be applied when you reboot.

  • If you want to install a particular version of the EEPROM firmware, this will work:

    $ sudo rpi-eeprom-update -d -f pieeprom.bin 

    Where the generic filename pieeprom.bin is replaced by a specific filename. For example, if I want to load and use a file named pieeprom-2021-07-06.bin from the beta branch, and my pwd is /home/pi:

    $ sudo rpi-eeprom-update -d -f  /lib/firmware/raspberrypi/bootloader/beta/pieeprom-2021-07-06.bin
  • If you want to opt out of future upgrades, there are two approaches available:

    1. The systemd service rpi-eeprom-update runs at startup and applies an update if a newer image is available in the branch you are following. It may be suspended as follows:

      $ sudo systemctl mask rpi-eeprom-update
    2. The FREEZE_VERSION configuration variable may be declared by editing the EEPROM configuration. This may be a better choice than suspending the rpi-eeprom-update service in systemd in some situations. This is done as follows:

      $ sudo -E rpi-eeprom-config --edit

      Once the configuration is opened in the editor, simply add the FREEZE_VERSION parameter on a new line.

A recap of the detailed answer:

To recap briefly:

  • You will need to learn what exactly is meant by latest eeprom configuration in the documentation for the software you plan on installing; i.e. is it the "LATEST" in default, latest or beta branch?
  • Determine what version of the bootloader your system is currently using via vcgencmd bootloader_version as shown above.
  • If the desired version is different than the current in-use version, you may update to the desired version via sudo rpi-eeprom-update -d -f pieeprom.bin as shown above.
  • Finally, make a decision whether to track a particular branch, and apply automatic upgrades, OR retain the same bootloader using the FREEZE_VERSION configuration variable, or the alternative systemctl mask opion as shown above.

There is, or at least used to be, "official documentation" covering much of this EEPROM configuration, but a recent overhaul of the documentation has either eliminated it, left it in an unknown (to me) location.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.