Raspberry Pi 4 Boot From USB

Raspberry Pi 4 Boot From USB

As an Amazon Associate I earn from qualifying purchases. Purchasing through my Amazon links helps me keep the site up and running.


Raspberry Pi 4 Boot From USB

Before I go any further, I want to mention that this is the official solution from Raspberry Pi. It’s finally here after waiting almost a whole year. It is worth noting that it is still a beta. I will update this post when that changes.

That being said, you may or may not want to run this in “production”. It’s up to you to decide if a beta bootloader with a USB boot drive is safer than booting from an SD card that is prone to dying.

I warned you, now let’s get to it!


Prerequisites

I am starting this tutorial with a fresh install of the latest Raspbian Buster on an SD card. Here is a parts list of everything I used during this post.

Parts Used

PartDescription
Raspberry Pi 4I used a 4GB Pi for this project. Any variant of the Raspberry Pi 4B should work. With the introduction of gigabit ethernet on the Pi 4, it’s now a viable solution for a NAS device so I wanted to have as much RAM as possible.
HighPi Raspberry Pi 4 CaseThis is my favorite Raspberry Pi 4 case. Tons of room for things like the PoE hat. An SSD stacks pretty well on the top. Later on I plan to design a case that allows you to insert an SSD.
SanDisk 64GB UltraThis part barely matters. You will only be using the card to setup the Pi. After you are done with the tutorial you can use this for something else.
Raspberry Pi PoE HATIf you’ve read any of my other posts, you probably know that I’m a big fan of PoE hats. I wanted to verify this works when powered by PoE so I can eventually convert my whole Raspberry Pi Homelab to boot from SSDs on USB.
Samsung 860 EVO 500GBThis thing flies compared to an SD card. It’s about 10x faster. It’s a night/day difference on the Raspberry Pi 4. Think about when you transitioned from a spinning disk to an SSD on your desktop.
ELUTENG USB3 SATA AdapterThis allows us to connect the Pi 4 to the SSD. There are known issues with many USB controllers on the Pi 4. I have confirmed this adapter is fully working. Check the troubleshooting section at the bottom of the page for other models that work.

How To Boot From USB On Raspberry Pi 4

First we need to update our Raspberry Pi 4 with the latest packages, firmware and then reboot. Run the following commands. Press y to continue if prompted.

sudo apt-get update
sudo apt-get upgrade -y
sudo rpi-update 
sudo reboot

After your Raspberry Pi 4 boots back up, run the following command to install the package that allows us to update our bootloader. The latest version of Raspbian Buster already comes with this but go ahead and run it for fun, just in case.

sudo apt install rpi-eeprom -y

Run this command to tell the Raspberry Pi to use beta firmware releases. We need this because that is where the new bootloader lives.

sudo sed -i 's/critical/beta/g' /etc/default/rpi-eeprom-update

Now it is time to install the new bootloader. Run the following…

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

You should see some output similar to this.

rpi-eeprom-update command output

If everything went well, do what it says and reboot the Pi to apply your changes.

sudo reboot

After the Pi boots back up, you should run these commands to check that everything went as intended.

vcgencmd bootloader_version 
vcgencmd bootloader_config

The first command will tell you the version of the bootloader. You should see a date of May 15 2020 or newer.

Raspberry Pi bootloader version output

The second command will show us what boot order we are using. We are looking for 0xf41 as the BOOT_ORDER value.

Raspberry Pi bootloader config output

As noted on the Pi 4 Bootloader Configuration page, 0xf41 means “try SD then USB mass storage”. The meaning of all of these values are listed on that page as well.



The next thing you need to do is grab your external SSD or USB thumb drive and install Raspbian on that. Do it just like you did for your SD card. The process shouldn’t be any different.

After you’ve got Raspbian installed on your drive, plug it into the Raspberry Pi. We need to copy some files from the SD card to the drive.

First we need to mount the drive by running the following commands.

sudo mkdir /mnt/usb
sudo mount /dev/sda1 /mnt/usb

Now that the drive is attached we can copy the needed files.

sudo cp /boot/*.elf /mnt/usb
sudo cp /boot/*.dat /mnt/usb

That was the last configuration step…

Power down your Raspberry Pi, remove the SD card, and keep the USB drive plugged in.

sudo halt

Turn power back on and cross your fingers!


Troubleshooting

The Raspberry Pi 4 has problems with quite a few USB controllers. If you followed all the steps here and your Pi doesn’t boot, this is almost certainly the issue.

I had issues with both of the USB thumb drives I tested.

I have tested and confirmed the following USB 3.0 to SATA adapters work.

ELUTENG USB3 SATA Adapter

StarTech.com SATA to USB Cable

If you want to be certain your USB drive works, use one of those.


Enjoy your new lightning fast Pi 4! Twitter is best to get ahold of me if you have any questions.

Subscribe to my mailing list below to be notified when I make a new post or follow me on Twitter. I’d appreciate either!