external USB disk: 400MB/s transfer, but get only 40MB/s

1 view
Skip to first unread message

Matthias Apitz

unread,
Jan 28, 2026, 11:02:06 AM (3 days ago) Jan 28
to freebsd-...@freebsd.org

Hello,

I did tests on two laptops (ASUS and C720) with different USB disks, and
writing with

# dd if=file of=/mnt/file bs=8m

a big file of many GBytes, see below. The disk was always announced in
/var/log/messages as a 400.000MB/s transfers devices by the driver, but
the measured transfer was only between 40MB/s and 50MB/s. The file
system on the USB disks was NTFS.

Why is this?

matthias


Jan 25 10:57:41 ASUS-150 kernel: da0: <WD Elements 2620 1023> Fixed Direct Access SPC-4 SCSI device
Jan 25 10:57:41 ASUS-150 kernel: da0: 400.000MB/s transfers
82594649636 bytes transferred in 2005.078575 secs (41192725 bytes/sec)


Jan 25 11:57:26 ASUS-150 kernel: da0: <WD Elements 2621 1026> Fixed Direct Access SPC-4 SCSI device
Jan 25 11:57:26 ASUS-150 kernel: da0: 400.000MB/s transfers
82594649636 bytes transferred in 1492.881431 secs (55325659 bytes/sec)


Jan 25 13:08:13 c720-1400094 kernel: da0: <WD Elements 2621 1026> Fixed Direct Access SPC-4 SCSI device
Jan 25 13:08:13 c720-1400094 kernel: da0: 400.000MB/s transfers
46271915961 bytes transferred in 1081.647154 secs (42779122 bytes/sec)


--
Matthias Apitz, ✉ gu...@unixarea.de, http://www.unixarea.de/ +49-176-38902045
Public GnuPG key: http://www.unixarea.de/key.pub

Mike Tancsa

unread,
Jan 28, 2026, 11:38:54 AM (3 days ago) Jan 28
to freebsd-...@freebsd.org
On 1/28/2026 11:00 AM, Matthias Apitz wrote:
> Hello,
>
> I did tests on two laptops (ASUS and C720) with different USB disks, and
> writing with

what does

    usbconfig

show for the connected speed ?
It should have something like

spd=SUPER (5.0Gbps)

    ---Mike


Jin Guojun[VFF]

unread,
Jan 28, 2026, 12:48:23 PM (2 days ago) Jan 28
to ques...@freebsd.org
On 1/28/26 08:00, Matthias Apitz wrote:
> Hello,
>
> I did tests on two laptops (ASUS and C720) with different USB disks, and
> writing with
>
> # dd if=file of=/mnt/file bs=8m
>
> a big file of many GBytes, see below. The disk was always announced in
> /var/log/messages as a 400.000MB/s transfers devices by the driver, but
> the measured transfer was only between 40MB/s and 50MB/s. The file
> system on the USB disks was NTFS.
>
> Why is this?
>
> matthias
>
>
> Jan 25 10:57:41 ASUS-150 kernel: da0: <WD Elements 2620 1023> Fixed Direct Access SPC-4 SCSI device
> Jan 25 10:57:41 ASUS-150 kernel: da0: 400.000MB/s transfers
> 82594649636 bytes transferred in 2005.078575 secs (41192725 bytes/sec)
>
>
> Jan 25 11:57:26 ASUS-150 kernel: da0: <WD Elements 2621 1026> Fixed Direct Access SPC-4 SCSI device
> Jan 25 11:57:26 ASUS-150 kernel: da0: 400.000MB/s transfers
> 82594649636 bytes transferred in 1492.881431 secs (55325659 bytes/sec)
>
>
> Jan 25 13:08:13 c720-1400094 kernel: da0: <WD Elements 2621 1026> Fixed Direct Access SPC-4 SCSI device
> Jan 25 13:08:13 c720-1400094 kernel: da0: 400.000MB/s transfers
> 46271915961 bytes transferred in 1081.647154 secs (42779122 bytes/sec)
>
400MB/s is bus speed, the actual speed of USB drives are different, you
need to check your disk models and specs.

"WD Elements external hard drives generally provide reliable, standard
performance for backups and media storage, with typical read/write
speeds ranging between 100–130 MB/s for portable HDD models via USB 3.0."

You are doing read and write on disks so that the performance is one
half of the disk speed (or one half of average of two drives).

Try following (assume your drive is ad0)

dd if=/dev/zero of=/mnt/file bs=8m
for testing writing speed

dd if=/dev/ad0 of=/dev/null bs=8m
for testing reading speed

-Jin




Matthias Apitz

