Micro SD Card, USB 3, NVMe - speed comparison

Thank you for the several threads from @nerd that make Volumio boot straight from USB or NVMe. I have several RPi4s, a RPi5-8GB, and a TinkerBoard S, and I have tested the read/write speeds of different formats.

This is how I tested:

  1. I installed fresh Volumio and updated it to the latest version (currently 3.639 for RPi and 3.636 for TBS).

  2. I installed the Touch Display and PeppyMeter Plugin (1.5.0).

  3. I used these two commands to check the speed in Terminal:
    Command to check Write Speed:
    dd if=/dev/zero of=./TestingFile bs=100M count=10 oflag=direct

    Command to check Read Speed:
    dd if=./TestingFile of=/dev/zero bs=100M count=10 oflag=dsync

  4. I ran the commands twice and captured the result screen.

I have done this so many times that I know the steps by heart. It’s fun for me because I have a lot of time while I’m recovering from my eye surgery from a couple of months ago.

First, from a Samsung 32GB EVO Plus MicroSD HC 1 U1 on RPi4

Write Speed 12.3, 15.2 MB/s
Read Speed 84.3, 84.7 MB/s

From Asus Tinkerboard S 16GB eMMc memory (built in)

Write Speed - 40.1, 42.8 MB/s
Read Speed - 124, 125 MB/s

From RPi5-8GB, Kingston NVMe Gen 4.0 500GB - PCIe x2

From RPi5-8GB, Kingston NVMe Gen 4.0 500GB - PCIe x3

So what is the typical boot time with the fatest config?

With Peppy installed, from turning the switch on to screen showing, it’s around 33-35 seconds.

With NVMe, you can add bootdelay=1 to the cmdline.txt which will override the default 5s wait for devices init. If you are using connected USB, this may result in device not reporting state ready in time.

A technical remark on use dtparam=pciex1_gen=3 this is still experimental on Pi5 and may result in ASPM error flood.

better to not do this, it might prevent the possibility of a factory reset from USB

I put the bootdelay=1 to the codlin.txt and now the boot time was under 28 seconds. Regarding on use dtparam=pciex1_gen=3, so far so good.