为什么我的 USB 调制解调器会生成多个 /dev/ttyUSB* 文件?

为什么我的 USB 调制解调器会生成多个 /dev/ttyUSB* 文件?

我有一个 Sierra Wireless USB 308 调制解调器,用于向客户发送 SMS 消息以及从客户接收 SMS 消息。

当插入该单个设备时,系统会创建多个设备文件:/dev/ttyUSB0, /dev/ttyUSB1, /dev/ttyUSB2, /dev/ttyUSB3.我在某处读到,发送短信必须使用第三个设备文件(/dev/ttyUSB2)。我在用着短信工具

问题:

  1. 为什么单个设备会在/dev目录下产生多个设备文件?
  2. 我希望能够符号链接/dev/ttyUSB2/dev/sms-sierra.当在每个设备文件(其中“XXX”是“0”、“1”、“2”或“3”)上运行时udevadm info -a /dev/ttyUSBXXX,每个“设备”的信息几乎相同。由于设备编号并不总是相同,因此如何编写udev规则来检测要使用的适当设备编号?

对于问题1,我不知道。对于问题 2,是否需要一个程序来探测设备文件是否可以发送 SMS(例如,通过查看它是否响应适当的调制解调器“AT”命令)?

答案1

这很常见,但仍然很神秘。泰利特和华为调制解调器做同样的事情。至少泰利特,指定他们中有多少人Linux USB 驱动程序 - 用户指南

例如,对于我目前使用的 Telit LE910,USB PID 是 0x1201,它被列为通过串行提供到 Linux“5 ports /dev/ttyUSBx”。相应的表格上有一个奇怪的脚注,指出:

并非所有调制解调器暴露的端口都可以用于 AT 命令发送:端口排列说明请参阅相应的 AT 命令用户指南。

追踪“AT 命令”线索结果是徒劳无功。相反,搜索“端口排列描述”会显示更多信息,有些具有误导性,有些具有启发性。此图像出现在“TELIT 3G 模块端口排列用户指南”中:

在此输入图像描述

注意绿色通道。调制解调器有一个“虚拟串行设备”,当通过 USB 连接到计算机 (DTE) 时,会提供多个“USB 通道”。这些通道到调制解调器“接入点”的映射是可配置的。 “AT0”、“AT1”、“AT2”接入点似乎提供并发 AT 命令会话。 “TT”接入点似乎是一个旧的通信接口,与“TTC 工具”一起使用以创建“TTC 连接”。最后,GPS 接入点是一个标准 GNSS 接口,可以提供 NMEA 语句。

因此,根据您的调制解调器的配置方式,我希望您的ttyUSB设备是这些接入点的某种排列。

例如,通过反复试验,在我的例子中,前两个和最后一个(ttyUSB0ttyUSB1ttyUSB4)不是 AT 端口,而另外两个是(ttyUSB2ttyUSB3)。

所以你的问题2的答案是:你不能。由调制解调器的配置来确定哪个设备连接到哪个功能。

答案2

问题 1:内核为并发请求创建多个 ttyUSB,当它连接到其他程序(WvDial、pppd、ModemManager 等)时,您不能使用 /dev/ttyUSB0 发送短信。

问题2: 小型计算机

相关内容