I want to thank all the participants for the tests. Here's the summary of what we have found:
Connections
The benchmark program connected to port 5555 of the scope over LAN. We used two distinct methods to read data.
Block method
This is explained in programming manual for DS1000Z series.
:WAV:STAR <block begin>
:WAV:STOP <block end>
:WAV:DATA?
for example
:WAV:STAR 1
:WAV:STOP 250000
:WAV:DATA?
Once the data is received, the next set of commands can be sent to the scope. In most cases, it is possible to send the next set of commands earlier - as soon as the scope starts sending the data back. But sometimes such early response doesn't work. Since the early response only gains milliseconds per MByte, there's no reason to use it.
The block method works for every scope and is implemented in version 4 of the benchmark software (attached to post #27). Instructions are in post #41.
Even though the documentation limits the block size to 250000, it is possible to use block size of 1000000, which considerably speeds the transfer up, but we had a failure with DS2072A (see post #51). This method is implemented in version 7 of the benchmark software (attached to post #49).
Stream method
This is explained in programming manual for DS4000 series, except we do not do status queries.
First, these two commands are sent
:WAV:RES
:WAV:BEG
The data command follows.
:WAV:DATA?
Each command gets a response which contains some of the data (possibly zero). If we receive zero, we wait 50ms, then issue the data request command again. If it's not zero, we retrieve the data, then send the data command.
This is continuing until all the data is retrieved.
At the end, we do
:WAV:END
This method works on DS4000 series (as expected) and even provides slight improvement over the block method.
On DS2000A, this method is very inefficient because the scope doesn't organize the continuous data stream but rather sends data in blocks of 126976 (0x1f000) bytes. Because block size is small, this is much slower than the block method.
This doesn't work on DS1000Z series at all.
This is implemented in version 9 of the benchmark software (attached to post #61).
Data rates
Approximate data rates are:
DS1000Z - 1.7 MBytes/sec
DS2000A - 0.2 MBytes/sec (could be better if 1000000 block size worked, but it didn't)
DS4000 - 0.5 MBytes/sec
Approximate times to transfer all the deep memory data from the scope to PC:
DS1000Z (24 MBytes) - 15 sec
DS2000A (56 MBytes) - 4 min 40 sec
DS4000 (280 MBytes) - 8 min 50 sec