"""
The first order of business was to figure out why my system was much
slower than the theoretical performance. In short, this was due to implementation details of our USB-to-serial converter chip!
Taking a step back, since very few computers have hardware serial ports
in the modern era, we're using FTDI's USB-to-serial modules. These chips
have the notion of a "latency timer", which determines how long the chip
waits before sending an incomplete packet. By default, this parameter is
16 milliseconds.
XMODEM breaks the data into 65536 packets of 1024 bytes, and reads a
single byte (ACK) from the target after each packet. The internal packet
buffer is larger than 1 byte, so the chip waits for the latency timer
period before transfering this ACK to the host. This adds 65536 × 16 milliseconds = 17 minutes, which matches the performance I saw!
On Linux, this can be adjusted by writing to the sysfs:
echo 1 >
/sys/devices/pci0000:00/.../usb1/1-3/1-3:1.0/ttyUSB0/latency_timer
"""
From:
https://www.mattkeeter.com/blog/2022-05-31-xmodem/
--- SoupGate-Win32 v1.05
* Origin: fsxNet Usenet Gateway (21:1/5)