如何检测属于 gsm/3g-modem 的 tty 是数据端口还是控制端口?

2024-04-08

我目前正在为 Linux 路由器编写一个小工具,当我将适当的调制解调器插入其 USB 端口时,该工具会建立 wwan (gsm/3g) 连接。当设备插入时,会注册多个 tty,我当前维护一个制造商和设备的列表,以及它们注册的 tty 中的哪个是控制/数据端口。

如果可能的话,我想摆脱这个列表,并找到一种方法来直接探测注册的 tty,以检查它们是控制端口还是数据端口。

我检查了 wvdial 和 modem-manager 的源代码,看看这些工具如何检测正确的端口,但无法找到合适的信息。我还尝试在 sysfs 中查找信息来区分端口,但这也没有成功。


您无法通过外部手段检测到这一点。常见的做法是为特定调制解调器制造商和型号设置 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 采取这种方法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何检测属于 gsm/3g-modem 的 tty 是数据端口还是控制端口? 的相关文章

  • Linux TCP服务器:在接受连接之前读取客户端的IP地址

    Related C Winsock API如何在接受连接之前获取连接客户端IP https stackoverflow com questions 716209 c winsock api how to get connecting cli
  • 如何使用 bash 脚本关闭所有终端,在每个终端中有效地按 Ctrl+Shift+Q

    我经常打开许多终端 其中一些正在运行重要的进程 例如服务器 而另一些则没有运行任何东西并且可以关闭 如果您按 重要 则会弹出确认提示Cntrl Shift Q在其中 如下所示 我想要一个 bash 脚本 它可以关闭所有终端 但将 重要 终端
  • 原生 Linux 应用程序可像 ResHacker 一样编辑 Win32 PE

    我想运行自动修改 dll服务 用户提交特定的 dll 我在服务器上修改它 然后用户可以下载 dll的修改版本 是否有任何本机 Linux 应用程序提供常见的 Win32 PE 修改功能 例如图标 字符串 加速器 对话等 至少提供命令行或脚本
  • python中打印字符串的长度

    有没有什么方法可以找到 即使是最好的猜测 Python中字符串的 打印 长度 例如 potaa bto 是 8 个字符len但 tty 上只打印 6 个字符宽 预期用途 s potato x1b 01 32mpotato x1b 0 0mp
  • 是否有可能通过 mmap 匿名内存“打孔”?

    考虑一个使用大量大致页面大小的内存区域 例如 64 kB 左右 的程序 每个内存区域的寿命都相当短暂 在我的特定情况下 这些是绿色线程的替代堆栈 如何最好地分配这些区域 以便一旦该区域不再使用 它 们的页面可以返回到内核 天真的解决方案显然
  • 如何在两个不同帐户之间设置无密码身份验证

    我们可以在两台机器的两种不同用途之间设置无密码身份验证吗 例如 计算机A有用户A 计算机B有用户B 我们可以设置密码 ssh 以便计算机 A 上的用户 A 使用其用户帐户 A 登录计算机 B 谢谢你 如果我理解你的问题 你能设置一下吗ssh
  • gdb 错误 - 文件不是可执行格式:无法识别文件格式

    我正在尝试使用 gdb 调试某个名为 xdf 的程序 但是当我运行 gdb xdf 时 出现以下错误 home nealtitusthomas X ray astronomy heasoft 6 24 x86 64 pc linux gnu
  • 如何使用ffmpeg重叠和合并多个音频文件?

    我正在尝试将多个音频文件合并到一个文件中 但我可以使用以下命令来连接 而不是连接 ffmpeg v debug i file1 wav i file2 wav i file3 wav filter complex 0 0 concat n
  • 远程linux服务器到远程linux服务器大型稀疏文件复制 - 如何?

    我有两台 CentOS 5 4 服务器 每台服务器上都安装了 VMware Server 假设我始终对 vmware 虚拟机使用稀疏文件 将虚拟机文件从一台服务器复制到另一台服务器的最可靠 最快速的方法是什么 虚拟机的文件复制起来很痛苦 因
  • linux下如何获取昨天和前天?

    我想在变量中获取 sysdate 1 和 sysdate 2 并回显它 我正在使用下面的查询 它将今天的日期作为输出 bin bash tm date Y d m echo tm 如何获取昨天和前天的日期 这是另一种方法 对于昨天来说 da
  • 为什么 ld 无法从 /etc/ld.so.conf 中的路径找到库?

    我想添加 opt vertica lib64进入系统库路径 所以我执行以下步骤 1 添加 opt vertica lib64 into etc ld so conf 然后运行ldconfig 2 检查 bash ldconfig p gre
  • Bash 脚本 - 迭代 find 的输出

    我有一个 bash 脚本 其中需要迭代 find 命令输出的每一行 但似乎我正在迭代 find 命令中的每个单词 以空格分隔 到目前为止我的脚本看起来像这样 folders find maxdepth 1 type d for i in f
  • 我应该使用哪个 Linux 发行版作为 Xen 主机? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我为家庭办公室订购了一台服务器 我想用 Xen 对其进行分区 我认为这将使事情保持干净并且更容易维护 我将运行 MySQL PostgreSQL
  • Linux命令列出所有可用命令和别名

    是否有一个 Linux 命令可以列出该终端会话的所有可用命令和别名 就好像您输入 a 并按下 Tab 键一样 但针对的是字母表中的每个字母 或者运行 别名 但也返回命令 为什么 我想运行以下命令并查看命令是否可用 ListAllComman
  • 无关的库链接

    我有一个可能有点愚蠢的问题 因为我很确定我可能已经知道答案了 假设你有静态库A 动态共享库B和你的linux下的程序C 假设库 A 调用库 B 中的函数 并且您的程序调用库 A 中的函数 现在假设 C 在 A 中调用的所有函数都不使用 B
  • touch命令在一个目录下创建多个文件(不同名称)

    我想制作一个在 bash 中创建目录和文件结构的脚本 我尝试过这样的事情 mkdir p 1 2 touch 1 2 a b c a b c 应该是在一个命令或其他命令中创建的文件 但由于某种原因 结构是这样的 current folder
  • 如何成功使用RDAP协议代替whois

    我对新的 RDAP 协议有点困惑 也不知道何时进一步追求它有意义 在我看来 每个人都同意它是 whois 的继承者 但他们的数据库似乎是空的 在 ubuntu 上我尝试了 rdapper nicinfo 甚至他们的 RESTful API
  • 如何使用AWK脚本检查表的所有列数据类型? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 在这里 我正在检查表中第一列的数据类型 但我想知道AWK中表的所有列数据类型 我尝试过 但只能获得一列数据类型 例如 Column 1
  • gentoo crontab:为什么这个简单的 crontab 不起作用?

    我使用 GENTOO 发行版 crontab e 35 12 root php5 home www cron php 当我手动运行时 php5 php5 home www cron php 这有效 它向我发送了一封电子邮件 然后我检查日期
  • 在 LINUX 上使用 Python 连接到 OLAP 多维数据集

    我知道如何在 Windows 上使用 Python 连接到 MS OLAP 多维数据集 嗯 至少有一种方法 通常我使用 win32py 包并调用 COM 对象进行连接 import win32com client connection wi

