Serial communication on Linux


Systems engineers often spend a lot of time in a data center configuring servers and other computing and networking equipment. If your role includes these activities, I recommend two items to keep in your toolkit; a RS-232 serial-to-USB converter and a standard DB-9 serial cable. These can be indispensable when you have no other way to access a device. You may need to deploy a new router that has not yet been configured for example. You might need to troubleshoot a firewall appliance that has become inaccessible via SSH. In a “lights-out” environment, particularly, new servers may have a management card that needs to be initialized. A serial connection provides a direct path to a console for accomplishing these tasks.

I will use a SOHO firewall appliance in this example. This device has no mouse, keyboard, monitor, or other GUI capabilities. Equipment like this is generally described as “headless.”

Serial communications

To connect with a device over serial, you need hardware that supports the RS-232 protocol. This is typically a nine-pin DB-9 serial port, often labeled serial, comm, or console. Most older computers have at least one. Most servers still have them, but most laptops and desktops don’t any longer.

Find the serial port

If your system doesn’t already have a serial port, you’ll need to use a converter like the one I mentioned. When you plug in the PL2303 converter to a USB port on your computer, the Linux kernel registers it as a USB TTY device. There are several commands that you can use to query your system for its serial port configuration. Here are a few examples:

# dmesg |grep tty
[252464.891372] usb 6-1: pl2303 converter now attached to ttyUSB0

# setserial -g /dev/ttyUSB[0123]
/dev/ttyUSB0, UART: 16654, Port: 0x0000, IRQ: 0

# ls /dev/serial/by-id/

In my case, it detects the converter as a pl2303 converter (or a Prolific Technology USB serial controller).

Connect a serial cable

Connect your serial cable between the converter and the serial port on the device.

Log in with tio

Over the years, I’ve used different tools, such as Minicom and Screen. Tio is a newer and simpler tool described as “a simple TTY terminal I/O application.” It is available on most Linux distributions, FreeBSD, and OpenWRT, as well as a Snap package. I used the standard package tool to install version 1.32 onto my Red Hat Enterprise Linux 8.1 server:

# dnf info tio
# dnf install tio

Initialize the connection with the tio command. In my experience, Tio didn’t need any advance configuration; it worked out of the box. Be sure that you have the correct device path, as shown above:

# tio /dev/ttyUSB0

# tio /dev/serial/by-id/usb-Prolific_Technology_Inc._USB-Serial_Controller_D-if00-port0

You can use the Ctrl+t command sequence to interact with Tio. For instance, Ctrl+t+? will list available commands, and Ctrl+t+q quits Tio and takes you back to your Linux command prompt.


We rarely think about or even use serial communications these days, but it is still useful. Data center people still need to be familiar with it. Data centers can be remote, and once inside, you’ll want to make sure you have all the proper tools. Besides a good Linux laptop, of course, I recommend the items above for managing those serial-enabled devices when necessary.

This work is licensed under a Creative Commons Attribution-Share Alike 4.0 International License.