您无法通过外部手段检测到这一点。常见的做法是为特定调制解调器制造商和型号设置 udev 规则。或者您可以顺序连接到每个 tty 并通过 AT 命令验证它是什么类型的端口。
对于 udev 规则,您可以遵循以下过程:
1)检测调制解调器vid和pid
2)基于vid/pid在/dev/serial/by-id中创建符号链接
例如,Sierra Wireless MC8795V 调制解调器,vid = 1199 和 pid 683c。我知道端口3始终是AT命令通道。因此,您可以创建一个在末尾添加 -AT 后固定的符号链接。
在通过 AT 命令进行检测的情况下,最好且更常见的方法是执行 AT 命令以查看 tty 是否有响应。如果您将调制解调器配置为不回显,您应该会收到回显或“确定”。
例如:
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 采取这种方法。