Official Raspberry Pi 4 USB boot – finally! That means you can use SSD or HDD drives instead of SD card in your Raspberry.

Official Raspberry Pi 4 USB Boot from SSD

What you will see in this article?

In today’s article I will show you how you can do the above step by step and you don’t even have to attach a monitor to your Raspberry Pi 4.

SD cards can cause issues and are much slower than SSDs. Since I have a Raspberry Pi 4, my SD card got corrupted several times. So I had to remove it, format it, install OS again and restore all of my configurations that I had.

Doing this can be really frustrating, so I waited for the official Raspberry Pi 4 USB boot as a kid for its birthday.

When I saw the news I immediately bought an SSD drive and decided to give this a try.

Just a quick warning here – at the time of writing this article the official bootloader supporting USB boot on a Raspberry Pi 4 is in beta state and not all SSD or HDD drives will be compatible for USB booting. Although this will probably remain the same even after beta

Compatible USB drives

I can confirm that the external HP P600 SSD is working without any issues and I will try to gather more models reported by the users to be working and I will put them right here in the table below:

ModelLink
SSD HP P600, 250GB, USB 3.1https://amzn.to/2B7qIDi
Samsung 860 EVO 500GB 2.5 Inch SATA III Internal SSDhttps://amzn.to/37o2hNS
ELUTENG USB3 SATA Adapter 2.5 Inch SATA to USB 3.0 https://amzn.to/2MWfd49
SanDisk SSD PLUS 240 GB Sata III 2.5 Inchhttps://amzn.to/37AG27e
Samsung BAR Plus 64 GB Type-A 200 MB/s USB 3.1https://amzn.to/3fqJSCO
SanDisk Ultra 32 GB USB Flash Drive USB 3.0https://amzn.to/3frXg9J
Samsung MZ-MTD1280 (128GB mSATA) & Element14 Pi Desktop (rev 3) HATReported by Steve Kowalski in the comments
Sandisk x110 128GBReported by Con Ben in my YouTube Channel
SanDisk 256GB Extreme PRO USB 3.1 Solid State Flash Drivehttps://amzn.to/2NtLyQc
Crucial MX500 250GB 3D NAND SATA 2.5 Inch Internal SSD (needs SATA adapter)https://amzn.to/2YvVAq7
Samsung 860 QVO 1TB Solid State Drive (needs SATA adapter)https://amzn.to/2YAyGhz
CanaKit Raspberry Pi 4 4GB Starter Kit – 4GB RAMhttps://amzn.to/3eyGi9S
Kingspec Z3 Type C USB 3.1 External SSD (Reported by CraftSense in my YouTube)Banggood link
Geekworm X825 2.5 inch SATA HDD/SSD Expansion Board
(Reported by Jay in peyanski.com)
https://amzn.to/2QML60Q
Kingston A400 120G Internal SSD M.2 SA400M8
(Reported by Luiz Barreto in peyanski.com)
https://amzn.to/32kRR0k
Raspberry Pi 4 Compatible USB boot drives

Now let’s go

Creating a SD card with Raspberry Pi Imager

Go to the download section of https://raspberrypi.org and get the Raspberry Pi Imager for your operating system.

Start it, insert a SD card in your computer or SD card reader.

Burning Raspberry Pi OS on a SD card using raspberry pi imager

And burn the Raspberry Pi OS image on the card.

Don’t worry we will need the SD card only for a while then we will remove it completely.

When Raspberry Pi Imager finish it will unmount the SD card automatically. Remove the SD card and insert it again to access its contents and to create a file ssh inside it.

Create a ssh file in the SD card

When you create an empty file called ssh inside the boot partition of your SD card – you will be able to connect to your Raspberry over the network without even attaching a monitor to it, using the SSH server.

On MacOS you can execute the following command in the terminal:

touch /Volumes/boot/ssh

For Linux/Windows you can use any text editor or you can copy/paste and rename one of the existing text files inside the boot partition of the SD card.

When you are ready, insert the SD card in your Raspberry and plug it in the electricity.

Getting ready and updating the Raspberry OS

After a minute or two check your router for the IP address assigned to your raspberry and connect to it using the following command on MacOS or Linux:

ssh pi@YOUR_RPI_IP

You will be asked for a password and the default one is “raspberry” without the quotes.

For Windows you can use Putty client for the SSH connection. Just Google for it if you don’t know how to use it.

When you log in successfully, execute the following commands to update your Raspberry Pi 4.

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

This will reboot your Raspberry Pi when all finish.

Login again and we now need to install a package that will allow us to update the bootloader to enable the Raspberry Pi 4 usb boot.

Execute the following:

sudo apt install rpi-eeprom -y
Updating the bootloader to enable the Raspberry Pi 4 usb boot

Don’t be surprised if the tool is already installed, that is quite normal.

Then run this command to tell the Raspberry Pi to use beta firmware releases. This “one liner” will replace the word critical with beta in the /etc/default/rpi-eeprom-update file.

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

Of course you can use any text editor for that with the same success.

Updating the bootloader

Now it is time to install the new bootloader to enable the Raspberry Pi 4 usb boot. Just run the following…

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

