5 Linux / Unix Commands For Connecting To The Serial Console

Most embedded Linux / BSD systems such as routers, servers and nas devices comes with console interface (serial port with RS-232). BIOS can uses this, and after boot BIOS screen I/O is redirected so that you can use the device. RS-232 is also used for communicating to headless server, where no monitor or keyboard is installed, during boot when operating system is not running yet and therefore no network connection is possible. You need to use a serial cable between your computer and embedded system or server. In this post I will cover five conman utilities used for serial communication under Linux / Unix / *BSD and Mac OS X.

ADVERTISEMENTS

Find out information about your serial ports

Type the following dmesg command:
$ dmesg | egrep --color 'serial|ttyS'
Sample outputs:

[    1.245258] serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
[    1.265727] serial8250: ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A
[    1.286713] 00:07: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
[    1.307321] 00:08: ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A

You can use setserial command which is designed to set and/or report the configuration information associated with a serial port:
$ setserial -g /dev/ttyS[0123]
Sample outputs:

/dev/ttyS0, UART: 16550A, Port: 0x03f8, IRQ: 4
/dev/ttyS1, UART: 16550A, Port: 0x02f8, IRQ: 3
/dev/ttyS2, UART: unknown, Port: 0x03e8, IRQ: 4
/dev/ttyS3, UART: unknown, Port: 0x02e8, IRQ: 3

#1 cu command

The cu command is used to call up another system and act as a dial in terminal. cu command is installed on many Unix like systems including OpenBSD/AIX/Solaris and so on. You can use it as follows:

cu -l /dev/device -s baud-rate-speed

In this example, I’m using /dev/ttyS0 with 19200 baud-rate:

cu -l /dev/ttyS0 -s 19200

Sample outputs:

Fig.01: cu command in action

Fig.01: cu command in action

To exit enter tilde dot (~.).

#2 screen command

Use the screen command as follows:
$ screen /dev/device baud-rate
$ screen /dev/ttyS0 19200
$ screen /dev/ttySUSB0 19200,cs8

Sample outputs:

Fig.02: serial command connected to my personal router powered by dd-wrt

Fig.02: serial command connected to my personal router powered by dd-wrt

#3 minicom command

minicom command is a communication program which somewhat resembles the shareware program TELIX from old good MS-DOS days. Type minicom to connect:
$ minicom
Sample outputs:

Fig.03: minicom connected to my m0n0wall embedded firewall

Fig.03: minicom connected to my m0n0wall embedded firewall

See how to install and use minicom under Linux operating systems.

#4 putty command

PuTTY is a free and open source gui X based terminal emulator client for the SSH, Telnet, rlogin, and raw TCP computing protocols and as a serial console client. It works under Linux, Unix, Mac OS X, MS-Windows and few other operating systems. See how to configure and use putty for cisco routers:

Fig.04: putty in action

Fig.04: putty in action

You can use the apt-get or yum command to install putty:
$ sudo apt-get install putty

#5 tip command

