Raspberry Pi Cheap SSD Upgrade Guide

I’ve covered the benefits of taking your Raspberry Pi to a solid state drive (SSD) before extensively in this article but in a nutshell you get around a 280% increase in raw throughput and a 1000% increase in 4k random read/writes over a MicroSD card.

That’s fantastic but SSDs have traditionally been very expensive costing you as much as 4+ Raspberry Pis so it seemed silly to use a drive like that as Pi storage. Until now.

That’s right. Thanks to technologies such as 3D NAND flash solid state drives for consumers have now become cheaper than mid-high range MicroSD cards. With 10x the performance of MicroSD cards they are now a no-brainer upgrade for servers or IO intensive Raspberry Pi projects.

Why Choose SSD?

MicroSD cards were not designed to serve as living storage for operating systems. They are designed for devices such as cameras and smart phones that need to write and reliably store data. They’re very good at this and some cards have excellent throughput fast enough to even record 4K video.

But one thing they are not good at is 4k random writes and rewrites. These are small writes throughout a disk and consist of about 25% of all hard drive activity on a computer. Almost every action you take and even routine log file updates trigger these updates so they are very important for performance.

To show you the difference in performance I have developed a benchmark that anyone can run and uploads the results to the site. Click here to learn more about the benchmark and results.

ScoreUserBrandLinkClassManufacturerModelCapacityM. DateDD WriteRandW IOPSRandR IOPSRand WriteRand ReadIO ReadIO WriteIO Rand ReadIO Rand WriteHDParm DiskProductVersionFirmwareVendorDateHost Manuf.Host ModelHost OSArch
3561ckiosSeagate BarraCudaView ProductSSD (2.5" SATA)SeagateBarraCudaSSDZA250CM10002250GN/A37.34828338419313135392032117489135771640136.00SSD2.10STAS1024Seagate2019-05-29 3:24 AMRaspberry Pi FoundationRaspberry Pi 3 Model B Plus Rev 1.3Raspbian GNU/Linux 9 (stretch)armv7l
3492Sean1Crucial BX500View ProductSSD (2.5" SATA)JMicronCT240BX500SSD1223.6G36.35343373321373149321597514237132081606635.18SSD2.10M6CR013Crucial2019-05-04 12:25 AMRaspberry Pi FoundationRaspberry Pi 3 Model B Plus Rev 1.3Raspbian GNU/Linux 9 (stretch)armv7l
3302ssdSamsung PM851View ProductSSD (2.5" SATA)SamsungMZ7TE256HMHP-000L7256GN/A38.35759314323037125752096415514122921352234.56SSD2.10EXT0AL6QSamsung2019-06-02 7:23 AMRaspberry Pi FoundationRaspberry Pi 3 Model B Plus Rev 1.3Raspbian GNU/Linux 9 (stretch)armv7l
3282jchambersSamsung 850 ProView ProductSSD (2.5" SATA)SamsungSSD850PRO256GB256GN/A34.64379292217519116881538315204131481541230.15SSD2.10EXM02B6QSamsung2019-05-25 3:30 PMRaspberry Pi FoundationRaspberry Pi 3 Model B Plus Rev 1.3Raspbian GNU/Linux 9 (stretch)armv7l
3262AnonymousCrucial MX500View ProductSSD (2.5" SATA)JMicronCT500MX500SSD1465.8G34.74617326918470130761550211665124911543928.82SSD2.10M3CR023Crucial2019-04-16 10:16 PMRaspberry Pi FoundationRaspberry Pi 3 Model B Rev 1.2Raspbian GNU/Linux 9 (stretch)armv7l
3226HoffbotKingston A400View ProductSSD (2.5" SATA)KingstonSA400S37120G111.8G34.54488269217952107681541714815117151545528.46SSD2.10S3Z40107Kingston2019-05-05 3:50 PMRaspberry Pi FoundationRaspberry Pi 3 Model B Plus Rev 1.3Raspbian GNU/Linux 9 (stretch)armv7l
3163AnonymousIntenso SATA IIIView ProductSSD (2.5" SATA)IntensoSSDSataIII120GN/A38.65711320422846128171357013406110141358234.42SSD2.00R0809B0Intenso2019-05-29 10:26 AMRaspberry Pi FoundationRaspberry Pi 3 Model B Plus Rev 1.3Raspbian GNU/Linux 9 (stretch)armv7l
3121ADataAData SU800View ProductSSD (2.5" SATA)ADataASU800SS-128GT-C118GN/A35.04037301716151120691505813376113151501631.28SSD2.10N1126KTrekStor2019-05-16 3:41 AMRaspberry Pi FoundationRaspberry Pi 3 Model B Rev 1.2Raspbian GNU/Linux 9 (stretch)armv7l
3066DaeDCrucial BX500View ProductSSD (2.5" SATA)CrucialCT120BX500SSD1120GN/A33.63054309112216123661527113699119871523930.19SSD2.10N1114BCrucial2019-06-07 11:55 AMRaspberry Pi FoundationRaspberry Pi 3 Model B Rev 1.2Raspbian GNU/Linux 9 (stretch)armv7l
2872AnonymousSanDisk X300View ProductSSD (2.5" SATA)SanDiskSD7TB3Q-128G-1006119.2G31.14176286916704114771297112701101001361127.33SSD2.10X2180306SanDisk2019-05-01 12:57 PMRaspberry Pi FoundationRaspberry Pi 3 Model B Plus Rev 1.3Raspbian GNU/Linux 9 (stretch)armv7l
2189AnonymousADataView ProductClass 10 U1Samsung0000059.6G09/201532.6341427271365610908911970048791892321.62SD0x10x0Samsung2019-05-28 7:32 PMRaspberry Pi FoundationRaspberry Pi 2 Model B Rev 1.1Raspbian GNU/Linux 9 (stretch)armv7l
1965AnonymousSanDisk UltraView ProductA1 Class 10 U1SanDiskSL16G119.3G02/201834.026351846105427387968973596870834822.02SD0x80x0SanDisk2019-03-21 3:26 PMRaspberry Pi FoundationRaspberry Pi 3 Model B Plus Rev 1.3Raspbian GNU/Linux 9 (stretch)armv7l
1366dfSanDisk Extreme ProView ProductA1 Class 10 V30 U3SanDiskSP32G29.7G02/201921.011822601473110406894428478708462822.11SD0x80x0SanDisk2019-06-11 9:05 AMRaspberry Pi FoundationRaspberry Pi 3 Model B Plus Rev 1.3Raspbian GNU/Linux 9 (stretch)armv7l
1333se55ySanDisk ExtremeView ProductA1 Class 10 V30 U3SanDiskSE32G29.7G08/201721.21220248348829935864930528124453522.10SD0x80x0SanDisk2019-04-07 3:50 AMRaspberry Pi FoundationRaspberry Pi 3 Model B Rev 1.2Raspbian GNU/Linux 9 (stretch)armv7l
1329AnonymousSanDisk UltraView ProductA1 Class 10 V30 U3SanDiskSE64G59.5G10/201720.511892595475910380886529798317445322.06SD0x80x0SanDisk2019-04-22 10:50 AMRaspberry Pi FoundationRaspberry Pi 3 Model B Plus Rev 1.3Raspbian GNU/Linux 9 (stretch)armv7l
1240AnonymousKingston Canvas SelectView ProductClass 10 U1PhisonSD32G28.9G12/201815.31200228948039156904840657629435522.06SD0x60x0Phison2019-04-12 2:43 PMRaspberry Pi FoundationRaspberry Pi 3 Model B Rev 1.2Raspbian GNU/Linux 9 (stretch)armv7l
1228BorisSamsung Evo+View ProductClass 10 U3SamsungED4QT119.3G04/201920.27592780303911122971125309637326239.13SD0x30x0Samsung2019-06-16 10:49 PMRaspberry Pi FoundationRaspberry Pi 2 Model B Rev 1.1Raspbian GNU/Linux 9 (stretch)armv7l
1186AnonymousSanDisk UltraView ProductA1 Class 10 U1SanDiskSC64G59.5G10/201818.2976240639049624853835467958367522.06SD0x80x0SanDisk2019-06-17 4:56 AMRaspberry Pi FoundationRaspberry Pi 3 Model B Plus Rev 1.3Raspbian GNU/Linux 9 (stretch)armv7l
1184AnonymousSanDisk UltraView ProductA1 Class 10SanDiskSC16G14.9G10/201813.1838243733549749952833788154414135.64SD0x80x0SanDisk2019-05-19 3:20 AMRaspberry Pi FoundationRaspberry Pi 3 Model B Plus Rev 1.3Raspbian GNU/Linux 9 (stretch)armv7l
1160AnonymousPanasonicA1 Class 10 V10 U1PanasonicSD16G16G02/201913.797325343892101371037834438083360135.66SD0x60x0Panasonic2019-03-27 1:28 PMRaspberry Pi FoundationRaspberry Pi 3 Model B Plus Rev 1.3Raspbian GNU/Linux 9 (stretch)armv7l
1144AnonymousSanDisk Extreme ProView ProductClass 10 U3SanDiskSP16G14.9G06/201625.17882828315211313861925048924227535.56SD0x80x0SanDisk2019-05-27 3:40 PMRaspberry Pi FoundationRaspberry Pi 3 Model B Rev 1.2Raspbian GNU/Linux 9 (stretch)armv7l
1138kkSamsung Evo+View ProductClass 10 U1SamsungEB1QL29.9G01/201913.81033231341349253893735987415379022.05SD0x30x0Samsung2019-04-14 11:54 PMRaspberry Pi FoundationRaspberry Pi 3 Model B Plus Rev 1.3Raspbian GNU/Linux 9 (stretch)armv7l
1130DannyDSanDisk UltraView ProductA1 Class 10 U1SanDiskSC32G29.7G12/201817.275128113006112471008135278943273335.73SD0x80x0SanDisk2019-04-16 12:30 PMRaspberry Pi FoundationRaspberry Pi 3 Model B Plus Rev 1.3Raspbian GNU/Linux 9 (stretch)armv7l
1090AnonymousSanDisk Extreme ProView ProductA1 Class 10 V10 U1SanDiskSL128119.1G04/201919.0798244531939783834732198348268722.05SD0x80x0SanDisk2019-05-19 2:50 PMRaspberry Pi FoundationRaspberry Pi 3 Model B Plus Rev 1.3Raspbian GNU/Linux 9 (stretch)armv7l
1086AnonymousSamsung Evo SelectView ProductClass 10 U3SamsungGE8QT238.5G12/201813.2982223539288941810932688028328921.40SD0x30x0Samsung2019-03-24 3:38 PMRaspberry Pi FoundationRaspberry Pi 3 Model B Plus Rev 1.3Raspbian GNU/Linux 9 (stretch)armv7l
1078AnonymousSamsung Evo+View ProductClass 10 U1SamsungEB1QT29.8G10/201818.46022715240810862924629749190231135.44SD0x30x0Samsung2019-05-16 10:05 AMRaspberry Pi FoundationRaspberry Pi 3 Model B Plus Rev 1.3Raspbian GNU/Linux 9 (stretch)armv7l
1078PRDGYSASanDisk UltraView ProductA1 Class 10 U1SanDiskSC128119.1G01/201919.4823244832949792839333518352248622.05SD0x80x0SanDisk2019-06-16 2:01 AMRaspberry Pi FoundationRaspberry Pi 3 Model B Plus Rev 1.3Raspbian GNU/Linux 9 (stretch)armv7l
1077AnonymousWestern DigitalView ProductClass 10 U1SonyUSD00931.5G07/201814.272526662903106641015430588675273722.55SD0x10x0Sony2019-05-03 6:21 PMRaspberry Pi FoundationRaspberry Pi 3 Model B Plus Rev 1.3Raspbian GNU/Linux 9 (stretch)armv7l
1063willworkforicecreamPatriotClass 10 U1PhisonSD16G14.5G11/201813.1935215537438620884333537087344422.05SD0x60x0Phison2019-04-30 12:16 PMRaspberry Pi FoundationRaspberry Pi 3 Model B Plus Rev 1.3Raspbian GNU/Linux 9 (stretch)armv7l
1060AnonymousGoodRAMClass 0SonyUSD007.3G02/201820.4624243124969725977724528155243322.39SD0x10x0Sony2019-04-07 1:11 AMRaspberry Pi FoundationRaspberry Pi 3 Model B Plus Rev 1.3Raspbian GNU/Linux 9 (stretch)armv7l
1060AnonymousSanDisk UltraView ProductA1 Class 10 U1SanDiskSC16G14.9G01/201916.67152715286310860902733628753236334.27SD0x80x0SanDisk2019-04-27 3:19 AMRaspberry Pi FoundationRaspberry Pi 3 Model B Plus Rev 1.3Ubuntu 18.04.2 LTSarmv7l
1053AnonymousSanDisk UltraView ProductA1 Class 10 V30 U3PhisonSD64G58.2G07/201818.5897195735887831802631606472325321.79SD0x50x0Phison2019-04-09 5:04 AMRaspberry Pi FoundationRaspberry Pi 3 Model B Rev 1.2Raspbian GNU/Linux 9 (stretch)armv7l
1052AnonymousSamsung Evo SelectView ProductClass 10 U3SamsungGD4QT126G01/201913.035730461431.31218810967278410913187642.99SD0x30x0Samsung2019-03-17 2:32 PMRaspberry Pi FoundationRaspberry Pi 3 Model B Plus Rev 1.3Raspbian GNU/Linux 9 (stretch)armv7l
1048AnonymousSanDisk UltraView ProductA1 Class 10 U1SanDiskSL32G29.7G10/201816.8864218734598750788128816905319022.11SD0x80x0SanDisk2019-04-26 12:57 PMRaspberry Pi FoundationRaspberry Pi 3 Model B Plus Rev 1.3Raspbian GNU/Linux 9 (stretch)armv7l
1046AnonymousPhisonClass 10 U3PhisonSD32G29G10/201814.0901212336078492824833326685344721.90SD0x60x0Phison2019-06-17 3:19 PMRaspberry Pi FoundationRaspberry Pi 3 Model B Plus Rev 1.3Raspbian GNU/Linux 9 (stretch)armv7l
1044AnonymousSamsung EvoView ProductClass 6Samsung0000014.7G04/201312.66462530258710122845829618402299121.89SD0x10x0Samsung2019-04-27 9:00 PMRaspberry Pi FoundationRaspberry Pi 3 Model B Rev 1.2Ubuntu 18.04.2 LTSarmv7l
1043zerxSanDisk Extreme ProView ProductA2 Class 10 V30 U3SanDiskSN64G59.5G10/201820.4806226532249061758620286123322535.11SD0x80x0SanDisk2019-05-18 3:03 AMRaspberry Pi FoundationRaspberry Pi 3 Model B Plus Rev 1.3Ubuntu 18.04.2 LTSarmv7l
1039jchambersSanDisk Extreme ProView ProductA2 Class 10 V30 U3SanDiskSR64G63G01/201921.384522403381.58962.9778918766003310534.30SD0x80x0SanDisk2019-03-16 12:37 AMRaspberry Pi FoundationRaspberry Pi 3 Model B Plus Rev 1.3Raspbian GNU/Linux 9 (stretch)armv7l
1038AnonymousSamsung Pro+View ProductClass 10 U3SamsungFC8HT59.6G01/201821.34532637181410548867121478719212632.90SD0x30x0Samsung2019-04-26 10:25 PMRaspberry Pi FoundationRaspberry Pi 3 Model B Plus Rev 1.3Ubuntu 18.04.2 LTSarmv7l
1012JoeLouieKingston Canvas SelectView ProductA1 Class 10 V30 U1NetacSD128116.2G12/201811.2944198337777935806333596597346419.41SD0x60x1Maxell2019-04-18 9:15 PMRaspberry Pi FoundationRaspberry Pi 3 Model B Plus Rev 1.3Raspbian GNU/Linux 9 (stretch)armv7l
Showing featured results only. View full results

As you can see all of the top spots in the results are held by solid state drives. Further, solid state drives beat the fastest MicroSD cards by about 300%.

MicroSD performance varied wildly based on quality of the card. But even the very best and most expensive MicroSD cards got absolutely destroyed by even the cheapest solid state drives. This is because SSDs are so fast that they are limited by the speed of the Raspberry Pi’s USB 2.0 ports.

Solid state drives also have very large write caches. This lets your Raspberry Pi push data to the drive and start doing other things and let the drive itself figure out how to organize the data. Much of the throughput and other performance differences in the above chart are because of much better and faster read/write caching.

Which SSD to Buy?

Since all models and types of solid state drives hit the Raspberry Pi’s USB 2.0 transfer speed limit you should buy the cheapest one that fits your needs!

If your Raspberry Pi is mostly stationary it’s easiest and cheapest to just use a normal 2.5″ SATA SSD with a USB adapter. Here’s my recommendation:

Kingston A400 SSD 120GB SATA 3 2.5” Solid State Drive

Sabrent USB 3.0 to SSD / 2.5-Inch SATA Adapter

The Kingston A400 drive holds many of the top spots on the benchmark results above. It’s a great drive and is cheaper than many mid-range MicroSD cards.

The USB adapter allows us to do this. You can see my Sabrent USB adapter in the below picture attached to the Crucial SSD. There is no power adapter needed as SSDs are low power and are powered by the Pi through USB.

The contenders for the RPI storage benchmarks
Several contenders for the RPI storage benchmarks

Compact SSD Options

If you move your Pi around a lot or need something more compact there are several options.


Option 1:  SanDisk Extreme Pro 128GB USB Solid State Flash Drive

There are some flash drives (a very small number) that are actually solid states. This one is the best one. I actually have a old discontinued model in my picture above. You have to be extremely careful when looking for these as 99.9% of flash drives are NOT solid states. The SanDisk Extreme Pro is a true solid state. The cheaper SanDisk Extreme and Extreme Gos are not (needs to be the pro). If you are looking at a flash drive and they don’t explicitly state it’s a solid state drive then it surely isn’t!

Option 2: Build from parts

Unless you already have an old solid state you can use the price of the adapter + the drive will likely be more than the SanDisk above. If you can find killer deals on eBay you may be able to save a little bit.

You can build a M.2 USB stick but you need to be careful with which type of M.2 drive you have/buy. They can be B-key, M-key, or M+B keyed. By far the most common and cheap ones are SATA with a B or B+M key. The adapter I have is this one.

In the picture above of different storage types you can see I am using an old mSATA drive as a USB stick. To learn how to build one see my article here. These SSDs can be picked up pretty cheap on eBay but I wouldn’t recommend buying one new as they are now specialty parts since M.2 has replaced mSATA.

Benchmark Your Storage

To get a good idea of what kind of performance improvement you can expect you can run the exact same benchmark featured in the table above.

To run the benchmark type/paste:

curl https://raw.githubusercontent.com/TheRemote/PiBenchmarks/master/Storage.sh | sudo bash

Compare your results to the other benchmarks here. Pay special attention to the 4k random read/write tests such as IOZone and FIO. These best reflect everyday usage on the Pi and determine how fast it will respond and perform.

Create Bootable Drive

Creating your bootable drive is also very easy. You simply image it the same way you would image a blank MicroSD.

I use Win32DiskImager and simply select the USB attached drive just like you would with a MicroSD card and write the image. It’s very easy!

Prevent High CPU Usage

There is an issue where using a solid state drive will cause kworker to consume around 10% of your CPU all of the time. This is due to the Pi polling constantly for a Micro SD card to be inserted.

There are two ways to fix this. One is to insert a blank Micro SD card in the Micro SD slot and leave it there all the time. The other is to add a line to your /boot/config.txt. Open up config.txt and add the following:

 dtoverlay=sdtweak,poll_once

This option will tell the Pi to only check for a Micro SD card once at bootup. This means if you want to access the card it needs to be in the Pi before it boots up.

SSD With Raspberry Pi 3

Once you have chosen your SSD it is time to configure the Raspberry Pi to boot off USB storage. Fortunately this is extremely simple. To enable booting from USB storage simply boot up your Raspberry Pi and run this command:

echo program_usb_boot_mode=1 | sudo tee -a /boot/config.txt

Alternatively you can put your MicroSD into your computer and open /boot/config.txt and add the line:

program_usb_boot_mode=1

Now reboot your Pi and USB boot support will be permanently enabled. This only needs to be done once per Raspberry Pi as the change is permanent.

You may now remove the Micro SD card altogether and plug in your external storage you prepared in the previous section. Power up the Pi and it will boot directly from the USB storage!

SSD with Raspberry Pi 1 / 2 / Zero W

The older Pi family and the Zero / Zero W also support USB booting with a small catch. You still need to have a Micro SD card inserted in the Pi with only one file on (bootcode.bin). This is because these Pis use the older
BCM2835 which is a Micro SD only bootloader.

The good news is that if we put a otherwise blank Micro SD card in there with this file the Pi can boot from USB storage just fine and take full advantage of the increased speed and storage size. Bootcode.bin basically provides the instructions to the Pi telling it how to boot from USB.

First you will format your Micro SD card as FAT32 . FAT32 is the partition type that the Pi bootloader can read and is the same format as the /boot/ partition on a fully imaged Pi card.

Next grab the latest bootcode.bin from the official Raspberry Pi repository at https://github.com/raspberrypi/firmware/raw/master/boot/bootcode.bin

Copy the bootcode.bin file onto your newly created and otherwise blank FAT32 imaged Micro SD card and then insert the Micro SD card back into the Raspberry Pi.

Now connect your USB storage back to the Pi and power it on. The Pi will boot directly from your USB storage device!

Conclusion

A solid state drive is the biggest upgrade you can give your Pi. When I am configuring my Minecraft Raspberry Pi servers the performance difference is night and day. They boot faster, respond faster and write/read much faster. It’s very difficult to go back to MicroSD after using one of these with your Pi.

This should be a future proof upgrade as well because presumably the Raspberry Pi 4 will have USB 3.0 and support much higher transfer rates. At this point the individual performance of SSD drives might actually matter but for at least the next couple of years until the Pi4 comes out it makes sense to buy the cheapest drive possible.

I highly recommend running the benchmark for yourself to get an idea of how much performance you can gain!

6 thoughts on “Raspberry Pi Cheap SSD Upgrade Guide”

    1. jamesachambers

      Hello Harii4,

      Thanks for the question. I have updated the article with a new section for booting a Pi / Pi 2 / Pi Zero from USB mass storage. Basically the trick is using bootcode.bin on an otherwise blank Micro SD card and the Pi will boot from USB!

  1. Followed your advice and now running/booting from an old 64GB SSD with USB adapter. One thing I noticed is that removing the micro SD card results in process KWORKER constantly running around 20% CPU or more. Quick & dirty fix seems to be to insert any old non-bootable memory card – I’m sure there are more elegant ways.

Leave a Comment

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

Type here..