It is good idea to replace 2020-06-03 with the latest .bin file in the above folder, so the most appropriate command for you when you read that in the future will be:

sudo rpi-eeprom-update -d -f /lib/firmware/raspberrypi/bootloader/beta/pieeprom-YYYY-MM-DD.bin

If you receive a similar answer to this one below you will be one step closer to the Raspberry Pi 4 USB boot

Raspberry Pi 4 USB boot ready bootloader.
Raspberry Pi 4 USB boot ready bootloader.

And as written in last sentence – please reboot using the following command.

sudo reboot

Login again and execute these two commands:

vcgencmd bootloader_version 
vcgencmd bootloader_config

The first one will show you the bootloader version. Just search for the date in my case it was Jun 3 2020, but yours may be different (the one that you use in the rpi-eeprom-update command)

bootolader version compatible with usb boot
bootolader version compatible with usb boot

And the second command will show you the boot order.

You should look for the last row of the result which should be BOOT_ORDER=0xf41. If you see this that means your Raspberry Pi 4 will first look for SD card and if there isn’t any it will try to boot from a drive connected to the USB ports of the Raspberry.

Check the boot order for your Raspberry Pi 4
Check the boot order for your Raspberry Pi 4

Burning the Raspberry OS on the SSD

We need to burn the image of the Raspberry Pi OS one more time, but this time on the SSD. The process is exactly the same as with the SD card. Just choose the SSD (USB drive) as a destination.

And don’t forget to create again an empty ssh file in the boot partition of the USB drive to activate the remote SSH login to the Raspberry.

You can skip this step If you have a monitor, keyboard and a mouse attached to your raspberry.

Copy some files from SD to SSD

Burning the raspberry OS on the SSD drive is ready and I will now show you how to mount the drive to copy some files from the SD card. Let’s do it it’s easy.

Plug the SSD/USB to your Raspberry Pi 4 and execute the following commands to mount the SSD/USB disk to your Raspi.

sudo mkdir /mnt/mydisk
sudo mount /dev/sda1 /mnt/mydisk

Then copy the needed files from SD card to SSD/USB disk with the following two commands:

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

Raspberry Pi 4 USB boot

Now is the time where you can throw away your SD card!

I actually don’t recommend to throw anything especially your SD card, just remove it from your Raspberry Pi 4 and use it for something else.

But if you feel like you want to throw something after all why don’t you try throwing your mouse click against the Subscribe button below?

I will truly appreciate that. Thank you.

And as I said remove the SD card, leave the USB drive connected and reboot your Raspberry. If everything is OK you should very soon enjoy your Raspberry Pi 4 USB boot with faster speeds and increased reliability.

The speed increase in my case from moving from SD card to SSD is over 10 times as you can see on the following screen.

Raspberry Pi 4 USB Boot vs SD card speed comparison
Raspberry Pi 4 SSD vs SD card speed comparison

Question for You!

I didn’t have the time to check how you can upgrade your firmware when you are already on SSD.

In other words how to easily upgrade when there is a newer beta firmware or even official not beta release without having to go through the same procedure with the SD card again.

If you know how to do that let me know in the comments below all the credits in video description and in my website will go to you.

Enable VNC server for remote GUI connection

Let’s enable the VNC server now in order to allow connecting to the graphical interface of the Raspberry.

Login to your Raspberry and execute:

sudo raspi-config

Then go to Interfacing Options > VNC and enable it by selecting Yes.

Enabling VNC Server from raspi-config
Enabling VNC Server from raspi-config

Reboot and try to connect to your Raspberry Pi with a VNC client like VNC Viewer for example. You should use your username and password from the SSH.

Quick Fix if you have issues connecting with VNC

I will show you a quick fix If you face similar error as shown below and you cannot connect with your VNC client to the Raspberry.

Cannot currently show the desktop error when trying VNC connection to Raspberry Pi
Cannot currently show the desktop error when trying VNC connection to Raspberry Pi

Execute:

sudo raspi-config

And this time go to Advanced Options > Resolution

And choose an appropriate resolution for you, then reboot and try again.

You should now see the Raspberry Pi 4 desktop.

Raspberry Pi 4 Desktop over VNC
Raspberry Pi 4 Desktop over VNC

Support my Work

Any sort of engagement on this site and my YouTube channel does really help out a lot with the YouTube and Google algorithms, so make sure you hit the subscribe, as well as the Like and Bell buttons If you enjoy this article/video.

Also feel free to add me on Twitter by searching for @KPeyanski.  You can find me on my Discord server as well.

I really hope that you find this information useful and you now know how to enable Raspberry Pi 4 USB boot using SSD drives and remove your SD card forever.

Thank you for reading, stay safe and don’t forget Home Smart, but Not Hard!

See you next time.


22 Comments

Steve Kowalski · 18/06/2020 at 11:15 pm

Excellent write-up. It took me a couple of tries, mainly getting Raspberry Pi installed correctly per your instructions, but I’m happy to report that I now have the following configuration running perfectly:
­· Raspberry Pi 4 (4GB)
· Element14 Pi Desktop (rev 3) HAT
· Samsung MZ-MTD1280 (128GB mSATA)

