I am running TeraTerm 4.92 (SVN# 6484) on Window 10 64-bit. TeraTerm behaves very badly when I connect it to the COM port of a USB CDC ACM (usbser.sys) USB-to-Serial adapter and set the baud rate to 300
(very slow!). My USB-to-serial device uses 64-byte packets for the CDC data endpoint. What I am seeing is that when I copy and paste 384 characters of test data into TeraTerm, TeraTerm will try to send the test data, but then after a while it goes back and tries to send the beginning of the test data, even though some of the data has already been sent. This means that TeraTerm gets stuck in an infinite loop: it sends the first 192 bytes successfully, then it tries to send the more data but the device's buffers are full. After about 2 seconds starts sending the beginning part of the data again, as if it has timed out and it is now retrying. The transfer always times out because I am using a slow baud rate. This goes on indefinitely, even to the point where TeraTerm has sent far more data than was in the original thing I pasted.
If I use PuTTY to do the exact same test, everything works fine. The first few packets get sent quickly because they are filling up buffer space on the USB-to-serial adapter. The next packets on the USB line are NAK'd for a long time until buffer space is available, at which point they get successfully transferred to the device. Therefore, it seems like this is a bug in TeraTerm.
Specifically, I am trying to send the following the text (as a test):
This test was specially designed so that if you break it up into 64-byte packets (like the USB stack on Windows does), then the beginning and ending byte of each packet has a packet ID number. As you can see in this screenshot from my USB Protocol Analyzer
, TeraTerm sends packet 1, then packet 2, then packet 3. Then about every 2 seconds, it sends packet 1 again.
This other bug report doesn't have many details but that person might be suffering from the same problem:http://logmett.com/support-forums/8/cop ... fails-2893
I suspect that TeraTerm is using a timeout when sending serial data and it is automatically retrying if the timeout occurs. This seems really bad to me, and it should not be the default behavior. If people really want this behavior, it might be OK if it were an option.