


      KERMIT(1)                  (Columbia U)                 KERMIT(1)



      NAME
           kermit - file transfer, virt. terminal over tty link

      SYNTAX
           kermit c[hilbe] [line] [baud] [esc]

           kermit r[ddilb] [line] [baud]

           kermit s[ddilb] [line] [baud] file ...

      DESCRIPTION
           Kermit provides reliable file transfer and primitive virtual
           terminal communication between machines.  It has been
           implemented on many different computers, including
           microprocessors (see below).  The files transferred may be
           arbitrary ASCII data (7-bit characters) and may be of any
           length.  The file transfer protocol uses small (96
           character) checksummed packets, with ACK/NAK responses and
           timeouts.  Kermit currently uses a ten second timeout and
           ten retries.

           The arguments to kermit are a set of flags (no spaces
           between the flags), three optional args (which, if included,
           must be in the same order as the flags which indicate their
           presence), and, if this is a Send operation a list of one or
           more files.  (It is similar in some way to the tar command
           structure).

           Kermit has three modes, Connect, Send, and Receive.  The
           first is for a virtual terminal connection, the other two
           for file transfer.  These modes are specified by the first
           flag, which should be c, s, or r, respectively.  Exactly one
           mode must be specified.

           The d flag (debug) makes kermit a bit more verbose.  The
           states kermit goes through are printed along with other
           traces of it's operation.  A second d flag will cause kermit
           to give an even more detailed trace.

           Use the h flag (half duplex) in connect mode to make kermit
           echo characters typed on the local keyboard, instead of
           assuming that the remote machine will do the echoing.  This
           is necessary when communicating with half duplex systems
           like IBM CMS.

           The i flag (image) allows slightly more efficient file
           transfer between UNIX machines.  Normally (on Kermits
           defined to run on UNIX systems) newline is mapped to CRLF on
           output, CR's are discarded on input, and bytes are masked to
           7 bits.  If this is set, no mapping is done on newlines, and
           all eight bits of each byte are sent or received.  Caution:
           this flag must not be set if the remote machine is one which



      Page 1  






      KERMIT(1)                  (Columbia U)                 KERMIT(1)



           sends parity (8 bit characters).  This means IBM CMS
           systems.

           The l flag (line) specifies the tty line that kermit should
           use to communicate with the other machine.  This is
           specified as a regular filename, like "/dev/tty1".  If no l
           option is specified, standard input is used and kermit
           assumes it is running on the remote host (ie. NOT the
           machine to which your terminal is attached).

           The b flag (baud) sets the baud rate on the line specified
           by the l flag.  No changes are made if the b flag is not
           used.  Legal speeds are: 110, 150, 300, 1200, 2400, 4800,
           9600, 19200.

           The e flag (escape) allows the user to set the first
           character of the two character escape sequence for Connect
           mode.  When the escape character is typed, kermit will hold
           it and wait for the next character.  If the next character
           is c or C, kermit will close the connection with the remote
           host.  If the second character is the same as the escape
           character, the escape character itself is passed.  Any
           character other than these two results in a bell being sent
           to the user's terminal and no characters passed to the
           remote host.  All other typed characters are passed through
           unchanged.  The default escape character is '^'.

           The file arguments are only meaningful to a Send kermit.
           The Receiving kermit will attempt to store the file with the
           same name that was used to send it.  UNIX kermits normally
           convert outgoing file names to uppercase and incoming ones
           to lower case (see the f flag).  If a filename contains a
           slash (/) all outgoing kermits will strip off the leading
           part of the name through the last slash.

      EXAMPLE
           For this example we will assume two UNIX machines.  We are
           logged onto "unixa" (the local machine), and want to
           communicate with "unixb" (the remote machine).  There is a
           modem on "/dev/tty3".

           We want to connect to "unixb", then transfer "file1" to that
           machine.

           We type:   kermit clb /dev/tty3 1200

           Kermit answers:   Kermit: connected...

           Now we dial the remote machine and connect the modem.
           Anything typed on the terminal will be sent to the remote
           machine and any output from that machine will be displayed
           on our terminal.  We press RETURN, get a "login:" prompt and



      Page 2      






      KERMIT(1)                  (Columbia U)                 KERMIT(1)



           login.

           Now we need to start a kermit on the remote machine so that
           we can send the file over.  First we start up the remote,
           (in this case receiving) kermit, then the local, (sending)
           one.  Remember that we are talking to unixb right now.

           We type:   kermit r
                   (there is now a Receive kermit on unixb)

           We type ^ (the kermit escape character (shift-6)) and then c
           to kill the local (Connecting) kermit.

           Kermit answers:   Kermit: disconnected.

           We type:   kermit slb /dev/tty3 1200 file1

           Kermit answers: Sending file1 as FILE1

           When the transmission is finished, kermit will type either
           "Send complete", or "Send failed.", depending on the success
           of the transfer.  If we now wanted to transfer a file from
           unixb (remote) to unixa (local), we would use these
           commands:

                   kermit clb /dev/tty3 1200
                     (connected to unixb)
                   kermit s file9
                   ^c (up-arrow c not control-c)
                     (talking to unixa again)
                   kermit rl /dev/tty3 1200

           After all the transfers were done, we should connect again,
           log off of unixb, kill the Connect kermit and hang up the
           phone.

           Detail on other implementations and on the protocol is given
           in the Kermit Users Guide, and the Kermit Protocol Handbook.

      FEATURES
           The KERMIT Protocol uses only printing ASCII characters,
           Ctrl-A, and CRLF.  Ctrl-S/Ctrl-Q flow control can be used
           "underneath" the Kermit protocol (IXOFF line discipline on
           System V UNIX).

           Since BREAK is not an ASCII character, kermit cannot send a
           BREAK to the remote machine.  On some systems, a BREAK will
           be read as a NUL.

           This kermit does have timeouts when run under UNIX, so the
           protocol is stable when communicating with "dumb" kermits
           (that don't have timeouts).



      Page 3     






      KERMIT(1)                  (Columbia U)                 KERMIT(1)



      OTHER IMPLEMENTATIONS
           See the Kermit Users Guide.

      SEE ALSO
           stty(1);
           Kermit Users Guide, Fourth Edition (4 May 83), Frank da
           Cruz, Daphne Tzoar, Bill Catchings; Kermit Protocol Manual,
           Protocol Version 3 (29 April 83), Frank da Cruz, Bill
           Catchings.  Both documents are from the Columbia University
           Center for Computing Activities, New York, New York, 10027,
           (212) 280-3703.

      AUTHORS
           KERMIT kernel by Bill Catchings, Columbia University Center
           for Computing Activities.  KERMIT-UNIX adaptation by Chris
           Maio and Bob Cattani, Columbia University Computer Science
           Dept.  Local mods for v6, System III, and System V by Walter
           Underwood. Includes bug fixes from Jim Guyton at RAND-UNIX.
           Enhanced for better use with System V by Ridge Computers.

      DIAGNOSTICS
           cannot open device
                The file named in the line argument did not exist or
                had the wrong permissions.

           bad line speed
                The baud argument was not a legal speed.

           Could not create file
                A Receive kermit could not create the file being sent
                to it.

           nothing to connect to
                A Connect kermit was started without a line argument.

      BUGS AND CAVEATS
           There is no locking on the use of the outgoing line.
           Several users could run kermit (or anything else) on the
           line simultaneously.

           The acronym (KL10 Error-free Reciprocal Micro Interconnect
           over TTY lines) is charming, but strained.

           This implementation does not send or process error-message
           packets.

           Eight-bit quoting is not implemented.








      Page 4    



