Joel's picture

According to other users, the 'sdcard specifications say that when operating in "High Capacity (SDHC) mode" an sdcard runs at 50MHz, but when running in the faster "Ultra High Speed (UHS) mode" an sdcard must reach 100MHz.  A Pi runs its sdcard reader at the 50MHz speed and does not enter sdcards into UHS mode,  a UHS-capable card can probably still run at 100MHz while in SDHC mode,  so we run the sdcard reader faster and hope the card is happy with it.'

 "UHS cards are identified by the capital I of the UHS-I logo, as well as U1 or U3 speed markings. These are usually high-end expensive sdcards like Samsung Pro/Evo or Sandisk Extreme."

" Warning: It is recommended not to try this with a regular non-UHS SDHC card. As failed card writes will not be detected until after the block is re-read much later on."
  To check if the overclock worked and what speed is in use:
  sudo cat /sys/kernel/debug/mmc0/ios

 Card label minimum Write speed ratings:
    V90: 90 MB/s or 720 Mb/s
    V30: 30 MB/s  or 240 Mb/s
    U3: 30 MB/s  or 240 Mb/s
    V10: 10 MB/s  or 80 Mb/s
    U1: 10 MB/s  or 80 Mb/s
    Class 10: 10 MB/s or 80 Mb/s
    V6: 6 MB/s  or 48 Mb/s
    Class 6: 6 MB/s  or 48 Mb/s
    Class 4: 4 MB/s  or 16 Mb/s

Sandisk states 'some Sandisk Extreme or Extreme Pro cards transfer speeds can range from 20MB/s (120 Mb/s) to 300MB (2400 Mb/s)' and 'some Sandisk Ultra SD/SDHC/SDXC cards transfer speeds can range from 10MB/s (48 Mb/s) to 80MB/s (640 Mb/s) '

Tests run:

dd if=/dev/zero of=testfile bs=1M count=1000
sudo sh -c 'echo 3 > /proc/sys/vm/drop_caches'
dd if=testfile of=/dev/null

Some test data:

create New file @83MHz
dtoverlay=sdtweak,overclock_50=84
W: 1048576000 bytes (1.0 GB, 1000 MiB) copied, 113.16 s, 9.3 MB/s
R: 1048576000 bytes (1.0 GB, 1000 MiB) copied, 29.845 s, 35.1 MB/s

Overwrite same file @83MHz
dtoverlay=sdtweak,overclock_50=84
W: 1048576000 bytes (1.0 GB, 1000 MiB) copied, 147.723 s, 7.1 MB/s
R: 1048576000 bytes (1.0 GB, 1000 MiB) copied, 29.9731 s, 35.0 MB/s

Overwrite same file @83MHz
dtoverlay=sdtweak,overclock_50=100
W: 1048576000 bytes (1.0 GB, 1000 MiB) copied, 151.595 s, 6.9 MB/s
R: 1048576000 bytes (1.0 GB, 1000 MiB) copied, 31.8963 s, 32.9 MB/s

Overwrite same file @63MHz
dtoverlay=sdtweak,overclock_50=63
W: 1048576000 bytes (1.0 GB, 1000 MiB) copied, 140.024 s, 7.5 MB/s
R: 1048576000 bytes (1.0 GB, 1000 MiB) copied, 37.312 s, 28.1 MB/s

Overwrite same file @83MHz (note: wifi broken)
dtparam=sd_overclock=84
W: 1048576000 bytes (1.0 GB, 1000 MiB) copied, 143.054 s, 7.3 MB/s
R: 1048576000 bytes (1.0 GB, 1000 MiB) copied, 31.6303 s, 33.2 MB/s

Overwrite same file @83MHz (note: wifi broken)
dtparam=sd_overclock=100
W: 1048576000 bytes (1.0 GB, 1000 MiB) copied, 144.891 s, 7.2 MB/s
R: 1048576000 bytes (1.0 GB, 1000 MiB) copied, 34.2554 s, 30.6 MB/s