By default EEPROM updates are applied automatically by the system. In brief summary, that upgrade process works as follows:
apt downloads new firmware for the EEPROM when it is available
- The downloaded firmware is packaged as
*.bin files, and they are saved to one of three (3) directories under
- Once the new firmware is downloaded, it is written to the EEPROM during the next
You can verify the firmware version currently installed for both the bootloader and the vl805 USB firmware using the
rpi-eeprom-update script as follows:
$ sudo rpi-eeprom-update
BOOTLOADER: up to date
CURRENT: Wed 11 Jan 17:40:52 UTC 2023 (1673458852)
LATEST: Wed 11 Jan 17:40:52 UTC 2023 (1673458852)
RELEASE: stable (/lib/firmware/raspberrypi/bootloader/stable)
Use raspi-config to change the release.
VL805_FW: Dedicated VL805 EEPROM
VL805: up to date
Alternatively, the following command will give you the installed firmware status (as above) and the status of the
systemd service that automatically updates the firmware:
$ systemctl status rpi-eeprom-update
Many users will not need to read any further; the default configuration will maintain your EEPROM firmware at the version considered to be safest and most reliable. If you're interested in alternatives to this default, read on.
There are other relevant details:
1. Firmware Release Streams
There are 3 firmware release streams that reflect 3 different maturity levels of the firmware. They are segregated into 3 sub-directories under
/lib/firmware/raspberrypi/bootloader/ as follows:
Notice that soft links have been added to
/lib/firmware/raspberrypi/bootloader/ that provide redirection for the new names to the old names; this should help minimize the confusion created by re-naming the release streams.
2. Choosing your default release stream:
For many people, the default, automatic firmware update process works best. If you do nothing to change it, this process will cause
apt to download (but not apply) all firmware updates as they become available. The latest version from the critical/default channel will then be applied during the next
But you may decide that you want to keep your firmware a bit more current than the critical/default stream. If you decide that you wish to follow the stable/latest stream, you can change that as follows:
Open the file at
/etc/default/rpi-eeprom-update in your editor, and replace (or add) the following line:
Of course, you may elect to follow the beta release stream instead. Which ever stream you choose, this will put your firmware upgrades on autopilot, with the caveat that a
reboot is required to actually apply the firmware in the file to the EEPROM.
Another option you may choose is to perform no firmware upgrades at all! There are two methods available to freeze your firmware revision temporarily or permanently:
- mask the
systemd auto-update process:
sudo systemctl mask rpi-eeprom-update
3. Manual EEPROM firmware Upgrades & Retrogades:
For some, there may be occasions which demand a manual firmware upgrade. For example, a new feature is introduced, and you cannot wait for this feature to reach maturity and become part of the critical/default stream. Or, you may have applied a firmware upgrade, then concluded that it has created a problem and the firmware must be restored to a previous version.
The RPi organization's GitHub repo contains a set of release notes for the bootloader EEPROM updates. This can be very helpful wrt manual upgrade decisions.
In general, firmware upgrades AND firmware retrogrades are reliably performed using the
rpi-eeprom-update script. As always, users should refer to the system manuals for detailed usage guidance; i.e. read
man rpi-eeprom-update before undertaking any upgrades or retrogrades.
Pay particular attention to the OPTIONS in
man rpi-eeprom-update. Two in particular are
-a : automatically install the latest available update from the stream defined in
/etc/default/rpi-eeprom-update. For example, if
FIRMWARE_RELEASE_STATUS="default", this command will install the latest file at
sudo rpi-eeprom-update -a
And as of today (Jan 29, 2023), on my system, that command would write the EEPROM with contents of the file at:
/lib/firmware/raspberrypi/bootloader/critical/pieeprom-2022-12-07.bin. The file at
/lib/firmware/raspberrypi/bootloader/critical/vl805-000138a1.bin would also be applied, but only to the USB firmware area of the EEPROM. I've been unable to find any reliable documentation on this, but apparently the RPi organization has made hardware changes (to appear in Rev 1.4) that will obviate the need for separate updates for the USB.
-f filename : install the named file; for example:
$ sudo rpi-eeprom-update -f /lib/firmware/raspberrypi/bootloader/critical/pieeprom-2022-12-07.bin
This would update the EEPROM firmware, but exclude an upgrade to the USB firmware. It is equivalent to:
$ sudo rpi-eeprom-update -A vl805