Raspberry Pi SSD Kit and Class A2 microSD cards review with Raspberry Pi 5

Selecting a microSD card, and to a lesser extent an SSD, for your Raspberry Pi may feel like walking through a landmine field with fake microSD cards that may perform poorly and severely impact the performance and/or reliability of your Raspberry Pi, and you’ll find plenty of articles helping you select a good microSD card for your Raspberry Pi.

That’s probably why Raspberry Pi Holdings decided to launch its own Raspberry Pi-branded class A2 microSD cards and NVMe SSDs, so users can be sure they got a certified storage device that should perform as advertised as long as they purchase those from some authorized resellers. The company sent me 32GB and 64GB Raspberry Pi microSD cards and a 256GB Raspberry Pi SSD kit for testing, so I’ll test those in this review and compare them against other SSDs and microSD cards I’m currently using.

Raspberry Pi SSD Kit Class A2 MicroSD card review

Since we’ve not covered the new Raspberry Pi storage yet, let’s start with the specifications:

Raspberry Pi SSD specifications

Two models are available with different capacities and performance metrics:

  • 256GB NVMe
    • 40k IOPS (4kB random reads)
    • 70k IOPS (4kB random writes)
  • 512GB NVMe
    • 50k IOPS (4kB random reads)
    • 90k IOPS (4kB random writes)
  • Standards
    • PCIe Gen 3 interfaces
    • NVMe 1.4 register interface and command set
  • Dimensions – M.2 2230 form factor

Since none of the Raspberry Pi SBCs comes with an M.2 socket so far, you’d need a Raspberry Pi 5-compatible M.2 adapter, such as the Raspberry Pi M.2 HAT+, or third-party M.2 HAT+ boards from Waveshare, Geekworm, Pineboards, etc… For this review, I received a Raspberry Pi SSD Kit that combines the official M.2 HAT+ with a 256GB Raspberry Pi SSD.

Raspberry Pi likely did not disclose sequential write/read speeds for the SSDs because the PCIe Gen3 x1 interface limits that to around 800MB/s, but the SSD modules themselves can achieve several thousand MB/s with the right host computer. A few more details may be found on the product page.

Raspberry Pi SD card specifications

Three models are available with the following specifications:

  • Capacity – 32GB, 64GB, or 128GB
  • A2 microSD cards with support for DDR50 and SDR104 bus speeds and command queueing (CQ) extension
  • Speed Class: C10, U3, V30, A2
  • Random 4KB read performance: 3,200 IOPS (Raspberry Pi 4, DDR50) 5,000 IOPS (Raspberry Pi 5, SDR104)
  • Random 4K write performance: 1,200 IOPS (Raspberry Pi 4, DDR50) 2,000 IOPS (Raspberry Pi 5, SDR104)
  • Shock-proof, X-ray–proof, and magnet-proof
  • Compatible with microSDHC- and microSDXC-supporting host devices

The microSD cards are available unprogrammed or pre-programmed with Raspberry Pi OS. I received 32GB and 64GB microSD cards for review each with an SD adapter for compatibility with a wider range of hosts. Additional information may be found on the product page.

Raspberry Pi SSD Kit and SD cards unboxing

Raspberry Pi has been busy in the last few months, and November will also be busy with even more announcements on the way. So I received a package with the Touch Display 2, some AI devices, and more, but here, I’ll focus on the storage device with one 256GB Raspberry Pi SSD Kit, and two Raspberry Pi SD cards.

Raspberry Pi SSD Kit and MicroSD cards

The SSD kit ships with the Raspberry Pi M.2 HAT+ M-Key with a 256GB Raspberry Pi SSD inserted into the M.2 socket, a 40-pin header, and plastic standoffs and screws for assembly. I personally prefer copper standoffs and metal screws offered with some third-party kits, but I suppose plastic part are cheaper.

Raspberry Pi 256GB SSD Kit

Another small issue was the way the SSD card was installed on the M.2 HAT+ board. I don’t think it’s supposed to be that way with the SSD awkwardly bending…

Raspberry Pi SSD wrong mounting

So I remove the screws and put it back into place as it should be. The SSD still works as expected so no harm done.

Fixed Raspberry Pi SSD Kit mount

The bottom side of the M.2 HAT+ expansion board has nothing much which makes it suitable for mounting on top of the active cooler.

Raspberry Pi M.2 HAT+ bottom

There’s no indication of the microSD cards’ capacity on the packages, but I opened both and it’s clearly marked on the microSD cards themselves, and I got one 32GB Class A2 card, and one 64GB Class A2 card. All good.

Raspberry Pi Class A2 microSD cards 32GB 64GB

Getting started with the Raspberry Pi SSD kit

