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!
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.
|Raspberry Pi 4||I 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 Case||This 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 Ultra||This 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 HAT||If 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 500GB||This 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 Adapter||This 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.
If everything went well, do what it says and reboot the Pi to apply your changes.
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.
The second command will show us what boot order we are using. We are looking for
0xf41 as the
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.
Turn power back on and cross your fingers!
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.
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!