I just purchased the Pi4, so this was perfect timing. I’ve been eager to move on from the SDcard boot.
Now I’m interested to see when this comes out of beta…

Thanks for a great guide!

Kiril Peyanski · 19/06/2020 at 11:53 am

Thanks for sharing that Steve Kowalski, I’ve added it in the compatible drive section. Can you tell me a little bit more about the Element14 Pi Desktop (rev 3) HAT? How you connect your mSATA drive to your raspberry using this Element14 Pi ?

Pablo · 21/06/2020 at 10:24 pm

Hi, I would like to know if there is already a stable version and where can I look for it. Thank you!

    Kiril Peyanski · 22/06/2020 at 11:05 am

    yes, the beta bootloader from 15th of June was promoted to Stable.

James Robinson · 01/07/2020 at 12:48 am

works like a dream 😀 thanks Kiril

Colin Tinker · 01/07/2020 at 4:43 pm

Working great with the Eluteng adapter and a Teamgroup ssd, many thanks for the article.

    Kiril Peyanski · 01/07/2020 at 4:56 pm

    Thanks for letting me know. I’m glad that it helped. Also stay tuned for more in 20:15 UTC+3 I will post a part 2 of this article for the stable bootloader.

Gianni · 02/07/2020 at 7:41 pm

Thanks Kiril Peyanski. I installed Rasp Os. Now I have a 256 Mb partition and another from 232 Mb . If I want to install Home Assistant do I have to extend into a single partition?

Tim Regan · 07/07/2020 at 10:00 pm

Great write up; got it to work first try on Netac 500GB Portable SSD, USB3.2 Gen2 10Gbps, Type-C PSSD
But it failed get it to boot from: SanDisk 500GB Extreme Portable External SSD.

Tested both on 2GB and 4GB rPi4’s; both boot from then Netac USB SSD, but both hang at “4 raspberries” when trying to boot from SanDisk.
Initially each set up with your procedures. After failing to boot SanDisk I used rPi SD imager to copy Netac image to SanDisk… Still failed to boot. So I guess it’s still somewhat hardware dependent.
both done with 2020-06-15 eeprom bootloader.

Serge · 12/07/2020 at 1:30 pm

Great job.
Is it works with Raspberry PI Full OS ?
Thanks.

Brandon · 15/09/2020 at 8:14 pm

Great job, thank you for this. I used this tutorial back in late june and I am happy to say my rpi is still working great off my usb boot. If anyone is wondering I used the geekwork/suptronics x828 hat/board. This was a great, straightforward tutorial and I am very happy with the result!

    Kiril Peyanski · 16/09/2020 at 10:17 am

    That is great Brandon, very happy to hear it and thanks for sharing the used hardware If I find a good link to it I will add it in the table of the working devices. Have a great day!

kresimir · 29/09/2020 at 12:22 pm

How to from Ubuntu 20.04 Desktop ???

    Kiril Peyanski · 29/09/2020 at 9:44 pm

    Maybe I will make a video and article about it soon.

      fielcapao · 25/11/2020 at 2:53 am

      Hi,

      It seems the new way to update the eeprom is using sudo rpi-eeprom-update -a.

      I also have Ubuntu but Server 20.10, when run command vcgencmd bootloader_config display the following.

      BOOT_UART=0
      WAKE_ON_GPIO=1
      POWER_OFF_ON_HALT=0

      Could you please help with that?

      I have Sandisk 500 gb ssd extreme – Whenever I plug it in the pi 4(4gb) stop working.

        Kiril · 03/12/2020 at 9:43 pm

        Yes, you can now use rpi-eeprom-update. If you try the same with Raspberry Pi OS is it working correctly?

Rick Harms · 14/10/2020 at 9:29 pm

Sabrent Rocket Q 1TB NVMe PCIe M.2 2280 Internal SSD High Performance Solid State Drive R/W 3200/2000MB/s (SB-RKTQ-1TB) via usb3
Cannot partition when using the sd card copier.

    Kiril Peyanski · 20/10/2020 at 10:44 pm

    Thank for your comment Rick. Did you manage to fix that?

philippe le Jeune · 28/12/2020 at 12:03 am

Hi Kiril, thanks for your videos and how to. I really appreciate and learn from what you do. With regard to this video I struggle with the copy to the SSD but finally managed to make it work taking into account these 3 majors (at least I think) points :
– plug your ssd between the following instruction
sudo mkdir /mnt/mydisk and
sudo mount /dev/sda1 /mnt/mydisk
if you do it before it did not work for me
– double check that USB will start first through the raspi config. it was not the case for me when I launched vcgencmd bootloader_config
– for the reboot, I got the message
@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

so I have to type first :
ssh-keygen -R your.ip.address
and then follow the instructions (yes..).
Great I can start from my flash card 🙂
Now I am updating & upgrading it.

The next step will be to reinstall Home Assistant.
Not sure how I will do it, but I guess that I will reinstall home assistant first and the do a restore …

One more time thanks a lot for what you do – Philippe

Leave a Reply

Avatar placeholder

Your email address will not be published. Required fields are marked *