unread,
Jan 29, 2026, 3:00:29 AM (2 days ago) Jan 29
to Jin Guojun[VFF], ques...@freebsd.org
El día miércoles, enero 28, 2026 a las 09:50:17a. m. -0800, Jin Guojun[VFF] escribió:

> 400MB/s is bus speed, the actual speed of USB drives are different, you need
> to check your disk models and specs.
>
> "WD Elements external hard drives generally provide reliable, standard
> performance for backups and media storage, with typical read/write speeds
> ranging between 100–130 MB/s for portable HDD models via USB 3.0."
>
> You are doing read and write on disks so that the performance is one half of
> the disk speed (or one half of average of two drives).
>
> Try following (assume your drive is ad0)
>
> dd if=/dev/zero of=/mnt/file bs=8m
> for testing writing speed
>
> dd if=/dev/ad0 of=/dev/null bs=8m
> for testing reading speed

Thanks! I did so, see below, and the read speed matches the above specs,
but the write speed is three times slower (I put dots in the output of
dd(1) for better readability).

# usbconfig -d ugen0.4 dump_all_desc
ugen0.4: <Western Digital Elements 2621> at usbus0, cfg=0 md=HOST spd=SUPER (5.0Gbps) pwr=ON (224mA)
...

The full output of usbconfig(8) is attached also below.

matthias


# mount_ntfs-3g /dev/da0p1 /mnt

# dd if=/dev/zero of=/mnt/file bs=8m count=1000
1000+0 records in
1000+0 records out
8388608000 bytes transferred in 183.003888 secs (45.838.414 bytes/sec)

# dd if=/dev/da0 of=/dev/null bs=8m count=1000
1000+0 records in
1000+0 records out
8388608000 bytes transferred in 67.147415 secs (124.928.234 bytes/sec)



# usbconfig -d ugen0.4 dump_all_desc
ugen0.4: <Western Digital Elements 2621> at usbus0, cfg=0 md=HOST spd=SUPER (5.0Gbps) pwr=ON (224mA)

bLength = 0x0012
bDescriptorType = 0x0001
bcdUSB = 0x0310
bDeviceClass = 0x0000 <Probed by interface class>
bDeviceSubClass = 0x0000
bDeviceProtocol = 0x0000
bMaxPacketSize0 = 0x0009
idVendor = 0x1058
idProduct = 0x2621
bcdDevice = 0x1026
iManufacturer = 0x0001 <Western Digital>
iProduct = 0x0002 <Elements 2621>
iSerialNumber = 0x0003 <57584B314132394152334B33>
bNumConfigurations = 0x0001

Configuration index 0

bLength = 0x0009
bDescriptorType = 0x0002
wTotalLength = 0x002c
bNumInterfaces = 0x0001
bConfigurationValue = 0x0001
iConfiguration = 0x0000 <no string>
bmAttributes = 0x0080
bMaxPower = 0x0070

Interface 0
bLength = 0x0009
bDescriptorType = 0x0004
bInterfaceNumber = 0x0000
bAlternateSetting = 0x0000
bNumEndpoints = 0x0002
bInterfaceClass = 0x0008 <Mass storage>
bInterfaceSubClass = 0x0006
bInterfaceProtocol = 0x0050
iInterface = 0x0000 <no string>

Endpoint 0
bLength = 0x0007
bDescriptorType = 0x0005
bEndpointAddress = 0x0081 <IN>
bmAttributes = 0x0002 <BULK>
wMaxPacketSize = 0x0400
bInterval = 0x0000
bRefresh = 0x0000
bSynchAddress = 0x0000

Additional Descriptor

bLength = 0x06
bDescriptorType = 0x30
bDescriptorSubType = 0x0f
RAW dump:
0x00 | 0x06, 0x30, 0x0f, 0x00, 0x00, 0x00


Endpoint 1
bLength = 0x0007
bDescriptorType = 0x0005
bEndpointAddress = 0x0002 <OUT>
bmAttributes = 0x0002 <BULK>
wMaxPacketSize = 0x0400
bInterval = 0x0000
bRefresh = 0x0000
bSynchAddress = 0x0000

Additional Descriptor

bLength = 0x06
bDescriptorType = 0x30
bDescriptorSubType = 0x0f
RAW dump:
0x00 | 0x06, 0x30, 0x0f, 0x00, 0x00, 0x00

fre...@vanderzwan.org

unread,
Jan 29, 2026, 5:49:56 AM (2 days ago) Jan 29
to Matthias Apitz, Jin Guojun[VFF], ques...@freebsd.org


