Raspberry Pi | 4 min | 1758
There are already many tutorials that explain how to boot the Raspberry Pi 4 from an SSD disk without any MicroSD card. This is just another one; but, it includes some tips that I founded on Google, because the other tutorials didn't work, nor did they explain the details.
Let's start with some technical details. The Raspberry Pi 4 has an SPI-attached EEPROM, which contains code to boot up the system and more. The firmware of this EEPROM can be updated to include more functionalities or solves problems. The firmware release notes describe the functionalities added to each new release. As you can see, the beta release 2020-05-15 included the option to boot the Raspberry Pi from an SSD disk without any MicroSD card.
This article is part of a series of tutorials for Raspberry Pi 4:
- Raspberry Pi: Amazon Prime, Netflix, etc. and a DRM solution!
- Raspberry Pi 4: Hardware accelerated video decoding (GPU) in Chromium
- More Raspberry Pi projecs
Software and Hardware
This software and hardware will be needed in this tutorial.
To get the Raspberry Pi 4 to boot from an SSD, you need (at the time of writing this article) to update the EEPROM. To do that, you need first to boot the Raspberry Pi using a MicroSD card. This card should have the Raspberry Pi OS installed. You need this card only once to update the EEPROM.
After booting the Raspberry Pi using the MicroSD card, open a Terminal and type the following:
sudo apt-get install rpi-eepromYou don't need to use the beta release anymore. The 2020-07-31 release was promoted to STABLE and this release includes the SSD booting option.
Then, you need to switch the firmware to the beta "branch", editing the
sudo nano /etc/default/rpi-eeprom-update
to change the file section as follows:
FIRMWARE_RELEASE_STATUS="critical" # To: FIRMWARE_RELEASE_STATUS="beta"
I got the following:
BCM2711 detected Dedicated VL805 EEPROM detected *** UPDATE AVAILABLE *** BOOTLOADER: update available CURRENT: Thu 16 Apr 2020 05:11:26 PM UTC (1587057086) LATEST: Fri 31 Jul 2020 01:43:39 PM UTC (1596203019) FW DIR: /lib/firmware/raspberrypi/bootloader/beta VL805: update available CURRENT: 000137ad LATEST: 000138a1
To flash the EEPROM firmware, just type the following:
sudo rpi-eeprom-update -d -f /lib/firmware/raspberrypi/bootloader/beta/pieeprom-2020-07-31.bin
and reboot the system.
The EEPROM firmware version changes rapidly. Therefore, if you don't find the
lsthe folder to see the last beta version available i.e.
After rebooting the system, you can check if the EEPROM firmware was installed, typing:
$ vcgencmd bootloader_version Jul 31 2020 14:43:39 version f8d1dc69144b10b4bd78b4b6d08658ac3005726d (release) timestamp 1596203019
which matches the lastest firmware (
LATEST: Fri 31 Jul 2020 01:43:39 PM UTC (1596203019)) described above.
Additionally, if you type:
$ vcgencmd bootloader_config [all] BOOT_UART=0 WAKE_ON_GPIO=1 POWER_OFF_ON_HALT=0 DHCP_TIMEOUT=45000 DHCP_REQ_TIMEOUT=4000 TFTP_FILE_TIMEOUT=30000 ENABLE_SELF_UPDATE=1 DISABLE_HDMI=0 BOOT_ORDER=0xf41
0xf41means the following:
0x1 - SD CARD 0x4 - USB mass storage boot # needed for booting using an SSD 0xf - RESTART (loop) - start again with the first boot order field
Then, shut down the Raspberry Pi and remove the MicroSD card.
After you flash the image, replace the boot files with the newest
*.elffiles from here:
raspberrypi/firmware. Otherwise, you'll get the error
USB-MSD boot requires newer software.
Therefore, follow these steps:
- Download or clone the
git clone https://github.com/raspberrypi/firmware.git --depth 1
- Mount the SSD to the PC on which you flashed Raspberry Pi OS (just connect it to a USB port).
- Replace the files of the
bootpartition with the files inside the downloaded
Connect the SSD to a blue USB port of the Raspberry Pi and switch on the system. The Raspberry Pi will boot from the SSD without any MicroSD card.
I tested the SSD speed using
sudo apt-get install agnostics) and I got following results on an old SSD 840 EVO 250G:
Raspberry Pi Diagnostics - version 0.4 Sat Aug 8 17:21:22 2020 Test : SD Card Speed Test Run 1 prepare-file;0;0;29062;56 seq-write;0;0;29088;56 rand-4k-write;0;0;16574;4143 rand-4k-read;22890;5722;0;0 Sequential write speed 29088 KB/sec (target 10000) - PASS Random write speed 4143 IOPS (target 500) - PASS Random read speed 5722 IOPS (target 1500) - PASS Test PASS
You can check your system using a MicroSD card, typing the following:
sudo apt-get install agnostics agnostics
If you got considerably worse results, you should think about changing your MicroSD card or using this tutorial to boot from an SSD :).