您无法通过外部方式检测到这一点。通常的做法是为特定的调制解调器制造商和型号设置 udev 规则。或者您可以顺序连接到每个 tty 并通过 AT 命令验证它是什么类型的端口。
对于 udev 规则,您可以遵循以下过程:
1) 检测调制解调器 vid 和 pid 2) 基于 vid/pid 在 /dev/serial/by-id 创建符号链接
例如,具有 vid = 1199 和 pid 683c 的 Sierra Wireless MC8795V 调制解调器。我知道端口 3 始终是 AT 命令通道。因此,您可以在末尾创建一个带有 -AT 的符号链接。
在通过 AT 命令检测的情况下,最好和更常见的方法是执行 AT 命令以查看 tty 是否有响应。如果您将调制解调器配置为不回显,您应该得到回显或 OK。
例如:
AT
AT
OK
如果您收到响应,这意味着您找到了 AT 控制端口或 PPP 端口。要检查这一点,只需执行 ATI 命令。如果响应包含 APP1、APP2、APP3,那么您点击了 PPP 端口。否则你找到了你的 AT 控制端口。
例如一个 AT 控制端口:
ATI
Manufacturer: Sierra Wireless, Incorporated
Model: MC8795V
Revision: K2_0_7_46AP C:/WS/FW/K2_0_7_46AP/MSM6290/SRC 2010/10/27 22:15:30
IMEI: XXXXXXXXXXXXXXX
IMEI SV: 20
FSN: D9A2160146410
3GPP Release 6
+GCAP: +CGSM,+DS,+ES
OK
例如一个 PPP 端口:
ATI
Sierra Wireless, Incorporated
MC8795V
APP1
OK
一句警告的话。对于 Sierra Wireless 模块,它们清楚地显示哪个端口是哪个。对于其他制造商,您需要查看 USB 接口指南,看看是否可以通过 ATI 采用这种方法。