Linux添加串口详解
在嵌入式开发、工业控制或通信设备调试中,串口(Serial Port)是一种常见的数据传输接口,Linux系统作为广泛使用的操作系统,提供了灵活的串口管理方式,本文将详细介绍在Linux系统中添加串口的完整流程,包括硬件连接、驱动加载、设备识别、权限配置及常见问题解决,帮助用户快速实现串口的正常使用。

硬件连接与基础检查
在软件配置之前,需确保硬件连接正确,确认设备是否支持串口通信,常见的串口类型包括RS-232、RS-485等,通过串口线将设备与Linux主机连接,通常使用DB-9或USB转串口适配器,若使用USB转串口,系统会自动识别为虚拟串口设备。
连接完成后,检查硬件是否被系统识别,执行以下命令查看系统识别的串口设备:
ls /dev/ttyS* ls /dev/ttyUSB*
/dev/ttyS*表示内置串口,/dev/ttyUSB*表示USB转串口设备,若未显示设备,需检查硬件连接或驱动问题。
驱动加载与设备识别
Linux内核通常已包含大部分串口驱动的支持,但某些特殊硬件可能需手动加载驱动,以USB转串口芯片(如PL2303、CH341)为例,需确保对应的内核模块已加载,执行以下命令加载驱动:
sudo modprobe pl2303 # PL2303芯片驱动 sudo modprobe ch341 # CH341芯片驱动
加载后,再次通过ls /dev/ttyUSB*检查设备是否出现,若设备仍未识别,可查看系统日志(dmesg)确认驱动加载状态:
dmesg | grep -i "serial" dmesg | grep -i "usb"
日志中若出现驱动加载信息,则说明驱动已生效;若无,需检查内核是否支持该驱动或重新编译内核。
串口参数配置
串口通信需配置波特率、数据位、停止位、校验位等参数,Linux中可通过stty命令或工具(如minicom、screen)进行配置,以stty命令为例,假设串口设备为/dev/ttyUSB0,配置波特率为115200、8位数据位、无校验位、1位停止位:
sudo stty -F /dev/ttyUSB0 115200 cs8 -cstopb -parenb
配置完成后,可通过以下命令验证参数是否正确:
stty -F /dev/ttyUSB0 -a
若需进行双向通信,可使用screen或minicom工具,使用screen打开串口:
sudo screen /dev/ttyUSB0 115200
退出时按Ctrl+A,再按K终止连接。
权限配置与用户访问
默认情况下,串口设备仅root用户可读写,普通用户需配置权限才能访问,推荐两种方式:

-
临时修改权限
使用chmod命令修改设备权限,sudo chmod 666 /dev/ttyUSB0
此方法重启后失效,适用于临时调试。
-
永久修改权限
创建udev规则实现权限持久化,编辑/etc/udev/rules.d/99-usb-serial.rules文件,添加以下内容:KERNEL=="ttyUSB[0-9]*", MODE="0666", GROUP="dialout" KERNEL=="ttyS[0-9]*", MODE="0666", GROUP="dialout"
保存后,执行以下命令使规则生效:
sudo udevadm control --reload-rules sudo udevadm trigger
将用户加入
dialout组,确保权限生效:sudo usermod -a -G dialout $USER
完成后需重新登录系统。
串口通信测试
配置完成后,需测试串口是否正常工作,若另一端为开发板或传感器,可通过发送测试数据验证,若无硬件设备,可使用虚拟串口工具(如socat)创建测试环境。
-
使用
socat创建虚拟串口对
安装socat:sudo apt-get install socat
创建虚拟串口对(
/dev/ttyS10和/dev/ttyS11):sudo socat -d -d pty,raw,echo=0 pty,raw,echo=0
开启两个终端,分别使用
screen或minicom连接两个虚拟串口,实现双向通信测试。 -
硬件设备测试
使用echo命令向串口发送数据,并通过另一端设备接收:
echo "Hello, Serial Port" > /dev/ttyUSB0
若接收端正常显示数据,则说明串口配置成功。
常见问题与解决方案
-
设备未识别
- 检查硬件连接和供电;
- 确认驱动是否加载(
dmesg查看日志); - 尝试更换USB接口或适配器。
-
权限不足
- 确认用户是否在
dialout组; - 检查
udev规则是否正确配置; - 临时使用
sudo提权测试。
- 确认用户是否在
-
数据传输错误
- 检查串口参数(波特率、数据位等)是否匹配;
- 检查数据线是否支持硬件流控(RTS/CTS);
- 使用
minicom的“本地回环”功能测试硬件故障。
-
驱动冲突
- 若多个USB转串口设备冲突,可通过
lsusb查看设备ID,修改udev规则分配固定设备名; - 禁用不需要的驱动(如
blacklist)。
- 若多个USB转串口设备冲突,可通过
高级应用:多串口管理与自动化
对于多串口设备管理,可通过systemd或自定义脚本实现自动化,创建一个服务脚本在开机时自动配置串口参数:
#!/bin/bash stty -F /dev/ttyUSB0 115200 cs8 -cstopb -parenb
保存为/usr/local/bin/config-serial.sh,赋予执行权限后,通过systemd设置为开机自启:
sudo systemctl enable serial-config.service
可结合expect或python的pyserial库实现串口自动化通信,适用于工业控制或数据采集场景。
在Linux系统中添加串口涉及硬件连接、驱动配置、权限管理和通信测试等多个环节,通过本文介绍的步骤,用户可系统化完成串口的添加与调试,并根据实际需求优化配置,掌握串口管理技能,不仅能提升开发效率,还能为嵌入式系统、物联网设备等场景的调试提供可靠支持。

















