Multiple Serial Devices in One Terminal

Dear Fans,

I am excited to say that now according to Google Analytics I now actually have fans. Cool. Perhaps I will start selling shirts.  Now for today’s exciting news item. My good friend and all around computer genius [Jim] has produced quite a nice terminal program that can host multiple serial devices in a single prompt. Its super easy to use. In hurry? Grab the git repo: Just add all the devices you want to display as command line arguments and *presto* you have a color coded super prompt:

Multiple device terminal emulator

Multiple Device Serial Terminal! A 21st century HyperTerm

This is a great tool for debugging multiple devices at once. My latest project involves an EZ430 wireless kit and unfortunately I don’t have the $$ for IAR or CodeWorks. *yet*. So I am forced to use gcc which is cool but the Simpliciti network stack for the EZ430 has to be ported over and there are all sorts of hiccups and bugs that plague this sort of wireless network setup.

EZ430 RF2500 boards

Building wireless links == frustration

So, there I was angrily trying to debug the invisible ether when Jim comes along with this beauty. I threw in a couple of Micro FTX boards for USB->Serial, and in no time I had both devices printing out updates over their UART’s and I could see the communication in real time. Check it out:

Debugging multiple devices with a single terminal emulator

Debugging like a pro with a a multiple device terminal emulator. Sweet!

Excited? Yeah most definitlely. Just grab the git repository and you’re good to go.

$ git clone
$ cd terminal
$ ./ --help
usage: [-h] [--quiet] [--baudrate BAUD] [--crlf] [--all] [--mono]

Simple serial terminal that supports multiple devices. If more than one device
is specified, device output is shown in varying colors. All input goes to the
first device.

positional arguments:
DEVICE                Serial device. Specify DEVICE@BAUD for per-device

optional arguments:
-h, --help            show this help message and exit
--quiet, -q           Less verbose output (omit header) (default: False)
--baudrate BAUD, -b BAUD
Default baudrate for all devices (default: 115200)
--crlf, -c            Add CR before incoming LF (default: False)
--all, -a             Send keystrokes to all devices, not just the first one
(default: False)
--mono, -m            Don't use colors in output (default: False)
--raw, -r             Don't escape unprintable characters (default: False)

Note you need the pySerial module to get this running so grab that with your favorite python installer (pip, easy_install, etc). One nickel to the first poster who can figure out the maximum number of devices this thing can support.

till next time,


PS. Get the news hot off the press: Follow the RSS Feed!

This entry was posted in Uncategorized. Bookmark the permalink.

7 Responses to Multiple Serial Devices in One Terminal

  1. MacBoy says:

    I’m going to go out on a limb and say probably 15. These guys really sound like they know what they are doing. I’m a big fan.

  2. Pingback: Python script lets you monitor multiple serial devices at once - Hack a Day

  3. Marcelo says:

    There are only 7 colors, but I think it doesn’t have any hard limit.

    Also, I made a script to do the opposite =)
    I wrote a simple serial multiplexer to communicate with one device from several terminals.
    The common use case I had was one terminal running a logger, another running a test script and one more for user interaction (In case something goes wrong).

  4. Hello,

    why pay for a compiler when you have wonderful free tools? You should be glad to be able to port that stack for use with free tools, because your work will be useful for a wider community.


  5. Pingback: Multiple Serial Devices in One Terminal « adafruit industries blog

  6. Pingback: Connect to multiple serial devices in one terminal « freetronicsblog

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>