Linux 命令速查
系统管理 man setserial

setserial

查看和配置串口设备的底层参数

返回

补充说明

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:让内核自动探测端口和 IRQ
  • port 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

参考链接