Hello Virtualhere community
I have been tasked by a small Veterinary practice to allow them to transfer data from their x-ray plate reader over to a diagnostics laptop over the network.
Essentially, a digital x-ray plate is fed into the machine, which reads and transfers (a relatively small amount of) data over USB 2.0 to the laptop.
After some evaluation of virtualhere loaded onto a Pi2, the results I am getting are very slow (around an excruciating 0.9 - 1.3Mbit/s transfer speed). This is around 5x slower than being plugged in physically to the machine, which is limited instead as to how fast the machine can read from the plate. After the plate has finished reading and has been 'spat out' (technical term) the transmission still continues for over a minute with virtualhere.
Devices I have tried running the server on:
- RPi 2 (100Mb wired)
- RPi 3+ (100Mb wired)
- Macbook Pro (1000Mb wired)
- various tweaks of the compression settings in the config.ini
All testing resulted in the same ~1Mb/s transfer rate. Initially I thought it was a CPU issue with the RPi 2, but this turned out not to be the case.
Client throughout testing is a laptop running Win10 over AC wifi (reporting around 400-600Mb/s) with pings of >1 - 2ms to each server tested.
I have also tested a simple USB memory stick from each server to the client machine, this yielded the following throughput:
- 60Mb/s on the RPi 2 server
- 90Mb/s on RPi3+ server
- 150+Mb/s with the Macbook as a server
What steps could I take to diagnosing the issue here?
Thanks!!
Reuben
.
Its almost certainly a network latency issue.
Even though its LAN and the latency is probably < 1ms it sounds like the transfer is taking a huge amount of very small packets to send the image. So there is no way around this as its a physical limitation.
Sometimes scanners to the same thing. These types of devices are written to work with usb cable and so they send very many small packets and are not optimized for network transmission because if that were the case they would use much bigger packets for transferring data.