4. EEPROM update and configuration

Next we'll boot the Raspberry in order to update and configure the EEPROM, see [1]

Log in as root and start the RPi configuration tool:

sudo su -
raspi-config 

Select `Advanced Options` -> `Bootloader Version` -> `Latest`, then choose `Yes` to `Reset boot ROM to defaults`, then reboot the Raspberry.

Here a few useful commands:

# show current and latest firmware version, they should match now
rpi-eeprom-update

# list current EEPROM configuration
rpi-eeprom-config

# edit EEPROM configuration
rpi-eeprom-config --edit

The default EEPROM configuration looks like this:

[all]
BOOT_UART=0
WAKE_ON_GPIO=1
POWER_OFF_ON_HALT=0

I'm reading through the EEPROM configuration properties [2], compiling a list of settings that I find useful.

I've ended up with the following configuration:

[all]
WAKE_ON_GPIO=0                  # useful if a reset button is installed on GPIO pins, we're not using it
POWER_OFF_ON_HALT=1             # want to power off the RPi as much as possible on halt
BOOT_ORDER=0xf1                 # try to boot from SD card in a loop, ignore all other boot modes, as we're not using them
CLIENT_IP=192.168.0.92          # LAN cable is connected, let's configure the network statically
SUBNET=255.255.255.0            # standard netmask for local subnet
GATEWAY=192.168.0.1             # my network gateway aka IP of the telco router
HDMI_DELAY=0                    # I want to catch a glimpse of the HDMI diagnostics screen, could be useful for debugging I guess
ENABLE_SELF_UPDATE=0            # prefer to update the bootloader manually
NET_INSTALL_ENABLED=0           # we do not want network install, disable to shorten boot times
USB_MSD_DISCOVER_TIMEOUT=5000   # timeout for mass storage detection over USB, setting to minimum although it may not be used due to the BOOT_ORDER we use
USB_MSD_LUN_TIMEOUT=100         # minimum wait time to cycle through SD card LUNs
USB_MSD_PWR_OFF_TIME=0          # do not power cycle USB ports, we'll see later if this causes any trouble or not

Applied that configuration with `rpi-eeprom-config --edit` and rebooted. The RPi now only tries the SD card, but the initial diagnostics screen (which pops up when rebooting with no SD card inserted) doesn't show my static IP configuration. I don't care for that right now as this seems to only be used for net boot purposes, which I don't use currently. Not sure if it maybe stops some DHCP client from starting up, which would be great, as DHCP usually slows down boot time quite a bit.

[1] Updating the EEPROM Configuration

[2] Configuration Properties

⬅ 3. Preparing the SD card image

➡ 5. Kernel build using Debian as base image

⬆ The minimal Raspberry 4 project

🏠 callistix Gemini capsule

Created: 6/Jan/2024

Modified: 21/Jan/2024