RaspberryPi – USB SSD boot – howto and troubleshooting

raspberrypilogo

By default, the latest versions of bootloaders for RaspeberryPi 4 can boot directly on USB without a presence of a SDCard. You can just “burn” the image on the USB external storage and boot it up. The thing is that it is booting without any problems on HDD but it hangs on SSD boot. We will explain and solve this bellow.

The error you will have when is trying to boot is:

[DEPEND[ Dependency failed for /boot
[DEPEND[ Dependency failed for ocal File Systems
[FAILED] Failed to start Journal Service
[FAILED] Failed to start Load Kernel Modules

Assuming that you already run:

sudo apt update

sudo apt full-upgrade

you need to change inside the file /etc/default/rpi-eeprom-update the variable FIRMWARE_RELEASE_STATUS to “stable” (I used “beta”, for testing purposes)

Running the next command you will get the info related to your active bootloader and the available ones:

rpi eeprom-update

my output (I have used a beta channel):

# rpi-eeprom-update
BOOTLOADER: up to date
CURRENT: Tue 05 Oct 2021 07:53:57 AM UTC (1633420437)
LATEST: Thu 29 Apr 2021 04:11:25 PM UTC (1619712685)
RELEASE: default (/lib/firmware/raspberrypi/bootloader/default)
Use raspi-config to change the release.

VL805_FW: Dedicated VL805 EEPROM
VL805: up to date
CURRENT: 000138a1
LATEST: 000138a1

Check the latest booloader available for you:

# ls -la /lib/firmware/raspberrypi/bootloader/stable
total 6448
-rw-r--r-- 1 root root 524288 Apr 23 2020 pieeprom-2020-04-16.bin
-rw-r--r-- 1 root root 524288 Jun 17 2020 pieeprom-2020-06-15.bin
-rw-r--r-- 1 root root 524288 Jul 20 2020 pieeprom-2020-07-16.bin
-rw-r--r-- 1 root root 524288 Aug 10 2020 pieeprom-2020-07-31.bin
-rw-r--r-- 1 root root 524288 Sep 7 2020 pieeprom-2020-09-03.bin
-rw-r--r-- 1 root root 524288 Dec 15 2020 pieeprom-2020-12-11.bin
-rw-r--r-- 1 root root 524288 Jan 14 2021 pieeprom-2021-01-11.bin
-rw-r--r-- 1 root root 524288 Jan 16 2021 pieeprom-2021-01-16.bin
-rw-r--r-- 1 root root 524288 Feb 22 2021 pieeprom-2021-02-16.bin
-rw-r--r-- 1 root root 524288 Mar 18 2021 pieeprom-2021-03-18.bin
-rw-r--r-- 1 root root 524288 Apr 30 2021 pieeprom-2021-04-29.bin
-rw-r--r-- 1 root root 524288 Jul 7 16:25 pieeprom-2021-07-06.bin
-rw-r--r-- 1 root root 106432 Sep 27 15:03 recovery.bin
-rw-r--r-- 1 root root 98904 Feb 28 2020 vl805-000137ad.bin
-rw-r--r-- 1 root root 99224 Jul 20 2020 vl805-000138a1.bin

The actual bootloader update:

sudo rpi-eeprom-update -d -f /lib/firmware/raspberrypi/bootloader/stable/pieeprom-2021-07-06.bin

After the successful update, a reboot is needed.

My daily computer is a linux (Mint) and the next step it was done attaching the usb ssd storage to my computer. We need to tell to the RaspberryPi to boot from the exact usb device identified by the idVendor and idProduct. We are getting this 2 info running dmesg command (on another linux computer) with the output:

[    1.617542] usb 2-2: new SuperSpeed Gen 1 USB device number 2 using xhci_hcd
[    1.638976] usb 2-2: New USB device found, idVendor=0080, idProduct=a001, bcdDevice= 2.04
[    1.638992] usb 2-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[    1.639005] usb 2-2: Product: External USB 3.0
[    1.639017] usb 2-2: Manufacturer: TOSHIBA
[    1.639029] usb 2-2: SerialNumber: 201503310007F

Now that we have the needed info, let’s puttem them inside /boot/cmdline.txt following the syntax: usb-storage.quirks=xxxx:yyyy:u where xxxx is the idVendor for your device and yyyy is the idProduct. So, in my case it will be usb-storage.quirks=0080:a001:u.

usb-storage.quirks=0080:a001:u console=serial0,115200 console=tty1....etc

Save, reboot, enjoy! 🙂

In some cases this procedure doesn’t have the expected result because it seems that not all USB adapters are compatible. A list of tested ones can be found on this website.

I use an Oricco adapter for 2.5 SATA.

Comments

comments

Author: ionut_d

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.