Last updated on September 11th, 2020 at 10:57 am
Official Raspberry Pi 4 USB boot – finally! That means you can use SSD or HDD drives instead of SD card in your Raspberry.
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:
|SSD HP P600, 250GB, USB 3.1||https://amzn.to/2B7qIDi|
|Samsung 860 EVO 500GB 2.5 Inch SATA III Internal SSD||https://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 Inch||https://amzn.to/37AG27e|
|Samsung BAR Plus 64 GB Type-A 200 MB/s USB 3.1||https://amzn.to/3fqJSCO|
|SanDisk Ultra 32 GB USB Flash Drive USB 3.0||https://amzn.to/3frXg9J|
|Samsung MZ-MTD1280 (128GB mSATA) & Element14 Pi Desktop (rev 3) HAT||Reported by Steve Kowalski in the comments|
|Sandisk x110 128GB||Reported by Con Ben in my YouTube Channel|
|SanDisk 256GB Extreme PRO USB 3.1 Solid State Flash Drive||https://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 RAM||https://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)
|Kingston A400 120G Internal SSD M.2 SA400M8|
(Reported by Luiz Barreto in peyanski.com)
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.
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:
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:
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
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
And as written in last sentence – please reboot using the following command.
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)
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.
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.
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:
Then go to Interfacing Options > VNC and enable it by selecting Yes.
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.
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.
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.
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.