Skip to content
/ ucom Public

Cruft-free serial terminal

License

Notifications You must be signed in to change notification settings

arachsys/ucom

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 

Repository files navigation

ucom
====

ucom is a serial terminal in the style of cu, minicom and GNU screen, but
without legacy modem control, file transfer or a nested terminal emulation
layer. In fewer than 150 lines of C, it provides a clean interactive
session with a serial port, aiming for both correctness and efficiency.


Usage
-----

Run with a serial port as argument, it switches both this port and
the local terminal into raw mode, then bidirectionally copies between
the two. The local quit key (typically ^\ on Linux and BSD) can be used
to disconnect, restore the terminal settings and exit.

To set the baud rate and line characteristics, use stty on the serial
port before running ucom. For example,

  stty 115200n8 < /dev/ttyS0
  ucom /dev/ttyS0

Similarly, to change the default quit key to ^X on the local terminal, use

  stty quit ^X

If the quit key is disabled with stty quit undef, the terminal can still be
terminated gracefully by sending it a SIGHUP, SIGINT, SIGQUIT or SIGTERM.

It can be convenient to wrap ucom in a shell function such as

  ucom() {
    stty "${@:2}" >/dev/null < "$1" && command ucom "$1"
  }

which allows the port to be configured with additional arguments.


Building and installing
-----------------------

Run 'make install' at the top of the source tree to install ucom in /bin.
Alternatively, you can set DESTDIR and/or BINDIR to install in a different
location, or make, strip and copy the binary into place manually.

The program should be portable to any reasonably modern POSIX system,
including Linux and BSD. However, macOS poll() still fails on character
devices and this longstanding bug will break ucom.

Please report any problems or bugs to Chris Webb <chris@arachsys.com>.


Copying
-------

This software was written by Chris Webb <chris@arachsys.com> and is
distributed as Free Software under the terms of the MIT license in COPYING.