Recently, I watched a Jeff Geerling video where he talks about UASP and how it is useful in improving Read / Write speeds of his USB connected SATA SSD. Curious, I wanted to try out how having an SSD as my boot drive would be for my Raspberry Pi 4B.
I bought a cheap ADATA SU650 120GB SSD as my boot drive and a PiBOX 2.5 Inch SATA to USB 3.0 connector from Amazon.
Preparing to flash
I downloaded the 64-bit Raspberry Pi OS from here and extracted the zip file to an empty folder. I then used the Raspberry Pi Imager to flash the 64-bit image to the SSD.
Since I use Arch Linux I installed the imager from AUR using Trizen.
|
|
When you launch the Imager you might get a screen like this.

Select Choose OS under Operating System and scroll down till you find Use Custom.

Select the .img file you extracted from the zip file you downloaded.
Now under SD Card select Choose SD Card and select the USB Connected SSD drive and click Write. Once done writing unplug the USB and keep it aside. We now need to update the EEPROM of the Raspberry Pi.
Updating the EEPROM
First, update the Raspberry Pi packages to the latest version using apt.
|
|
Then using nano
update the rpi-eeprom-update file.
|
|
Change the value of FIRMWARE_RELEASE_STATUS="critical"
to FIRMWARE_RELEASE_STATUS="stable"
and save the file.
At the time of writing this blog the latest version for the EEPROM file was 2020-09-03
. Use the below command to update the EEPROM.
|
|
Once updated reboot the Raspberry Pi.
Now run sudo rpi-eeprom-update
you should get an output like this.
|
|
Run vcgencmd bootloader_version
to check the Bootloader version and verify the update.
|
|
Connecting the USB SSD Drive
Connect the SSD drive to one of your 3.0 USB ports. Before switching to booting off SSD drive follow the below instructions to enable SSH. You may skip the steps if you prefer login using GUI.
Check for UASP Support
To check if your SATA to USB adapter supports UASP the reliable way is to plug in the SSD drive and using lsusb -t
to check. In my case, my device supports UASP and when plugged in lsusb
shows that it is using uas
driver.
|
|
If your adapter does not support UASP
you will get something like this.
|
|
Note that the value for Driver is uas
in the first case and usb-storage
in the second case. If your output has uas
this means that your adapter supports UASP.
Enabling SSH on boot
- As root run
fdisk -l
find out the Disk drive. In my case it was /dev/sdb.
|
|
-
Create a folder
mkdir /mnt/boot
. -
Mount the drive using
mount /dev/sdb1 /mnt/boot
. -
Create an empty ssh file
touch /mnt/boot/ssh
. -
Unmount the drive using
unmount /mnt/boot
.
Rebooting into the SSD
-
Shutdown your Raspberry Pi and carefully unplug the SD card.
-
Start up the Raspberry Pi and wait for a few minutes.
-
Type
ssh pi@<ip address of pi>
to ssh into the Pi. -
Congratulations you are booting off the SSD drive.
I’m assuming you have a static IP mapped to your Raspberry Pi MAC address. If not you can use nmap
to scan your network.
Benchmark Results

From the results, we can immediately notice how much faster UASP is compared to USB-Storage. It’s about 15 - 20% faster over USB-Storage. The benchmark tests were performed and averaged over 3 runs.
For benchmarking using hdparm:
|
|
For benchmarking using dd:
|
|
Summary
UASP is definitely faster than USB-Storage. If you are interested in buying a USB 3.0 to SATA adapter please consider buying a UASP compatible adapter.
A small note to consider during purchase is that it’s better to buy controllers made by ASMedia Technology Inc as they are reported to have a high chance of success supporting UASP.