how to communicate with devices via a USB-to-RS232 wire in Linux?
Categories:
Communicating with Devices via USB-to-RS232 in Linux

Learn how to set up, identify, and communicate with serial devices connected to your Linux system using a USB-to-RS232 adapter. This guide covers driver verification, device identification, and practical communication methods.
USB-to-RS232 (serial) adapters are essential tools for interacting with legacy hardware, embedded systems, networking equipment, and various other devices that still rely on the RS232 serial communication standard. While modern computers often lack native serial ports, these adapters bridge the gap, allowing your Linux system to communicate with such devices. This article will guide you through the process of setting up and using these adapters effectively.
Understanding USB-to-RS232 Adapters and Linux Drivers
Most USB-to-RS232 adapters rely on specific chipsets, with the most common ones being FTDI (Future Technology Devices International), Prolific, and CH340/CH341. Fortunately, the Linux kernel includes built-in drivers for the majority of these chipsets, making the setup process relatively straightforward. When you plug in an adapter, the kernel typically loads the appropriate module automatically.
It's crucial to ensure the correct driver is loaded for your specific adapter. An incorrect or missing driver will prevent your system from recognizing the serial port, leading to communication failures. The lsusb
command can help identify the chipset, and dmesg
will show kernel messages related to device detection and driver loading.
flowchart TD A[Plug in USB-to-RS232 Adapter] --> B{Kernel Detects New USB Device} B --> C{Kernel Identifies Chipset (e.g., FTDI, Prolific)} C --> D{Loads Appropriate Driver Module (e.g., ftdi_sio, pl2303)} D --> E{Creates Serial Device Node (e.g., /dev/ttyUSB0)} E --> F[Device Ready for Communication]
Typical USB-to-RS232 Adapter Detection Flow in Linux
Identifying Your Serial Port
Once the adapter is connected and its driver loaded, Linux will create a device file, usually in the /dev/
directory, to represent the serial port. These files typically follow a naming convention like /dev/ttyUSBX
(for USB serial adapters) or /dev/ttySX
(for native serial ports). Identifying the correct device file is the first step before you can start communicating.
To find your newly created serial port, you can use a combination of dmesg
and ls /dev/tty*
after plugging in the adapter. The dmesg
command will show kernel messages, often indicating which ttyUSB
device was assigned.
# Clear dmesg buffer and plug in adapter
sudo dmesg -c
# Plug in your USB-to-RS232 adapter
dmesg | grep tty
Using dmesg
to identify the assigned serial port.
# List all tty devices
ls /dev/tty*
Listing all tty
devices to find the new one.
/dev/ttyUSB0
is common, but if you have multiple USB serial devices, it might be /dev/ttyUSB1
, /dev/ttyUSB2
, etc. Always verify the correct device before attempting communication.Communicating with the Serial Device
After identifying the serial port, you can use various tools to communicate with your device. The most common and versatile tools are minicom
, screen
, and picocom
. Before using any of these, you'll need to know the serial communication parameters of your target device, such as baud rate, data bits, parity, and stop bits (e.g., 9600, 8N1).
Permissions: By default, only the root
user and members of the dialout
group have read/write access to serial ports. You'll likely need to add your user to the dialout
group to avoid permission issues.
# Add your user to the 'dialout' group
sudo usermod -a -G dialout $USER
# You will need to log out and log back in for the changes to take effect.
Adding your user to the dialout
group for serial port access.
1. Install a Serial Terminal Program
Choose and install a serial terminal program. minicom
is very popular, screen
is often pre-installed and versatile, and picocom
is lightweight.
2. Configure and Connect (Example: minicom)
For minicom
, you'll typically run minicom -s
to enter setup, configure the serial port settings (baud rate, data bits, parity, stop bits), and then save the configuration. For screen
or picocom
, you can specify settings directly on the command line.
3. Send and Receive Data
Once connected, you can type to send data and observe incoming data from your serial device. Ensure your device is powered on and correctly configured for serial communication.
minicom
Install minicom (if not already installed)
sudo apt update && sudo apt install minicom
Start minicom in setup mode to configure
minicom -s
Inside minicom setup:
1. Select 'Serial port setup'
2. Press 'A' to change 'Serial Device' to /dev/ttyUSB0 (or your device)
3. Press 'E' to change 'Bps/Par/Bits' (e.g., 9600 8N1)
4. Press 'F' to set 'Hardware Flow Control' to No
5. Press 'G' to set 'Software Flow Control' to No
6. Exit setup and save as dfl (default)
Start minicom with default settings
minicom
screen
Install screen (if not already installed)
sudo apt update && sudo apt install screen
Connect to the serial port at 9600 baud, 8 data bits, no parity, 1 stop bit
screen /dev/ttyUSB0 9600
To exit screen: Ctrl+A, then K, then Y
picocom
Install picocom (if not already installed)
sudo apt update && sudo apt install picocom
Connect to the serial port at 9600 baud, 8 data bits, no parity, 1 stop bit
picocom -b 9600 /dev/ttyUSB0