Warning: Overclocking SD cards can corrupt your data and possibly damage your SD card!
If you want better SD card speed and have an UHS-1/3-capable SD card, you can make the Pi run it with more than the standard of 50 Mhz. I tried this with a Rasperry Pi 0 (the non-W variant) and a Verbatim 8GB SD-HC Class 10 micro SD card (Model #44081) and settled at 80 MHz to be safe.
Some results using Jeff Gerlings benchmark suite:
SD clock in MHz | Read speed in MB/s |
---|---|
50 (default) | 21.62 |
80 | 26.51 |
100 | 34.64 |
SD clock in MHz | Copy speed in MB/s |
---|---|
50 (default) | 14.4 |
80 | 18.9 |
100 | 17.2 |
SD clock in MHz | write | rewrite | read | reread | random read | random write | |
---|---|---|---|---|---|---|---|
50 (default) | 1173 | 1257 | 5198 | 5085 | 4565 | 666 | |
80 | 1132 | 1262 | 5764 | 5765 | 4969 | 699 | |
100 | 1203 | 1293 | 5907 | 5756 | 5113 | 688 |
Enable SD card overclocking by editing /boot/cofig.txt and add:
# Overclock SD card. Check with "sudo cat /sys/kernel/debug/mmc0/ios"
dtparam=sd_overclock=80
Make sure your overclock value is a fraction of your Pi’s core frequency (e.g. Rasperry Pi 0 core clock = 400MHz -> 400 / 5 = 80 Mhz). You can find the default core frequencies (“core_freq”) here.
You can print the current SD card hardware state with “sudo cat /sys/kernel/debug/mmc0/ios”:
clock: 50000000 Hz
actual clock: 100000000 Hz
vdd: 21 (3.3 ~ 3.4 V)
bus mode: 2 (push-pull)
chip select: 0 (don't care)
power mode: 2 (on)
bus width: 2 (4 bits)
timing spec: 2 (sd high-speed)
signal voltage: 0 (3.30 V)
driver type: 0 (driver type B)