EEPROM Support (Raspberry Pi 5)
The Raspberry Pi 5 stores its bootloader configuration in an SPI EEPROM on the board. WendyOS manages two EEPROM settings automatically on first boot via one-shot systemd services.
EEPROM Support (Raspberry Pi 5)
The Raspberry Pi 5 stores its bootloader configuration in an SPI EEPROM on the board. WendyOS manages two EEPROM settings automatically on first boot via one-shot systemd services. This document describes what is stored, how the automatic update works, and how to inspect or change the EEPROM manually.
This page is RPi 5 specific. RPi 4 and Jetson hardware do not use this mechanism.
What is stored in the EEPROM
The RPi 5 EEPROM contains the bootloader firmware and a text-format configuration block. WendyOS cares about three keys:
| Key | WendyOS target value | Purpose |
|---|---|---|
PSU_MAX_CURRENT | 3000 (mA) | Raises the USB current limit so the USB gadget composite device can supply enough current. Without this, usb0 may brownout or fail to enumerate on some hosts. |
PCIE_PROBE | 1 | Tells the bootloader to probe PCIe at startup, required for NVMe drives connected via non-HAT+ PCIe adapters. |
BOOT_ORDER | 0xf461 | SD card first, NVMe second, Network third, restart on failure. Nibbles are evaluated right-to-left: 1=SD, 6=NVMe, 4=Network, f=restart. |
Automatic EEPROM management
Two one-shot services run after multi-user.target and each execute at most once per device lifetime, guarded by flag files in /var/lib/wendyos/.
rpi5-eeprom-config.service
Source: meta-rpi-extensions/recipes-bsp/rpi-eeprom/
Script: /usr/sbin/rpi5-eeprom-update.sh
Flow:
- Checks
/var/lib/wendyos/eeprom-updated. If it exists, exits immediately. - Reads
/proc/device-tree/model. If not RPi 5, creates the flag file and exits. - Calls
rpi-eeprom-configto read the current EEPROM configuration. - If
PSU_MAX_CURRENTis missing or not3000, stages an updated EEPROM image withrpi-eeprom-update -d -f <new.bin>, creates the flag file, and reboots. - If already correct, creates the flag file and exits without a reboot.
rpi5-eeprom-nvme-config.service
Source: meta-rpi-extensions/recipes-bsp/rpi-eeprom/
Script: /usr/libexec/rpi5-eeprom-nvme-update.sh
Runs after rpi5-eeprom-config.service. Same flow as above, but sets PCIE_PROBE=1 and BOOT_ORDER=0xf461.
When staging the NVMe update, this service reads the live EEPROM (not the firmware binary) so that any PSU_MAX_CURRENT change from the previous service is preserved in the combined update.
Flag files
| Flag file | Service |
|---|---|
/var/lib/wendyos/eeprom-updated | rpi5-eeprom-config.service |
/var/lib/wendyos/eeprom-nvme-updated | rpi5-eeprom-nvme-config.service |
Deleting a flag file causes the corresponding service to re-run on the next boot. This lets you force a re-check after manually changing EEPROM settings.
Reading the current EEPROM configuration
SSH into the device and run:
rpi-eeprom-configExample output:
PSU_MAX_CURRENT=3000
PCIE_PROBE=1
BOOT_ORDER=0xf461Changing EEPROM settings manually
To change a setting, extract the current config, edit it, and stage the update:
# Extract current config to a file
rpi-eeprom-config --out /tmp/bootconf.txt
# Edit the file
nano /tmp/bootconf.txt
# Stage the update (takes effect on next reboot)
FIRMWARE=$(find /lib/firmware/raspberrypi/bootloader-2712/default -name 'pieeprom-*.bin' | head -1)
rpi-eeprom-config "${FIRMWARE}" --config /tmp/bootconf.txt --out /tmp/pieeprom-new.bin
rpi-eeprom-update -d -f /tmp/pieeprom-new.bin
# Reboot to apply
rebootIf you change
PSU_MAX_CURRENTorPCIE_PROBEmanually, delete the corresponding flag file before rebooting so the WendyOS service does not overwrite your change.
Firmware binary location
The EEPROM firmware images are shipped with the OS and located at:
/lib/firmware/raspberrypi/bootloader-2712/
├── default/ # Stable release firmware
├── stable/
└── latest/The update scripts search default/, then stable/, then latest/ for a pieeprom-*.bin file.
Log files
Both services log to the journal and to flat log files:
| Service | Log file |
|---|---|
rpi5-eeprom-config.service | /var/log/rpi5-eeprom-update.log |
rpi5-eeprom-nvme-config.service | /var/log/rpi5-eeprom-nvme-update.log |
# View service output in the journal
journalctl -u rpi5-eeprom-config.service
journalctl -u rpi5-eeprom-nvme-config.service
# Or view the flat log
cat /var/log/rpi5-eeprom-update.log
cat /var/log/rpi5-eeprom-nvme-update.logKey Configuration Files
This document describes the configuration files that control WendyOS service behaviour, where they live on the device, and what they do.
Logging and Debugging
WendyOS uses systemd-journald for log management. All services write to the journal via stdout/stderr or logger. This document covers how journald is configured, how to enable pers