We first need to assemble the Raspberry Pi SSD kit on the Raspberry Pi 5. We’ll start with the four standoffs and the 40-pin expansion header.

Raspberry Pi SSD Kit Assembly

I then placed the M.2 HAT+ on top are secured it with four screws, before finally inserting the FFC cable into the PCIe connector on the Pi 5. I struggled a bit for the last part, and it’s probably easier to instead the FFC cable to the Pi 5 before mounting the M.2 HAT+ on the standoffs.

Raspberry Pi SSD Kit Raspberry Pi 5 PCIe cable

When I first tried to boot the Raspberry Pi 5 with the SSD kit, I just added an Ethernet cable and the power supply, but I got no link, so I ended up connecting a display, and it was stuck in a boot loop…

Raspberry Pi 5 SSD Kit not booting

A Samsung MZ9LQ256HBJD-00BVL drive (the actual part name of the 256GB Raspberry Pi SSD) also known as one of the “Samsung PM991a” SSDs, was indeed detected, but it looks like Raspberry Pi OS was not pre-installed. I must have been spoiled by the Cytron MAKERDISK SSDs which work out of the box with Raspberry Pi OS pre-installed (provided the bootloader is up to date), and I was expecting the official Raspberry Pi SSD to be the same but apparently not.

So now I had to think of a method to install Raspberry Pi OS on the SSD, but sadly the official SSD documentation has nothing about that. I kind of remembered Raspberry Pi announced network install supports a few years ago, so somehow there was no such option… It’s only after I inserted RF dongles for a wireless keyboard and mouse combo that the “net install” option magically showed up on the display…

Raspberry Pi 5 bare SSD USB keyboard mouse

So I pressed the SHIFT key to download the net install utility from the Internet.

Download Raspberry Pi OS installer

After a few minutes, I was presented with an RPI-imager-like interface, where I could select the Raspberry Pi 5 board, Raspberry Pi OS 64-bit (Desktop), and the Samsung MZ9LQ256HBJD-00BVL storage for installation.

Raspberry Pi 5 install Raspberry Pi OS on SSD

Everything went smoothly and after several minutes, I reached the Raspberry Pi OS desktop.

Raspberry Pi 5 2GB running Raspberry Pi OS on NVMe SSD

Benchmarking storage on Raspberry Pi 5

Now that we have the system up and running, I’ll benchmark the three Raspberry Pi-branded storage devices using iozone3 and compare the results to others including Cytron MAKERDISK SSDs and a Samsung Class A1 microSD card. I’ll have a comparison at the end of this section.

Let’s start with the default configuration (PCIe Gen2 x1):


Note that I ran iozone3 twice for all tests to make sure the results were similar. Let’s switch to the unofficial PCIe Gen3 mode by adding the following line to /boot/firmware/config.txt before the [cm4] section:


and reboot the system. Let’s check the link is set to 8GT/s (PCIe Gen3 x1):


All good, we can run the benchmark again:


Both write and read results are as expected for the PCIe Gen2 and Gen3 interfaces used.

I also measured boot time from power off three times: 24.08 seconds, 23.47 seconds, and 24.20 seconds for an average of 23.92 seconds from pressing the power button until the top bar shows up.

Now the plan is to turn off the Raspberry Pi 5, and install Raspberry Pi OS on the two Raspberry Pi Class A2 microSD cards before disconnecting the PCIe FFC cable, and inserting the SD card for testing. So I installed the RPI-imager utility on my Ubuntu laptop only to see boot and rootfs partitions pop up when I inserted the microSD card into my laptop… That means that contrary to the SSD which comes blank, Raspberry Pi OS is already installed on the microSD cards. Awesome!

So I just inserted the 64GB Raspberry Pi microSD into my Raspberry Pi 5 and went through the setup and OS update wizard which took a few minutes. I could then run iozone3 again:


I powered cycle the Raspberry Pi 5 three times to check the boot time: 21.8s, 21.58s, and 21.85s, or 21.74s on average. That’s very odd as the boot time is faster than with the SSD…

Let’s investigate… I was asked to switch to LabWC completing the setup wizard. Let’s check some system information:


But I was never asked after installing Raspberry Pi OS on the SSD. Here’s the output of the same command after I switched back to the Raspberry Pi SSD:


It’s exactly the same… So despite having lower benchmark performance, the microSD card can boot faster. Maybe it’s because the bootloader searches for the microSD card first, before switching to the NVMe SSD if it can not find it.

Let’s try to change that. Here’s the bootloader configuration on the Raspberry Pi 5:


The important part is BOOT_ORDER:

  • 1 is to try the microSD card first
  • 6 is to try the NVMe second
  • 4 is to try USB-MD if neither microSD or NVMe cards are detected.
  • f is to continuously loop to try to boot from any of the storage devices above in the defined order.

