如何使用从SIM卡检索的信息配置调制解调器模块

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用从SIM卡检索的信息配置调制解调器模块相关的知识,希望对你有一定的参考价值。

我正在使用Telit910LEC1模块通过sim卡将我的esp32连接到互联网。我对调制解调器的工作方式了解不多,但是我继承了一个可以正常工作的代码(建立连接)。问题在于它仅适用于为其开发的Sim。如果我将SIM卡切换为与另一个电话运营商链接的SIM卡,则似乎不再起作用。我想这是因为apn硬编码到了代码中(我无法共享),我想知道是否有一种方法可以自动配置调制解调器,使其可以从sim中获取信息。

  • 有遵循的程序吗?
  • 我应该在调制解调器中设置子标志以通过某些AT命令自动进行自我配置吗?
  • 是否有一系列的AT命令来设置它?

到目前为止,我的解决方案是要求操作员进行模拟,并通过带有该信息的外部BT设备设置apn,但您可以想象,这更像是一种解决方法。

[您可能会注意到,我对这种技术不了解很多,因此,如果我缺乏信息,我会尽力提供尽可能精确的信息。

感谢您的帮助

这里是带有AT命令的pdf文件https://www.telit.com/wp-content/uploads/2017/10/Telit_LE920x4_LE910Cx_AT_Commands_Reference_Guide_r3.pdf

答案

[不幸的是,没有一种通用的方法可以获取可用于数据流量的APN更新。实际上,操作员的行为彼此不同,并且对其中一种有效的操作可能对另一种无效。

我将尝试解释所有解决方案以及它们无法起作用的原因。我的回答基于您正在使用LE910-C1模块(它是LTE设备)的事实。

概述

在4G时代之前,蜂窝设备不需要APN即可完成网络注册。仅在激活PDP上下文的情况下才需要此操作,而在必须交换打包数据时执行该操作。]

[APN是通过+CGDCONT AT命令写在调制解调器的NVM中的:

AT+CGDCONT=<contextID>,<PDP Type>,<APN>[,...]

// Example
AT+CGDCONT=1,"IP","mobile.vodafone.it"

使用LTE

,情况发生了变化:由于VoLTE(LTE语音)和IMS(用于通过LTE发送SMS的服务)的支持,向网络进行基本注册也需要PDP上下文。

解决方案1:+CGDCONTRDP命令

为了与旧的2G和3G世界向后兼容,为了在不设置+CGDCONT的情况下注册到网络,LTE设备具有从网络中检索APN的能力。

可以通过发出AT+CGDONTRDP命令(PDP上下文读取动态参数)来查询此注册信息,该命令根据您链接的AT指南具有以下语法:

AT+CGCONTRDP=[<p_cid>]

并使用以下格式用N

行生成响应
+CGCONTRDP:<p_cid>,<bearerId>,<apn>[,<ip&subnet>[,<gw_addr>[,<DNS_prim>[,<DNS_sec>[, <P_CSCF_prim>[,<P_CSCF_sec>]]]]]]

如您所见,它提供了许多有关已激活的APN的信息,例如p_cid

(上下文ID,对于通过注册激活的上下文等于1),IP地址,尤其是APN名称

好消息:

我们有一个与当前运营商相关的APN名称。您可以尝试从脚本中完全删除+CGDCONT,然后发现设备可以自行连接(或进行很小的调整)。

坏消息:

不能保证用户可以使用相同的APN名称进行数据交换。一些运营商(例如Verizon)具有用于注册的特定APN(获得专用网络IP地址,对于自定义数据交换没有用),因此用户必须激活另一个PDP上下文才能交换数据。

解决方案2:OMADM

某些运营商(例如美国的Verizon)实施了OMA联盟为Device Management:OMADM定义的特殊协议。正如my answer to this question的答案中所解释的,它允许网络运营商检索(并设置!)若干设置。

APN是其中之一:网络知道Device-SIM对中的任何更改,如果更改,则启动DM会话以更新APN名称。当然,设备必须支持此非常特定的协议。

坏消息:

不能绝对保证世界上的每个运营商都支持此APN更新机制。此外,所有这些机制都是very特定于运营商的,并且需要为每个运营商定制调制解调器的供应商。

一个简单的解决方法

您可以在代码中构建一个查找表,使每个运算符与相应的APN相匹配:

  1. 使用AT+COPS?查询当前运算符>
  2. 在查找表中搜索
  3. 如果设备自上次开机以来已更改(您可以将lastOperator
  4. 名称存储在闪存中的某个位置),请通过发出AT+CGDCONT命令将APN更改为在查找表中找到的名称] >

    Pro:这很容易,而且不会消耗内存,因此建立了一个覆盖整个欧洲和至少北美国家的查找表(顺便说一句:请确保您的设备实际上适合您要在其中使用的区域:并非所有设备都支持要在全球范围内使用的RF频段。

    缺点:

这不是问题所要求的“通用”,而且肯定是必须加以维护的。我建议您实施恢复解决方案,在该解决方案中,您可以管理一个特殊的SMS,将APN更新为自定义值。

以上是关于如何使用从SIM卡检索的信息配置调制解调器模块的主要内容,如果未能解决你的问题,请参考以下文章

sim800和sim900的区别

从 Windows (C#) 打开调制解调器配置对话框

APN 登录信息是不是存储在 SIM 卡上?

如何通过USB GSM调制解调器从VB应用程序发送短信(华为E1731)

算法 - 使用外部编解码器/调制解调器处理抖动和漂移

MSK基于FPGA的MSK调制系统开发