在Linux系统中安装串口驱动程序通常涉及识别硬件、加载驱动模块及配置权限等步骤,具体方法需根据串口类型(如内置物理串口或USB转串口芯片)有所区别,以下是详细操作流程:
检查系统串口识别情况
首先确认系统是否已识别到串口设备,对于内置物理串口(如主板RS232/RS422),可通过ls /dev/ttyS*
查看设备节点;对于USB转串口(如通过USB接口连接的串口设备),插入设备后执行ls /dev/ttyUSB*
或ls /dev/ttyACM*
(部分设备可能命名为ACM),若未显示设备节点,需进一步检查驱动是否加载。
使用dmesg | grep tty
命令可查看内核启动时的串口识别信息,若输出包含“serial”或“usb_serial”字样,说明内核已检测到设备;若无输出,则需安装或加载驱动。
确认串口芯片型号
USB转串口设备通常依赖特定芯片驱动(如CH340、FT232、PL2303等),需先确认芯片型号,执行lsusb
命令列出USB设备,
Bus 001 Device 005: ID 1a86:7523 QinHeng Electronics CH340 serial converter
其中1a86:7523
为厂商ID和产品ID,对应CH340芯片,内置物理串口的芯片型号可通过主板手册或lspci | grep "Serial"
查询。
安装串口驱动
内置物理串口驱动
Linux内核已默认支持大多数内置串口控制器(如8250、16550A系列),驱动通常编译为内核模块或直接内置,若未自动加载,可手动加载模块:
sudo modprobe 8250_core # 加载8250核心模块 sudo modprobe 8250_std # 加载标准8250驱动
若内核未配置相关驱动,需重新编译内核:下载内核源码,执行make menuconfig
,在“Device Drivers → Serial drivers”中启用“8250/16550 and compatible serial support”,保存后编译安装内核。
USB转串口驱动
USB转串口芯片需安装对应驱动,常见芯片及安装方法如下(以Debian/Ubuntu为例):
芯片型号 | 内核支持情况 | 安装命令 | 设备节点示例 |
---|---|---|---|
CH340 | 内核4.4+默认支持 | sudo apt install ch34x-converter-driver |
/dev/ttyUSB0 |
FT232 | 内核默认支持 | 无需额外安装(驱动ftdi_sio) | /dev/ttyUSB0 |
PL2303 | 内核默认支持 | 无需额外安装(驱动pl2303) | /dev/ttyUSB0 |
CP210x | 内核默认支持 | 无需额外安装(驱动cp210x) | /dev/ttyUSB0 |
若内核未默认支持(如老旧版本),需从源码编译驱动,以CH340为例:
# 下载驱动源码(以Linux内核源码中的drivers/usb/serial/ch341.c为例) sudo apt install linux-source tar -xvf linux-source-*.tar.xz cd linux-source-*/drivers/usb/serial/ # 编译驱动模块 make -C /lib/modules/$(uname -r)/build M=$(pwd) modules # 加载模块 sudo insmod ch341.ko # 查看模块是否加载 lsmod | grep ch341
配置设备权限
默认情况下,普通用户无法访问串口设备(权限为600,属主为root),需将用户加入dialout
组(Ubuntu/Debian)或uucp
组(CentOS/RHEL),或通过udev规则设置权限:
# 方法1:加入用户组(需重启或重新登录) sudo usermod -aG dialout $USER # 方法2:创建udev规则(推荐) sudo nano /etc/udev/rules.d/99-usb-serial.rules以CH340为例,替换idVendor和idProduct) SUBSYSTEM=="tty", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", MODE="0666" # 重新加载udev规则 sudo udevadm control --reload-rules && sudo udevadm trigger
测试串口通信
安装完成后,使用minicom
或screen
工具测试串口,以minicom
为例:
# 安装minicom(Ubuntu/Debian) sudo apt install minicom # 配置minicom(首次运行需设置串口设备、波特率等) minicom -s # 选择“Serial port setup”,设置串口(如/dev/ttyUSB0)、波特率(9600)、数据位(8)、停止位(1)、无校验 # 保存并退出,按Ctrl+A X退出minicom
若能正常打开串口并收发数据,说明驱动安装成功。
相关问答FAQs
*Q1:串口设备插入后无法识别(ls /dev/ttyUSB无输出),如何排查?**
A:首先检查lsusb
是否显示设备(确认硬件连接正常);若lsusb
有输出但无设备节点,可能是驱动未加载,执行dmesg | grep usb
查看内核错误信息(如“device descriptor read/64, error -71”可能驱动不兼容),尝试重新编译或更新内核;若驱动已加载但仍无节点,检查内核配置是否启用“USB Serial Converter support”。
Q2:普通用户访问串口时提示“Permission denied”,如何解决?
A:优先使用udev规则设置权限(如上述方法2),无需重启即可生效;若未配置udev规则,可临时使用sudo
运行程序,或通过sudo chmod 666 /dev/ttyUSB*
修改权限(重启后失效),若加入dialout
组后仍无法访问,检查/etc/group
中用户是否在组内,或重新登录使组权限生效。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/36729.html