随机推荐

  • 如何将 actionPerformed( ActionEvent e ) 与多个按钮一起使用?

    所以我的作业要求创建一个顺序文件 我的教授给了我这个执行操作的简单代码 public void actionPerformed ActionEvent e FOR STATE AND COUNTRY String country Strin

  • 无法在 Windows 8 / 8.1 上运行

    Windows 8 8 1 最初问题出现在8中 所以我升级到8 1 但问题仍然存在 浏览器11 0 2 我正在使用一个名为 eTools 的产品 它用于生成和管理龙与地下城游戏的角色表 该信息存储在数据库文件中 但为了创建字符表 该软件使用
  • 关于JPA Cascade和删除实体的问题

    我的数据模型中有两个名为 User 和 UserProfile 的实体 以下是它们的映射方式 来自用户实体的代码 OneToOne cascade CascadeType ALL PrimaryKeyJoinColumn public Us
  • Angular DatePipe - 将秒转换为零时区的时间(12 而不是 00)

    我想使用 DatePipe 转换数字 代表秒 得到这样的结果 00 00 05 我尝试用 DatePipe 这样做
  • 读写锁。了解从readLock升级到writeLock

    考虑一下这个JDK标准接口 public interface ReadWriteLock public Lock readLock public Lock writeLock B Goetz 在 Java Concurrency inpra
  • 使用 PDO 选择多个数据库

    我有一个functions php有一个文件PDO我用来访问数据库的连接以及所有这些好东西就是这个 host localhost db maindatabase adminuser admin adminpw 123456 global c
  • 可以列出 zip / rar 文件内容的 PHP 库 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • CMake - 找不到 Boost(缺少:序列化)(找到版本“1.73.0”

    我已经在我的项目中使用 Boost 一段时间了 但到目前为止 我只使用了仅包含头文件的库 我现在想使用序列化 但是当我尝试将序列化添加为必需组件时 我收到标题中写入的错误 这是我的 CMAKE 文件 cmake minimum requir
  • 将 pandas 数据帧保存到 csv 时如何保留 numpy 数组

    我有一个pandas DataFrame其中一列作为图像 该列的每一行都是一个二维图像numpy array 我保存了DataFrame to a csv文件与pandas DataFrame to csv 然而 当我打开csv文件中 该列
  • 每 2 秒进行一次 AJAX 后调用是不是一个坏主意?

    如果我对 php 文件进行 AJAX post 调用 使用 jQuery 来更新某个参数 数字 这是否被认为是不好的做法 危险或类似的做法 post file php var var function data something json
  • 仅获取联系人手机号码

    关于使用联系人 API 获取联系人号码有几个问题 但我想知道是否有一种方法可以识别检索到的号码是手机号码 以下代码通常显示为获取联系人电话号码的一种方式 因为它获取一个或多个电话号码的列表 String projection Contact
  • 如何将 Dto 修补到实体?

    我有一个接受 dto 对象的控制器 我需要更改 dto 对象中存在的字段 PatchMapping value update uuid public ResponseEntity
  • 更改一个对象中的值会更改另一个对象中的值

    我正在努力生成游戏树 我输入的问题是 当我将一个对象复制到新对象 然后在新对象中进行更改时 旧对象也会更改其值 所以这似乎是一个参考问题 但如何使新对象成为一个独立的实例 创建从父对象复制的子对象后 然后更改子对象中的值 父对象也会更改 并
  • 如何确保Tomcat6在Windows上读取CATALINA_OPTS?

    我有一个在 Windows2003 机器上运行的 Tomcat6 我在此服务器上部署了 2 个 Grails 应用程序 很快我就注意到部署后的某个时间一切都崩溃了 并出现了典型的 PermGen 错误 java lang OutOfMemo
  • JPA - COUNT 的最大值或从 SELECT 中选择

    我为 MySQL 编写了以下查询 SELECT subquery t1 column1 subquery t2 id MAX subquery val FROM SELECT t1 column1 as t1 column1 t1 id t
  • 如何在 C# 中使用循环迭代所有 ComboBoxes 控件?

    我在 C 的 winform 上有一些组合框 例如 10 名为 comboBox1 coboBox2 和comboBoxN 我如何在 for 循环中访问所有这些内容 如下所示 for int i 0 i lt 10 i comboBox i
  • 根据值列表重复每个元素

    是否有一个Python内置函数可以根据另一个列表中的相应值重复列表中的每个元素 例如A在列表中x由于值的原因 位置 0 重复了 2 次2位于列表中的位置 0y gt gt gt x A B C gt gt gt y 2 1 3 gt gt
  • 具有不等式条件的合并连接算法

    我读到 Oracle 支持带有不等式连接谓词的合并连接 是否有在线参考用于实现此类连接的算法 如果有人知道该怎么做 你能回答吗 This http docs oracle com cd E16655 01 server 121 e15858
  • 编写和完善 CSV 解析器

    作为最近项目的一部分 我必须从 CSV 文件中读取和写入 然后将其放入 C 中的网格视图中 最后决定使用现成的解析器来为我完成这项工作 因为我喜欢做这类事情 所以我想知道如何自己写 到目前为止 我所能做的就是 Read the header
  • 如何检测属于 gsm/3g-modem 的 tty 是数据端口还是控制端口?

    我目前正在为 Linux 路由器编写一个小工具 当我将适当的调制解调器插入其 USB 端口时 该工具会建立 wwan gsm 3g 连接 当设备插入时 会注册多个 tty 我当前维护一个制造商和设备的列表 以及它们注册的 tty 中的哪个是