Let’s change that to try to boot from the NVMe SSD first by setting BOOT_ORDER to 0xf416 using the command:


Let’s shut down the machine and try to boot three times: 22.86s, 22.85s, 22.85s. That’s about 22.85s on average and a small improvement of about one second, but still slower than the 64GB microSD card.
If I change the boot time measurement method and stop the watch when the wallpaper appears (as opposed to the top bar when the user can actually interact with the system), the boot time is about 21.4s with the 64GB microSD card and 18.24s with the SSD. So something slows down boot time with the SSD during that time. It’s out of the scope of this review, but it could be looked into in more detail with systemd-analyzer. But at least, that’s an easy method to switch between SSD and microSD boot without having to touch the hardware.

Let’s revert to the previous boot sequence and switch to the 32GB microSD card to see how it performs.


It’s almost the same, so the boot time should also be similar. Let’s go through three boots: 22.67s, 22.77s, and 22.70s for an average of about 22.71s. Still in the same range as the 64GB microSD and 256GB SSD.

I also used systemd-analyze to have another take on boot time:

  • 32GB microSD card:

  • 64GB microSD card:

  • 256GB SSD:


It’s more in line with expectations, although I was expecting a bigger delta between the microSD cards and the NVMe SSD for boot times. There’s even no point in making a chart here…

It did a final iozone3 test with a 32GB Sandisk Edge Class A1 microSD card:


Here’s a summary of iozone results for Raspberry Pi SSD, microSD cards, and Cytron MAKERDISK SSD. I also added a line using the Rock5 SBC with an M.2 Gen3 x4 socket using the 512GB MAKERDISK SSD for reference.

Storage deviceSBC - InterfaceReadWriteRandom Read (4K)Random Write (4K)
128GB MAKERDISK SSDPi 5 - PCIe Gen2 x1434,707 KB/s395,667 KB/s53,712 KB/s194,819 KB/s
128GB MAKERDISK SSDPi 5 - PCIe Gen3 x1855,845 KB/s761,527 KB/s58,080 KB/s290,993 KB/s
256GB MAKERDISK SSDPi 5 - PCIe Gen2 x1433,655 KB/s399,095 KB/s54,679 KB/s191,177 KB/s
256GB MAKERDISK SSDPi 5 - PCIe Gen3 x1846,389 KB/s759,437 KB/s58,135 KB/s276,242 KB/s
512GB MAKERDISK SSDPi 5 - PCIe Gen2 x1436,125 KB/s400,709 KB/s55,116 KB/s196,694 KB/s
512GB MAKERDISK SSDPi 5 - PCIe Gen3 x1843,413 KB/s771,841 KB/s58,657 KB/s291,082 KB/s
512GB MAKERDISK SSDRock 5 - PCIe Gen3 x41,747,128 KB/s213,432 KB/s36,004 KB/s87,266 KB/s
256GB Raspberry Pi SSDPi 5 - PCIe Gen2 x1440,835 KB/s390,976 KB/s58,477 KB/s165,305 KB/s
256GB Raspberry Pi SSDPi 5 - PCIe Gen3 x1861,605 KB/s739,594 KB/s62,231 KB/s209,284 KB/s
32GB Raspberry Pi microSDPi 5 - microSD slot93,180 KB/s40,226 KB/s16,133 KB/s6,104 KB/s
32GB Raspberry Pi microSDPi 5 - microSD slot91,769 KB/s72,909 KB/s26,655 KB/s15,862 KB/s
32GB Sandisk Class A1 microSDPi 5 - microSD slot89,501 KB/s20,146 KB/s12,051 KB/s2,439 KB/s
Sequential read write speed Raspberry Pi SSD microSD cards
Sequential read and write speeds in KB/s
iozone3 Random IO KB s
Random I/O in KB/s

We can clearly see the read and write speeds are limited by the PCIe Gen2 x1 to about 440MBs and the PCIe Gen3 x1 to around 860MB/s for both the Raspberry Pi and MAKERDISK SSDs, as the ROCK 5B SBC delivers a much higher read speed. The same can not be said of write speed, and random I/O on the Rockchip board, but it may be due to software configuration/optimization issues. The most important for the user experience are random I/Os and they are quite similar on the MAKERDISK and Raspberry Pi SSD.

The Raspberry Pi SD cards are high-performance Class A2 microSD cards, but as expected, they can’t quite keep up with NVMe SSDs in all metrics, although as we’ve seen with boot time, it may not always matter. The biggest impact will be on workloads with plenty of small writes, where the SSDs will be levels of magnitude faster than microSD cards. Reliability may be better with SSDs since I’ve seen many microSD card fails over the years.

