How to Boot Your Raspberry Pi 4 From a USB Drive

Tyler Tyler (291)
Total time: 15 minutes 

The Raspberry Pi was designed to boot from an SD card, but in some cases, it's convenient to boot from a USB drive. With previous Raspberry Pi models, USB mass storage boot was either enabled out of the box (3B+, CM3+) or by modifying /boot/config.txt (2B v1.2, 3A+, 3B, CM3). But the Raspberry Pi 4 stores the bootloader on an EEPROM (non-volatile memory attached to the board) rather than the SD card, like previous models. Because of changes in the boot sequence, USB boot was not possible on the Raspberry Pi 4 initially.

But a beta version of the EEPROM firmware was just released that includes support for USB mass storage boot. Currently, enabling USB boot requires a few steps, but I expect USB boot to be enabled by default soon! This guide will show you how to load the beta firmware and boot your Raspberry Pi 4 from a USB drive.

Raspberry Pi 4 Model BRaspberry Pi 4 Model B ×1
Raspberry Pi 4 power supplyRaspberry Pi 4 power supply ×1
USB driveUSB drive ×1

Howchoo is reader-supported. When you buy through links on our site, we may earn a small affiliate commission at no cost to you.

In order to boot from USB, we need to install a beta version of the bootloader. This is done using the rpi-eeprom-update command from a shell. To get started, you'll need to boot your Raspberry from an SD card. If you need help with this step, follow our guide on installing Raspbian (now Raspberry Pi OS) on your Raspberry Pi.

Also, if you're using a headless setup, you'll need to enable ssh and configure Wi-Fi before moving on.

With Raspberry Pi OS installed and the SD card mounted, plug in the Raspberry Pi and boot.

Next, we need to make sure the operating system is up to date. Begin by connecting to your Pi via SSH. Then run the following commands:

sudo apt update
sudo apt full-upgrade

Open the file /etc/default/rpi-eeprom-update to edit. This can be done using vi or nano like this:

sudo nano /etc/default/rpi-eeprom-update

Change "critical" to "beta". The file should look like this:

FIRMWARE_RELEASE_STATUS="beta"

To install the bootloader use:

sudo rpi-eeprom-update -d -f /lib/firmware/raspberrypi/bootloader/beta/pieeprom-2020-05-27.bin

Note: You may want to use a newer version of the pieeprom file if its available. To find a newer version you can use the following:

ls -lha /lib/firmware/raspberrypi/bootloader/beta/ | grep pieeprom

After running the rpi-eeprom-update command, run:

sudo reboot
Verify the raspberry pi bootloader version

After the Pi reboots, connect again using SSH so you can confirm your changes took effect. After connecting run:

vcgencmd bootloader_version

You should expect to see the following:

May 27 2020 18:47:29
version d648db3968cd31d4948341e09cb8a925c49d2ea1 (release)
timestamp 1590601649

Confirm the date matches the date in the beta pieeprom file.

Flash Raspberry Pi OS onto your USB drive

At this point, you need to install Raspberry Pi OS on your USB drive. You can use Raspberry Pi Imager to do this as well. Just plug in your USB drive and select it under SD Card.

And just like your SD card install, now is the time to enable SSH and add your Wi-Fi credentials, if applicable.

Download the Raspberry Pi firmware

You'll need to grab the .dat and .elf files from a May 22, 2020 commit on the raspberrypi/firmware GitHub repo. The latest firmware does not work.

Note to self: when the latest firmware works to update this guide. :)

The easiest way to do this is to download the repository at the specified commit. To do this click Clone or download then Download ZIP. Then unzip the firmware.

Now, with your USB drive still mounted on your computer, run the following:

cp <path_to_firmware>/*.dat <path_to_boot_directory>
cp <path_to_firmware>/*.elf <path_to_boot_directory>

For example, on macOS I'm running:

cp ~/Downloads/firmware-a6c9b6b48ce86ef2527586a50760d52f1b33f642/boot/*.dat /Volumes/boot/
cp ~/Downloads/firmware-a6c9b6b48ce86ef2527586a50760d52f1b33f642/boot/*.elf /Volumes/boot/

Now, you should be able to properly boot from your USB drive. Begin by shutting down your Pi and removing your SD card. Then unmount the USB drive from the computer and insert it into your Raspberry Pi. Then boot the Pi once again.

If you configured Wi-Fi and SSH, you should be able to find your Pi on the network and connect!