The tip command is used as a serial terminal. tip command can be found under AIX/HP-UX/Solairs/*BSD/Linux operating systems. The syntax is:
tip -19200 device
tip -19200 s0
tip -19200 ttys0

How do I redirect Linux / BSD console output over serial port?

See our previous howtos about setting and redirecting console output over serial port:

  1. OpenBSD: Set a serial console
  2. FreeBSD: Set a serial console
  3. Debian / Ubuntu Linux: Set a serial console
  4. RHEL / CentOS / Fedora Linux: Set a serial console

You can also use the KVM over IP client as described here for serial console redirection over IP (LAN/WAN).

A note about MS-Windows users

If you forced to use MS-Windows, try the following free and open source serial communication programs:

Check out related media

Here is a quick demo of my Soekris router running monowall embedded version. The minicom is used to connect to the device and access BIOS and boot the system:

(Video.01: minicom in action)

🐧 Get the latest tutorials on SysAdmin, Linux/Unix, Open Source & DevOps topics via:
CategoryList of Unix and Linux commands
File Managementcat
FirewallAlpine Awall CentOS 8 OpenSUSE RHEL 8 Ubuntu 16.04 Ubuntu 18.04 Ubuntu 20.04
Network Utilitiesdig host ip nmap
OpenVPNCentOS 7 CentOS 8 Debian 10 Debian 8/9 Ubuntu 18.04 Ubuntu 20.04
Package Managerapk apt
Processes Managementbg chroot cron disown fg jobs killall kill pidof pstree pwdx time
Searchinggrep whereis which
User Informationgroups id lastcomm last lid/libuser-lid logname members users whoami who w
WireGuard VPNAlpine CentOS 8 Debian 10 Firewall Ubuntu 20.04

ADVERTISEMENTS
15 comments… add one
  • Sirvesh Aug 29, 2012 @ 1:24

    I will recommend gtkterm in place of minicom or cutecom.

    • Jonathan Aug 29, 2012 @ 2:33

      Exactly…. gtkterm is the best!!!!

  • folti Aug 30, 2012 @ 5:51

    Be advised, that screen’s serial terminal support is optional and some Linux distros disable it, citing redundancy issues. Namely Debian and Ubuntu.

    • Michael Moritz Feb 20, 2013 @ 15:33

      Nah Debian Ubuntu have support for serial terminal in screen since EVER

  • folti Aug 30, 2012 @ 5:59

    Oh and kermit missing from the list ;)

  • Leonardo Amaral Aug 30, 2012 @ 9:41

    Python-serial have a utility named miniterm.py. I like it because it have a full support for colors and UTF and is very tiny if you have python.

    leonardo@betty:~$ miniterm.py --help
    Usage: miniterm.py [options] [port [baudrate]]
    
    Miniterm - A simple terminal program for the serial port.
    
    Options:
      -h, --help            show this help message and exit
      -p PORT, --port=PORT  port, a number (default 0) or a device name
                            (deprecated option)
      -b BAUDRATE, --baud=BAUDRATE
                            set baud rate, default 9600
      --parity=PARITY       set parity, one of [N, E, O, S, M], default=N
      -e, --echo            enable local echo (default off)
      --rtscts              enable RTS/CTS flow control (default off)
      --xonxoff             enable software flow control (default off)
      --cr                  do not send CR+LF, send CR only
      --lf                  do not send CR+LF, send LF only
      -D, --debug           debug received data (escape non-printable chars)
                            --debug can be given multiple times: 0: just print
                            what is received 1: escape non-printable characters,
                            do newlines as unusual 2: escape non-printable
                            characters, newlines too 3: hex dump everything
      --rts=RTS_STATE       set initial RTS line state (possible values: 0, 1)
      --dtr=DTR_STATE       set initial DTR line state (possible values: 0, 1)
      -q, --quiet           suppress non error messages
      --exit-char=EXIT_CHAR
                            ASCII code of special character that is used to exit
                            the application
      --menu-char=MENU_CHAR
                            ASCII code of special character that is used to
                            control miniterm (menu)
    
  • PcPostar Oct 22, 2012 @ 21:32

    Hi, gr8 article!
    I’m looking for a way to communicate over RS232 with non-ASCII as well.
    How can I send non-ASCII character to serial?
    how can i read a non-ASCII character form serial?

    where can I get setserial? All links on the web seem to be dead.
    Does anyone have a copy of that program?

    • 🐧 nixCraft Oct 22, 2012 @ 22:05

      Use your package manager to install setserial.

      All links on the web seem to be dead.

      What do you mean by all links are dead? Are you talking about links on our domain cyberciti.biz or external resources?

  • ileadu Feb 8, 2013 @ 9:26

    busybox stty can set device baudrate, too

  • rakesh Jun 25, 2013 @ 12:24

    simply
    >cat /dev/ttyS0 9600

  • PuZZleDucK Aug 15, 2013 @ 23:13

    May I suggest replacing “dmesg | egrep –color ‘serial|ttyS'” with “dmesg | egrep –color ‘serial|ttyS|ttyU'”… I used this to also display my USB-rs232 dongle info.

  • fcassia Oct 23, 2014 @ 15:25

    for a cross-platform alternative, let me mention SerTerm https://code.google.com/p/serterm/
    Just FYI :)

  • Geoffrey Hunter Nov 29, 2016 @ 21:39

    NinjaTerm is another serial terminal option. It is a graphical program that works on Windows/MacOS/Linux. It has features such as ANSI esc. code support, filtering and timestamping.

    DISCLAIMER: I am the author.

  • Martin Sep 16, 2017 @ 22:35

    Try https://tio.github.io

    “tio” is a simple TTY terminal application which features a straightforward commandline interface to easily connect to TTY devices for basic input/output.

Leave a Reply

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

Use HTML <pre>...</pre>, <code>...</code> and <kbd>...</kbd> for code samples.