Verify hard drive write speed using dd

This quick benchmark verifies a remote USB HDD is performing as USB 3. A malfunctioning drive may show as USB 3 in USBview, yet write at USB 2 speeds. This technique works on Linux, Mac, Cygwin, and Windows Subsystem for Linux.

Typical USB HDD write speed

  • USB 2 hard limit: 60 MB/s by the 480 Mb/s raw USB 2 speed.
  • real-world USB 2 HDD speed: 30-40 MB/s sequential write

In contrast, USB 3 HDD are limited by the magnetic hard drive speed with today’s hard drives, provided your chipset drivers aren’t messed up. I use this test for when Windows fails to load the USB 3 drivers for an HDD, causing the drive to operate at USB 2 speeds, which you can easily detect with this test.

Write speed

This tests how fast you can write big files, which is a test of sequential write speed. Sequential write speed is important for many remote sensing problems, which are by definition often a time series of data.

dd if=/dev/zero of=/tmp/junk bs=1G count=4 oflag=dsync

That command writes 4 GB sequentially.

  • USB 3 HDD: > 80-100 MB/s
  • USB 2 HDD: < 60 MB/s

Read speed

I have not yet found a way to get a usable estimate of read speed with dd. The fdatasync, dsync, etc. options don’t seem to work on read.


Because of numerous caches from the CPU to the drive itself, using a simple method like this will not give precise results.

Better HDD benchmarks

Consider bonnie++ for more accurate results, particularly for disk read benchmarks.

apt install bonnie++

Cygwin requires compiling bonnie++.

Leave a Comment