补充说明
setserial 用来查询或修改传统 8250/16550 串口(/dev/ttyS*)的 I/O 地址、中断号、UART 类型和基准波特率等参数。它属于 setserial 软件包,在 Debian/Ubuntu 上通常由 /etc/init.d/setserial 读取 /etc/serial.conf 完成开机配置。
现在绝大多数串口由内核即插即用和 udev 自动识别,手工设置端口地址与 IRQ 的场景已经很少。但它仍适合做故障排查:用 -g 快速确认系统到底识别到了哪几个串口、每个端口用的是哪个 UART 型号。
注意串口参数与波特率、流控等通信参数是两回事,后者要用 stty 设置。修改 port 或 irq 属于硬件级配置,写错会导致该串口完全不可用,操作前最好先记录 -a 的输出。
语法
setserial [选项] 设备 [参数...]
选项
-g:以简洁形式列出各串口的 UART 类型、端口和 IRQ-a:显示指定设备的全部配置信息-G:以可供脚本解析的格式输出-v:显示详细过程-b:显示启动时的配置摘要
常用参数
autoconfig:让内核自动探测端口和 IRQport 0x3f8:手工指定 I/O 地址irq 4:手工指定中断号uart 16550A:指定 UART 型号baud_base 115200:设置基准时钟频率skip_test/^skip_test:跳过 / 恢复 UART 探测
实例
# 列出系统识别到的所有串口
setserial -g /dev/ttyS*
# 查看 ttyS0 的完整参数
setserial -a /dev/ttyS0
# 让内核重新自动探测 ttyS0
setserial /dev/ttyS0 autoconfig
# 手工指定老式板卡上的串口地址与中断
setserial /dev/ttyS1 port 0x2f8 irq 3 uart 16550A