Fastest way to copy video files to USB connected on Vero 4k

I have NTFS Seagate 8TB Backup Plus HDDs attached to my Vero.
They are SMR drives, not know for performance, but fine for write once and read many.
The USB 2.0 is a bit of a bottleneck but your speeds should be faster than <1.5 MB/s!
I can usually get just under 30 MB/s at best but after the update I’ve been getting around 15 MB/s.
This is coming from a Windows 10 laptop SSD hardwired to the same switch as my Vero.
Don’t waste your time formatting thinking you will gain write performance over the network.
Both NTFS and Ext4 will both be faster than the USB 2.0 interface.
The Vero will perform better with Ext4 if you have other services running in the background on the Vero like torrents or something.
If all you do is media playback, there’s no measurable difference.
Trust me, I’ve tested this several times with over eight different drives.
There’s definitely something going on, but I’d like to see what performance you get transferring a file to the Vero’s local on chip storage.

I just ran a test using iperf and things looked fine with the new update.

osmc@osmc:~$ iperf3 -R -c 192.168.50.14
Connecting to host 192.168.50.14, port 5201
Reverse mode, remote host 192.168.50.14 is sending
[  5] local 192.168.50.226 port 43684 connected to 192.168.50.14 port 5201
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.00   sec   103 MBytes   860 Mbits/sec
[  5]   1.00-2.00   sec   102 MBytes   860 Mbits/sec
[  5]   2.00-3.00   sec   102 MBytes   851 Mbits/sec
[  5]   3.00-4.00   sec   102 MBytes   857 Mbits/sec
[  5]   4.00-5.00   sec   102 MBytes   859 Mbits/sec
[  5]   5.00-6.00   sec   103 MBytes   866 Mbits/sec
[  5]   6.00-7.00   sec   103 MBytes   862 Mbits/sec
[  5]   7.00-8.00   sec   103 MBytes   867 Mbits/sec
[  5]   8.00-9.00   sec   102 MBytes   859 Mbits/sec
[  5]   9.00-10.00  sec   102 MBytes   859 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-10.00  sec  1.00 GBytes   860 Mbits/sec                  sender
[  5]   0.00-10.00  sec  1.00 GBytes   860 Mbits/sec                  receiver

iperf Done.
osmc@osmc:~$ iperf3 -c 192.168.50.14
Connecting to host 192.168.50.14, port 5201
[  5] local 192.168.50.226 port 43688 connected to 192.168.50.14 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.01   sec  91.5 MBytes   764 Mbits/sec    0    222 KBytes
[  5]   1.01-2.00   sec   100 MBytes   844 Mbits/sec    0    222 KBytes
[  5]   2.00-3.01   sec   101 MBytes   846 Mbits/sec    1    212 KBytes
[  5]   3.01-4.00   sec  95.8 MBytes   807 Mbits/sec    0    212 KBytes
[  5]   4.00-5.00   sec   104 MBytes   876 Mbits/sec    0    212 KBytes
[  5]   5.00-6.00   sec   104 MBytes   876 Mbits/sec    0    212 KBytes
[  5]   6.00-7.00   sec  97.6 MBytes   818 Mbits/sec    1    174 KBytes
[  5]   7.00-8.01   sec   101 MBytes   839 Mbits/sec    0    211 KBytes
[  5]   8.01-9.01   sec  96.6 MBytes   814 Mbits/sec    0    211 KBytes
[  5]   9.01-10.01  sec   100 MBytes   838 Mbits/sec    1    212 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.01  sec   993 MBytes   832 Mbits/sec    3             sender
[  5]   0.00-10.01  sec   993 MBytes   832 Mbits/sec                  receiver

And that was ran at the same time I had a transfer going.

Untitled

Is there a way to tell iperf to read/write the test file from the USB attached device though?
That would be more telling.

You can use the -f to read from a file instead of using a random pattern but I doubt that will give you the result you want.

You can measure the read speed of a drive by doing
dd if='<path of large file on the drive>' of=/dev/null bs=4M count=1000
or if you want to see how fast Kodi can access it (rather than the OS), start copying a large file from the drive to the Vero’s internal flash memory using the Kodi file manager, and see what the transfer speed settles down to. (The flash write speed is likely faster than the USB 2.0 read speed, so this should be valid).

EDIT: and presumably copying a file from flash memory onto the drive (instead of to /dev/null) would test the drive’s write speed - again, USB 2.0 will bottleneck before the flash storage read speed).