Price-wise, the 256GB and 512GB Raspberry Pi SSD are sold for respectively $30 and $45. For reference, you can find 256GB NVMe SSDs on Amazon for about $20, so I’m not sure the value proposition is there especially since Raspberry Pi OS is not preinstalled. I think the Raspberry Pi microSD cards are more interesting since they come preinstalled with Raspberry Pi OS saving some time, and you greatly lower the risk of purchasing a slow microSD card that will likely die within a few months… The 32GB and 64GB microSD cards are sold for about $10 and $12 respectively. The 128GB model is harder to find and I could only locate it on Pimoroni at this time.

Share this:

Support CNX Software! Donate via cryptocurrencies, become a Patron on Patreon, or purchase goods on Amazon or Aliexpress

ROCK 5 ITX Rockchip RK3588 mini-ITX motherboard
Subscribe
Notify of
guest
The comment form collects your name, email and content to allow us keep track of the comments placed on the website. Please read and accept our website Terms and Privacy Policy to post a comment.
10 Comments
oldest
newest
tkaiser
tkaiser
22 days ago

Thanks for the test! In my country the 64GB SD card is available for 6.70€ or even less. Can you please check manufacturer/OEM IDs? Preferably output of the whole command?

grep . /sys/block/mmcblk?/* 2>/dev/null

tkaiser
tkaiser
22 days ago

> When Raspberry Pi announced the microSD cards they said they were made by Longsys.

So they might appear as Foresee or Lexar or maybe RPi…

Thanks for running the command though the output I expected would look like this. Can you give a ‘find /sys -name manfid’ a try to hopefully adjust the path of the grep command?

tkaiser
tkaiser
22 days ago

Thank you! Funnily the card’s metadata (manfid, oemid and name) is exactly the same as an Amazon Basics 64GB card 🙂

back2future
back2future
20 days ago

[ me thinking, the biggest difficulty with sd-cards getting into 128/256/512GB/1TB size categories is, that there’s no user-friendly information about wear or even ‘data read/written’ within usage for years for SBC OS, where there’s a daily logging burden of ~0.5-2GB (2-10TB for a decade of 24/7) for recent distros (and depending on basic concepts, e.g. including snap or background services, maybe file indexing), flash developing to lower write endurance for multi-level cells (with more extended over-provisioning) and filesystems like f2fs not being a real standard (or established) for flash devices (popularity, available tools, knowledge/experience for handling and knowing about long-term… Read more »

back2future
back2future
19 days ago

[ Hello, could You please give a pointer for how to put code or logs into this boxed format within comments for better readability? (thx) ]

back2future
back2future
20 days ago

[ same storage device, different filesystems on different partitions:
‘ntfs ~128GB, ntfs-3g 2021.8.22 integrated FUSE 28 – Third Generation NTFS Driver’
‘ext4 ~256GB, 1.46.5 (30-Dec-2021)’
( ‘ext4 ~1GB, on virtual filesystem’ ) ]

back2future
back2future
20 days ago

[‘ntfs ~128GB, ntfs-3g 2021.8.22 integrated FUSE 28 – Third Generation NTFS Driver’ Iozone: Performance Test of File I/O           Version $Revision: 3.489 $       Compiled for 64 bit mode.       Build: linux   [.common information.]   Output is in kBytes/sec   Time Resolution = 0.000001 seconds.   Processor cache size set to 1024 kBytes.   Processor cache line size set to 32 bytes.   File stride size set to 17 * record size.                                                             random  random   bkwd  record  stride                                               kB reclen  write rewrite  read  reread  read   write   read rewrite    read fwrite frewrite  fread freread         102400     4  20518  23158  46230  50750  52275  17098                                                                       102400    16  35633  46733 130540 186309 175692  33454                                                                       102400   512  59089  65862 445062 426938 502312  70562                                                                       102400  1024  54580  64023 450902 450173 457977  70877                                                                       102400 16384  39660  24850 433963 411992 498532  70946 ‘ext4 ~256GB, 1.46.5 (30-Dec-2021)’                                                            random  random   bkwd  record  stride                                               kB reclen  write rewrite  read  reread  read   write   read rewrite    read fwrite frewrite  fread freread         102400     4  16657  20292  20412  20481  15499  20973                                                                       102400    16  47397  56730  55480  55905  46222  56871                                                                       102400   512 118060 117867 120794 121124 122279 120606                                                                       102400  1024 121550 120062 124255 125502 123503 122379                                                                       102400 16384 118089 119922 124825 123978 123646 120018 ( ‘ext4 ~1GB, on virtual filesystem’                                                           random  random   bkwd  record  stride                                               kB reclen  write rewrite  read  reread  read   write   read rewrite    read fwrite… Read more »

Boardcon Rockchip RK3588S SBC with 8K, WiFI 6, 4G LTE, NVME SSD, HDMI 2.1...