在Linux系统中,串口通信是嵌入式开发、设备调试和数据传输的重要手段,掌握正确的串口打开和操作命令是开发者的必备技能,本文将详细介绍Linux下打开串口的完整流程,包括权限检查、设备识别、参数配置及常用操作工具,并通过表格对比不同场景下的命令使用方法,最后附上相关FAQs解答常见问题。

串口设备基础概念
Linux系统中,串口设备通常以/dev/ttySx(x为0,1,2…)表示物理串口,以/dev/ttyUSBx(x为0,1,2…)表示USB转串口设备,在操作串口前,需确认设备是否存在:通过ls /dev/tty*命令列出所有串口设备,或使用dmesg | grep tty查看系统启动时识别的串口信息,若设备未显示,可能需要安装驱动(如pl2303、ch341等USB转串口驱动)。
串口权限配置
默认情况下,普通用户可能无法访问串口设备,需通过以下方式配置权限:
- 用户组法:将当前用户加入dialout组(多数Linux发行版默认串口属组为dialout),执行
sudo usermod -aG dialout $USER后重新登录生效。 - udev规则法:创建规则文件(如
/etc/udev/rules.d/99-usb-serial.rules),添加内容KERNEL=="ttyUSB*", MODE="0666"或SUBSYSTEM=="tty", KERNEL=="ttyUSB*", GROUP="dialout", MODE="0660",执行sudo udevadm control --reload-rules && sudo udevadm trigger使规则生效。
打开串口的常用命令
使用minicom工具
minicom是一款功能强大的串口终端模拟工具,安装后可通过以下步骤打开串口:
sudo apt install minicom # 安装minicom(Debian/Ubuntu系统) minicom -D /dev/ttyUSB0 # 直接打开指定串口
首次使用需配置minicom:运行minicom -s进入设置界面,选择“Serial port setup”,配置串口设备(Serial Device)、波特率(Bps/Parity/Bits)、硬件流控(Hardware Flow Control)等参数,保存退出后即可通过Ctrl+A X退出。

使用screen工具
screen是轻量级的终端复用工具,适合快速调试串口:
sudo apt install screen # 安装screen screen /dev/ttyUSB0 115200 # 打开串口并设置波特率
操作快捷键:Ctrl+A K退出当前窗口,Ctrl+A D分离会话(可通过screen -r重新连接)。
使用cu工具
cu是call-unix的缩写,支持直接与串口设备通信:
sudo apt install cu # 安装cu cu -l /dev/ttyUSB0 -s 115200 # 指定串口和波特率
退出时输入(波浪线加点)。

使用picocom工具
picocom是轻量级串口终端,适合简单调试:
sudo apt install picocom # 安装picocom picocom -b 115200 /dev/ttyUSB0 # 打开串口并设置波特率
退出时按Ctrl+A,再按X确认退出。
串口参数配置详解
串口通信需确保两端参数一致,核心参数包括:
- 波特率(Baud Rate):如9600、19200、115200等,需通过
stty命令在命令行配置,例如stty -F /dev/ttyUSB0 115200。 - 数据位(Data Bits):通常为8位,可通过
stty -F /dev/ttyUSB0 cs8设置。 - 停止位(Stop Bits):通常为1位,可通过
stty -F /dev/ttyUSB0 -cstopb设置。 - 校验位(Parity):无校验(none)、奇校验(odd)、偶校验(even),例如
stty -F /dev/ttyUSB0 -parenb表示无校验。 - 流控(Flow Control):硬件流控(RTS/CTS)或软件流控(XON/XOFF),可通过
stty -F /dev/ttyUSB0 -crtscts禁用硬件流控。
不同工具的命令对比
| 工具名称 | 安装命令 | 打开串口命令示例 | 退出方式 | 特点 |
|---|---|---|---|---|
| minicom | sudo apt install minicom | minicom -D /dev/ttyUSB0 | Ctrl+A X | 功能全面,支持脚本配置 |
| screen | sudo apt install screen | screen /dev/ttyUSB0 115200 | Ctrl+A K | 轻量级,支持会话分离 |
| cu | sudo apt install cu | cu -l /dev/ttyUSB0 -s 115200 | 简单直接,适合基础通信 | |
| picocom | sudo apt install picocom | picocom -b 115200 /dev/ttyUSB0 | Ctrl+A X | 轻量级,资源占用低 |
高级操作:使用python和pyserial
在自动化脚本中,可通过Python的pyserial库操作串口:
pip install pyserial # 安装pyserial
示例代码:
import serial
ser = serial.Serial('/dev/ttyUSB0', 115200, timeout=1)
ser.write(b'Hello, Serial!')
data = ser.readline()
print(data.decode())
ser.close()
相关问答FAQs
问题1:为什么提示“Permission denied”错误?
解答:该错误通常是由于用户没有串口设备的访问权限,解决方案有两种:
- 临时使用sudo权限:
sudo minicom -D /dev/ttyUSB0(不推荐,仅临时使用); - 永久权限配置:将用户加入dialout组(
sudo usermod -aG dialout $USER)或通过udev规则修改设备权限(如KERNEL=="ttyUSB*", MODE="0666"),配置后需重新登录或重新插拔设备。
问题2:如何验证串口通信是否正常?
解答:可通过以下步骤验证:
- 硬件环回测试:将串口的TX(发送)和RX(接收)引脚短接,使用
minicom或screen打开串口,输入任意字符,若能正常回显,则串口硬件正常; - 软件工具测试:使用
cat /dev/ttyUSB0命令读取串口数据,同时在另一终端通过echo "test" > /dev/ttyUSB0发送数据,若接收端能收到“test”,则串口通信正常; - 逻辑分析仪抓包:通过逻辑分析仪观察TX/RX引脚的波形和数据,确认信号是否符合协议规范。
