Pi4 Bootloader Configuration

Pi4 Bootloader Configuration

You can display the currently-active configuration using

vcgencmd bootloader_config

To change these bootloader configuration items, you need to extract the configuration segment, make changes, re-insert it, then reprogram the EEPROM with the new bootloader. The Raspberry Pi will need to be rebooted for changes to take effect.

# Extract the configuration file
cp /lib/firmware/raspberrypi/bootloader/beta/pieeprom-2019-09-10.bin pieeprom.bin
rpi-eeprom-config pieeprom.bin > bootconf.txt

# Edit the configuration using a text editor e.g. nano bootconf.txt

# Example change. If you have a UART cable then setting BOOT_UART=1 will help debug boot issues

# Save the new configuration and exit editor

# Apply the configuration change to the EEPROM image file
rpi-eeprom-config --out pieeprom-new.bin --config bootconf.txt pieeprom.bin

To update the bootloader EEPROM with the edited bootloader:

# Flash the bootloader EEPROM
# Run 'rpi-eeprom-update -h' for more information
sudo rpi-eeprom-update -d -f ./pieeprom-new.bin
sudo reboot

Configuration Items

This section describes all the configuration items available in the bootloader.


If 1 then enable UART debug output on GPIO 14 and 15. Configure the receiving debug terminal at 115200bps, 8 bits, no parity bits, 1 stop bit. Default: 0
Version: All


If 1 then ‘sudo halt’ will run in a lower power mode until either GPIO3 or GLOBAL_EN are shorted to ground.

Default: 0 in original version of bootloader (2019-05-10). Newer bootloaders have this set to 1.
Version: All


If 1 and WAKE_ON_GPIO=0 then switch off all PMIC outputs in halt. This is lowest possible power state for halt but may cause problems with some HATs because 5V will still be on. GLOBAL_EN must be shorted to ground to boot.

Default: 0
Version: 2019-07-15


If 1 then the rpi-eeprom-update will skip automatic updates on this board. The parameter is not processed by the EEPROM bootloader or recovery.bin since there is no way in software of fully write protecting the EEPROM. Custom EEPROM update scripts must also check for this flag.

Default: 0
Version: All

Configuration items (Network boot beta test bootloader only)


The BOOT_ORDER setting allows flexible configuration for the priority of different bootmodes. It is represented as 32bit unsigned integer where each nibble represents a bootmode. The bootmodes are attempted in lowest significant nibble to highest significant nibble order.

E.g. 0x21 means try SD first followed by network boot then stop. Where as 0x2 would mean try network boot and then stop without trying to boot from the SD card.

The retry counters are reset when switching to the next boot mode.


  • 0x0 – NONE (stop with error pattern)
  • 0x1 – SD CARD
  • 0x2 – NETWORK

Default: 0x00000001 (with 3 SD boot retries to match the current bootloader behaviour)


Specify the maximum number of times that the bootloader will retry booting from the SD card.
-1 means infinite retries
Default: 0


Specify the maximum number of times that the bootloader will retry network boot.
-1 means infinite retries
Default: 0


The timeout in milliseconds for the entire DHCP sequence before failing the current iteration.
Default: 45000
Minimum: 5000


The timeout in milliseconds before retrying DHCP DISCOVER or DHCP REQ.
Default: 4000
Minimum: 500


The timeout in milliseconds for an individual file download via TFTP.
Default: 15000
Minimum: 5000


Optional dotted decimal ip address (e.g. for the TFTP server which overrides the server-ip from the DHCP request.
This maybe useful on home networks because tftpd-hpa can be used instead of dnsmasq where broadband router is the DHCP server. Default: “”

Categories: Uncategorized

2 replies »

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.