Raspberry Pi 4: New Firmware Reduces Power Consumption and Board Temperatures




Raspberry Pi 4 board

 
The new Raspberry Pi 4 has two EEPROMs (electrically erasable programmable read-only memory) that store the firmware (boot loader code as well as the code of the USB 3.0 host controller VL805). In previous Raspberry Pi boards, the firmware was stored on the SD card.

Few days ago, a new firmware has been released that updates the VL805 code to the version 000137ab. According to several sources, this new firmware reduces the power consumption and board temperatures by enabling the power-saving functionality in the VL805 USB 3.0 controller.

According to Eben Upton:

The bootloader (and associated firmware) actually reduce the power consumption of both the USB controller and core SoC, with the USB controller accounting for about half the power saving.

Even the most USB-heavy use cases see some benefit from ASPM (ASPM = Active-State Power Management).

This USB firmware was in beta test since several months and is now in stable state.

If you have a Raspberry Pi 4, you can update the firmware with a new utility: rpi-eeprom-update. To install rpi-eeprom-update, update and upgrade your Raspbian and then install the rpi-eeprom package:

$ sudo apt update 
$ sudo apt upgrade
$ sudo apt install rpi-eeprom 

Now, run the following command to check the status of the bootloader + VL805 code:

$ sudo rpi-eeprom-update

You should see something like this:

Raspberry Pi 4 - rpi-eeprom-update

 
The bootloader code is up to date but a reboot is required to update the VL805 code.

After the reboot:

Raspberry Pi 4 - rpi-eeprom-update

 
Before the firmware update, the temperature of the processor was between around 58°C at idle state with a small heatsink (see this article). After the update, the same temperature is now around 52°C. Nice improvement!

GL-Z utility:
GL-Z  - Raspberry Pi 4 - new firmware

 
Additional resources:

 
rpi-eeprom help
The help output of the rpi-eeprom-update utility has some interesting information:

rpi-eeprom-update [options]... [FILE]
   Checks whether the Raspberry Pi bootloader and the VL805 USB controller
   EEPROMs are up-to-date and optionally updates the EEPROMs at the next reboot.

   The default update mechanism writes recovery.bin and the EEPROM update 
   image(s) (pieeprom.upd and vl805.bin) to the boot partition on the sd-card. 
   The SHA256 hash of the corresponding images are written to pieeprom.sig
   and/or vl805.sig. This guards against file system corruption which could
   cause the EEPROM to be flashed with an invalid image. This is is not a
   security check.

   At the next reboot the ROM runs recovery.bin which updates EEPROM(s). 
   If the update was successful recovery.bin renames itself to recovery.000
   to prevent it from running a second time then resets the system.
   The system should then boot normally.

   If /boot does not correspond to the boot partition on the sd-card and this
   is not a NOOBS system then the mount point for BOOTFS should be defined
   in /etc/default/rpi-eeprom-update by defining the BOOTFS variable.

   For reference, the flashrom update mechanism may be enabled by defining
   USE_FLASHROM=1 in /etc/default/rpi-eeprom-update. This not recommended
   because the SPI pins are muxed with audio and other device drivers may
   be using SPI (e.g. HATs). This is also not safe in the event of a power
   failure during the update of the EEPROM.

   A backup of the current EEPROM config file is written to /var/lib/raspberrypi/bootloader/backup
   before applying the update.

   -a Automatically install bootloader and USB (VLI) EEPROM updates.
   -A Specify which type of EEPROM to automatically update (vl805 or bootloader)
   -d Use the default bootloader config instead of migrating the current settings
   -f Install the given file instead of the latest applicable update
      Ignores the FREEZE_VERSION flag in bootloader and is intended for manual
      firmware updates.
      WARNING: This command should only be run from console mode in order to
      avoid conflicts/deadlock with dtoverlay/dtparam settings.
   -h Display help text and exit
   -i Ignore package checksums - for rpi-eeprom developers.
   -j Write status information using JSON notation
   -m Write status information to the given file when run without -a or -f
   -r Removes temporary EEPROM update files from the boot partition.
   -u Install the specified VL805 (USB EEPROM) image file.

   To extract the configuration file from an EEPROM image: 
   rpi-eeprom-config pieeprom.bin --out bootconf.txt

   To update the configuration file in an EEPROM image: 
   rpi-eeprom-config pieeprom.bin --config bootconf.txt --out pieeprom-new.bin

   To flash the new image: 
   sudo rpi-eeprom-update -d -f ./pieeprom-new.bin

   The syntax is the same as config.txt but section filters etc are not supported. See
   online documentation for the list of parameters.

   The official documentation for the Raspberry Pi bootloader EEPROM is available at
   https://www.raspberrypi.org/documentation/hardware/raspberrypi/booteeprom.md




One thought on “Raspberry Pi 4: New Firmware Reduces Power Consumption and Board Temperatures”

Leave a Comment

Your email address will not be published. Required fields are marked *