Yeah, but we would want to specify the write destination, not the read destination.
If we can tell iperf3 to write to the USB attached storage then we would get an idea of the drop off between local flash/memory and USB.
The iperf3 test may prove that the network is healthy, but if we specify the destination to his USB and it only gets <1.5 MB/s then I would feel pretty confident that the issue is the USB cable, or the drive, or maybe something else like a change in the USB driver or something new to the update.
Might even be something with NTFS.

That’s where using the dd command that @angry.sardine suggested can help. You can use dd to test the read speed, and you could do something like:

dd if=/dev/zero of=/path/to/usb/drive/file bs=4M count=1000 status=progress

to create a file on the USB drive and check the write speed.

But we don’t want the read speed of the USB device, we want the write speed of the USB device.
@Kthor1 is suffering from slow writes when writing to the USB device from over the network.

But maybe I’m missing something.

I edited my response to clarify it. The dd command I gave will test the write speed of a drive.

I think something has changed in the update, maybe regarding NTFS, but I need to do more testing.

This doesn’t look good and reflects the slower speeds seen when transfering over the network also:

osmc@osmc:/media/Seagate 8TB 6$ pv ~/Backup/test.rar > /media/"Seagate 8TB 6"/test.rar
 999MiB 0:01:06 [14.9MiB/s] [========================================================================>] 100%

Unfortunately I don’t have any spare external drives right now to play around with.
What I’d like to do is format one with Ext4 and one with NTFS, then see the difference, if any.
I suspect something may have changed with how NTFS is being used in userspace with the new kernel, but I’m no Linux expert.

I’m also seeing memory usage peak at 40% and CPU usage peak around 65% on all 4 cores during file transfer whether I go from local storage to USB NTFS HDDs or back.
This is much higher than I have seen in the past.
Transferring from USB NTFS HDD to local storage peaks at USB 2.0 real world limitations around 30 MB/s, in line with what I used to see when transferring files to the Vero before the update.

osmc@osmc:/media/Seagate 8TB 6$ pv ~/Backup/test.rar > /media/"Seagate 8TB 5"/test.rar
 999MiB 0:01:22 [12.1MiB/s] [========================================================================>] 100%
osmc@osmc:/media/Seagate 8TB 6$ pv ~/Backup/test.rar > /media/"Seagate 8TB 4"/test.rar
 999MiB 0:01:16 [13.0MiB/s] [========================================================================>] 100%
osmc@osmc:/media/Seagate 8TB 6$ pv ~/Backup/test.rar > /media/"Seagate 8TB 3"/test.rar
 999MiB 0:01:11 [13.9MiB/s] [========================================================================>] 100%
osmc@osmc:/media/Seagate 8TB 6$ pv ~/Backup/test.rar > /media/"Seagate 8TB 2"/test.rar
 999MiB 0:01:18 [12.7MiB/s] [========================================================================>] 100%
osmc@osmc:/media/Seagate 8TB 6$ pv ~/Backup/test.rar > /media/"Seagate 5TB"/test.rar
 999MiB 0:01:09 [14.4MiB/s] [========================================================================>] 100%
osmc@osmc:/media/Seagate 8TB 6$ pv /media/"Seagate 8TB 5"/test.rar > ~/Backup/test.rar
 999MiB 0:00:31 [31.3MiB/s] [========================================================================>] 100%

Writing to the local storage over the network starts fast but slows down to below 25 MB/s.

Untitled

Try the dd command I suggested. It will test raw write speed. No reading from another drive/network. Just the raw write speed to the drive.

Writing to two partitions on the same drive (Seagate Backup Plus 4G re-partitioned). First is ext4, second NTFS.

osmc@vero4tv:/mnt/1Text4/Downloads$ pv ~/testfile.iso > /mnt/1Text4/testfile.iso
3.09GiB 0:01:46 [29.7MiB/s] [======================================================================================================>] 100%
osmc@vero4tv:/mnt/1Text4/Downloads$ pv ~/testfile.iso > /media/Seagate\ Backup\ Plus\ Drive/testfile.iso
3.09GiB 0:03:24 [15.5MiB/s] [======================================================================================================>] 100%

Reading from HDD to emmc is the same for both partitions: 26.6MiB/s vs 26.1MiB/s.

Wow!
Just as I expected.
Huge write losses for NTFS.
That’s unfortunate.
I can live with it though since I just came to accept that writing to the Vero USB attached devices would be slow so I always queued my transfers during down time or over night.
30 MB/s or 15 MB/s makes no difference to me as long as it’s done overnight.
If I was a developer, it’d drive me crazy because a 50% loss on an upgrade is crazy.
But <1.5 MB/s might not finish a transfer queue overnight!
I wonder why @Kthor1 is getting <1.5MB/s.
But we haven’t heard from him in a few days so who know?