xmodem crc16 checksum send on linux NACK because stream not flushed, RFC PATCH

Domen Puncer domen at cba.si
Wed Sep 7 13:25:55 UTC 2011


I've been having trouble uploading a file through xmodem with crc16,
every time I got a bunch of NACKs and it just failed. After lots of
googling, I found I'm not the only one [1] [2], and that the cause was
that receiver sent some data which was misinterpreted ("C" chars in my
case, which is crc16 xmodem RX prompt IIRC). Some website suggested
"cat /dev/ttySx" just before sending the file, and that did the trick,
so flushing was the way.

Following trivial patch flushes serial port before starting file
transfer. I DO NOT KNOW if it has any bad effects on any transfers. I
do know that it makes xmodem transfer work in MY case.
Maybe someone with more experience with file transfers could comment on this?

[1] http://www.usenet-forums.com/linux-general/85644-xmodem-checksum-linux.html
[2] http://www.justlinux.com/forum/archive/index.php/t-142901.html

--- src/updown.c.orig   2011-09-07 15:14:44.000000000 +0200
+++ src/updown.c        2011-09-07 15:14:32.000000000 +0200
@@ -302,6 +302,7 @@ void updown(int what, int nr)
  } else

+  m_flush(portfd);
  switch (udpid = fork()) {
    case -1:
      werror(_("Out of memory: could not fork()"));


More information about the minicom-devel mailing list