我怎么知道我的串口是哪个/ dev / ttyS *?


Answers:


32

我认为这是此命令:

dmesg | grep tty

在我自己的Linux机器(只有1个串行端口)上运行该机器,将产生一条ttyS0输出行。自己尝试,您会明白我的意思。


这是否意味着在运行该命令后,如果响应已启用...控制台[tty0] ...,并且没有其他响应,则任何设备都连接到/ dev / tty0(很抱歉,这个问题很明显)?
Hektor

1
唯一的问题是,可以清除dmesg输出-因此,如果运行得太晚,将很不幸。查看/ proc / tty / driver / serial似乎是更可靠的答案,然后检查将数据写入该端口时rx中断的计数是否增加
Neil McGill 2015年

抱歉,如果看不到任何输出,该怎么办?
user3019105

如果您当前在所述串行线路上的终端中,则只需键入tty即可获取tty的名称。我认为这就是OP的意思,因为他们没有提出“哪个串口getty正在运行?”这一问题。
Thom Nichols

14

查看在中检测到哪些UART /proc/tty/driver/serial。带有uart:unknown意思的行:未检测到任何东西(可能不存在)。

# cat /proc/tty/driver/serial 
serinfo:1.0 driver revision:
0: uart:16550A port:000003F8 irq:4 tx:0 rx:0
1: uart:16550A port:000002F8 irq:3 tx:111780 rx:1321 RTS|DTR|DSR
2: uart:unknown port:000003E8 irq:4
3: uart:unknown port:000002E8 irq:3

如果连接了东西并驱动CTS,DSR或CD线(这些是输入线),您甚至可以确定确实存在某些东西……rx-byte-count也是如此。


7

如果您需要以编程方式执行此操作,则从dmesg中读取输出可能会很麻烦,而是文件夹/ dev / serial / by-id包含以设备的可识别数据命名的符号链接,并指向特定的/ dev / tty *。连接到。

我不确定这是否是一些特定于发行版的特殊udev规则,但是它在Ubuntu中效果很好,请让我知道它是否有效。


5

ttyS0通过分别3对应于COM1通过4。它们通常具有相同的硬件资源,并且并非始终可检测到,因此它们始终存在。


感谢您的回答。所以说我想告诉Linux我希望ttyS0映射到我的串行端口硬件,我该怎么办?
sivabudh 2010年

您将用来setserial将ttyS0使用的资源映射到您的串行端口。linux.die.net/man/8/setserial 但这通常不是必需的,因为COM4以外的任何东西通常都具有足够的辅助硬件,以使Linux能够检测到它并适当地添加串行设备。
伊格纳西奥·巴斯克斯

0

还有一个命令setserial,它使用/proc/tty/driver/serial得到它的数据。

# setserial -g /dev/ttyS[0123]
/dev/ttyS0, UART: 16550A, Port: 0x03f8, IRQ: 4
/dev/ttyS1, UART: 16550A, Port: 0x02f8, IRQ: 3
/dev/ttyS2, UART: unknown, Port: 0x03e8, IRQ: 4
/dev/ttyS3, UART: unknown, Port: 0x02e8, IRQ: 3
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.