> On 29 Jan 2026, at 08:59, Matthias Apitz <gu...@unixarea.de> wrote:
>
> # mount_ntfs-3g /dev/da0p1 /mnt
>
> # dd if=/dev/zero of=/mnt/file bs=8m count=1000
> 1000+0 records in
> 1000+0 records out
> 8388608000 bytes transferred in 183.003888 secs (45.838.414 bytes/sec)
>
> # dd if=/dev/da0 of=/dev/null bs=8m count=1000
> 1000+0 records in
> 1000+0 records out
> 8388608000 bytes transferred in 67.147415 secs (124.928.234 bytes/sec)
>


You are writing to an NTFS filesystem and reading a raw disk. That's comparing apples and pears.

Cheers,
Paul


Jin Guojun[VFF]

unread,
Jan 29, 2026, 6:10:25 PM (2 days ago) Jan 29
to Matthias Apitz, ques...@freebsd.org
WDC does not provide a technical specification for the Western Digital
Elements 2621, so we cannot determine its writing speed.

Typically, disk (rotational and SSD) writing speed is about 10-20%
slower than their reading speed.

Some low-quality SSDs have a writing speed that is only 1/3 of their
reading speed, but this should not be the case for spinning disks.

A low-quality USB interface (port) may cause writing speed low, but I
have not seen anything lower than 50% of the spec rate (however this is
unknown).

The Microsoft file system may also slow down the writing throughput, but
it should not drop significantly for large data transfers.

You can use "iostat 3" command to monitor the I/O progress. The transfer
rate should be smooth as below. If some bumpy rates appear, it indicates
potential hardware issues.

You may try using different USB ports on different computers, testing
UFS file systems or even using a raw disk by shrinking the NTFS
partition and creating a new empty slice like p2 (dd if=/dev/zero
of=/dev/da0p2). Be aware that the inner disk transfer rate can be much
slower than the outer disk tracks.

#iostat 3

   0    16 23.2    15  0.34 27.3     1  0.03 64.0  1431 89.46  0  0  1 
1 98
   0    16 31.6     7  0.20  6.7     1  0.01 64.0  1426 89.15   0 0  1 
0 99
   0    16 20.0     0  0.00  6.0     0  0.00 64.0  1478 92.40   0 0  1 
1 99
   0    16 14.7     1  0.01  0.0     0  0.00 64.0  1429 89.30   0 0  1 
1 99
   0    16 23.2     1  0.02  4.0     0  0.00 64.0  1435 89.68   0 0  1 
1 99
   1    76 32.0     1  0.02 32.0     1  0.02 64.0   242 15.14   0 0  0 
0 99
...

   0    16 32.0     1  0.02  4.0     0  0.00  984    83 80.10  0  0  1 
0 99
   0    16 12.0     1  0.01  0.0     0  0.00  978    86 81.72   0 0  1 
0 99
   0    16 32.0     2  0.06  4.0     0  0.00  985    82 79.09   0 0  1 
0 99
   0    16  4.0     0  0.00 32.0     0  0.01  988    83 80.51   0 0  1 
0 99
   0    16 20.0     0  0.01 12.2     1  0.01  987    85 82.29   0 0  1 
0 99
   0    16  0.0     0  0.00 13.3     1  0.01  958    90 84.39   1 0  1 
0 98
   0    16 22.7     1  0.03  0.0     0  0.00  988    83 79.68   0 0  1 
0 99
   0    16 68.0     1  0.05  0.0     0  0.00  984    83 80.11   0 0  1 
0 99
   1    76 30.3     3  0.08  0.0     0  0.00  882    34 28.87   0 0  0 
0 99



Jin Guojun[VFF]

unread,
Jan 29, 2026, 6:39:53 PM (2 days ago) Jan 29
to Matthias Apitz, ques...@freebsd.org
On 1/29/26 15:12, Jin Guojun[VFF] wrote:
> ... snapped
>
> You may try using different USB ports on different computers, testing
> UFS file systems or even using a raw disk by shrinking the NTFS
> partition and creating a new empty slice like p2 (dd if=/dev/zero
> of=/dev/da0p2). Be aware that the inner disk transfer rate can be much
> slower than the outer disk tracks.
>
In your R/W tests, the reading test is accessing on the very outer
tracks. If the NTFS file system is nearly full, the writing test is
writing to inner tracks.

You can test the inner reading speed by using skip=#### in dd command.

dd if=/dev/da0 of=/dev/null bs=1m skip=800k    # for 1TB drive

dd if=/dev/da0 of=/dev/null bs=1m skip=1800k    # for 2TB drive, etc

This may provide more information on drive performance and test results.

Best,

-Jin


Reply all
Reply to author
Forward
0 new messages