常见问题解答

1、什么是注网和拨号?

在蜂窝无线通信中,设备想要上网,需要完成两个重要的步骤:网络附着(Attach)和PDN连接建立。而我们常说的“注网”其实就是指设备发起网络附着的过程,“拨号”则指的是PDN连接建立的过程,也叫建立一路承载。“拨号”过程,除了建立PDN连接,拿到核心网的分配的IP,其实还完成了这个IP地址与LWIP网络协议栈的绑定,相当于让设备有了一张“网卡”。

设备发起网络附着的目的,其实是告知网络自己的身份,同时由网络来验证设备身份的合法性,如果验证通过,则完成设备在网络上的登记过程。此时设备还无法进行网络业务。

我们知道,手机和电脑想要上网,都必须有一个属于自己的IP地址才行,这是因为IP地址唯一标识每个设备,就像每个家庭都有一个唯一的门牌号或者地址。没有IP地址,网络就无法知道设备在哪里,自然也无法将信息准确地传送给你。而模组想要获取IP地址,就需要在网络侧完成身份验证登记后,向网络请求建立PDN连接,即所谓的“拨号”。当模组完成PDN连接建立后,网络侧会分配一个IP地址给设备,相当于建立了一条上网通道,此时模组就可以使用这个IP来上网了。

2、设备在2G/3G和4G网络下的注网和拨号是否一样,如果不一样,有什么区别?

设备在2G和3G网络下的注网和拨号过程差异不大,流程上基本是一致的。但是到4G网络时,注网拨号和2G/3G下差异就很大了。除了信令本身差异较大之外,对用户来说,主要差异如下:

2G/3G网络下,设备的注网和拨号是两个独立的过程,设备必须先完成网络注册,然后再发起PDN连接建立。而到LTE网络中,设备的注网过程,其实包含了PDN连接建立,注网过程中建立一路PDN连接的过程,我们称之为“建立默认承载”。也就是说,设备在LTE网络中,注网成功时其实就已经建立了一路PDN连接,并拿到了核心网分配的IP地址。

按照上述说明,是不是意味着LTE网络下,设备注网成功,就可以直接上网了呢?其实是不行的。这是因为设备在LTE网络上注册成功后,虽然已经建立了一路默认承载,拿到了核心网下发的IP,但是这个IP地址没有绑定到“网卡”,TCP/IP协议栈拿不到这个IP,无法进行网络业务。所以必须进行“拨号”操作。

3、什么是APN?

APN(Access Point Name,接入点名称)是移动网络中非常重要的概念,它定义了设备如何通过运营商的网络访问外部网络(通常是互联网),以及访问什么样的网络资源。

4、为什么要配置APN?

APN是终端入网时必须配置的一个参数,因为他决定了设备如何通过运营商的网络访问外部网络,以及访问什么样的网络资源。如果没有配置APN或者配置了错误的APN,可能导致设备注网失败或者拨号失败。

5、为什么有的卡不配置APN甚至配置错误的APN,设备也能正常注网和拨号?

这是因为当地的运营商基站有APN自动纠错功能,即终端在进行网络注册时,如果没有配置APN或者配置了错误的APN,运营商的基站会在注网过程中自动纠正并下发一个正确的APN给终端,此时终端会选择接受并使用该APN继续入网。该功能依赖于运营商的基站是否支持,并不是所有运营商都支持。

目前在中国境内,大部分地区的基站都有此功能,也有一些没有。由于我们无法提前确认哪些基站有这个功能,因此我们不建议用户依赖运营商基站的APN自动纠错功能,最好在使用时,主动配置正确的APN。

6、哪些情况下,用户必须配置APN?

下面列出了几种必须配置APN的情况:

  • 有的运营商在一些区域的基站没有APN自动纠错功能,此时如果终端设备没有配置APN或者配置了错误的APN,会导致终端设备注网失败。
  • 对于一些特殊的SIM卡,比如专网卡,如果没有配置APN,会导致终端设备注网失败,在小区上发起附着请求(Attach Request)时就会被拒绝。这种特殊的SIM卡,必须要配置APN。
  • 还有一类特殊的SIM卡,既可以连接公共网络(比如互联网),也可以连接专网。其连接不同网络的方式就是通过配置不同的APN来实现。

我们建议用户,无论使用的是什么SIM卡,都主动去配置正确的APN。

7、如何确认SIM卡的APN信息?

可以和运营商进行确认。

8、如何配置注网APN,是否需要重启,是否掉电保存,是否每次开机都要配置?

  • 如何配置注网APN

    通过dataCall.setPDPContext接口配置,并且profileID参数必须为1。具体的接口使用说明请参考QuecPython官网WIKI说明部分的APN配置与获取功能

  • 配置后是否需要重启

    有两种方式可以使配置生效:

    方式1:重启设备。

    方式2:进行一次CFUN0/1切换。

  • 配置的APN等参数是否支持掉电保存

    支持。

  • 是否每次开机都要配置

    不需要。针对同一张单运营商的卡,只需要配置一次即可。

9、SIM卡可以识别,但是无法注网是什么原因?

这种情况相对比较复杂,参考前面一个章节《网络异常处理》中的模组网络注册失败部分,这里仅列出比较常见的几种原因:

  • 没接射频天线或者射频天线性能差。
  • 该SIM卡需要配置APN才能注册到网络,但是用户没有配置APN。
  • 该SIM卡存在机卡绑定的情况。需要用户联系运营商给该SIM卡解绑,或者更换新的SIM卡。
  • 测试地点没有该SIM卡对应的运营商网络覆盖。
  • 该SIM卡只支持特定频段网络。
  • 该SIM卡只支持特定的网络制式。
  • 设备硬件问题,比如硬件设计问题导致干扰大、模组射频相关器件损坏等。

10、什么是多运营商SIM卡,有什么使用注意事项?

我们正常使用的SIM卡里面一般都只有一家运营商的配置信息,比如中国移动的SIM卡,那卡里面就只有中国移动运营商配置信息,我们将这些信息的集合称之为一个profile。而有的SIM卡,内置了多家运营商的profile文件,即这种SIM卡可以支持多家运营商网络,这种SIM卡就是多运营商卡。

这种多运营商卡一般都是开机时先默认使用其中一个运营商的profile信息去搜网并注网。如果一定时间内没有注网成功,这种SIM卡就会自动进行运营商profile的切换,然后尝试使用新切换的这个profile去搜网并注网。当然,有的SIM卡,在使用当前profile已经注网拨号成功的情况下,也有可能发生profile的切换,具体还是要和这种SIM卡的运营商去确认哪些情况下会发生切换卡内运营商的行为。

需要说明的是,这种SIM卡中,每一个profile都对应一个唯一的IMSI。当SIM卡切换profile时,SIM的IMSI也是随之改变的。每次profile切换时,设备如果是处于联网状态,都会导致设备与网络连接暂时断开,直到使用新的运营商profile注网拨号成功。

11、无线网卡激活成功,但是无法进行网络业务可能是什么原因?

一般有下面两种情况可能会导致这种问题:

  • SIM卡欠费了。有的SIM卡在欠费时,模组使用这张SIM卡也能成功注册到网络,并成功激活蜂窝无线网卡,但是运营商会限制模组进行网络通信。

  • 用户这张SIM卡支持通过特定的APN接入到特殊的网络,并且用户配置的也是接入特殊网络的APN,此时设备接入的是特殊网络,并非互联网。用户可能在这种情况下进行了访问互联网的操作,那么就会出现访问失败的情况。

12、使用蜂窝无线网卡的自动重连功能,模组正常运行过程中因为一些原因导致网络连接断开,后面自动重连成功后,Socket、HTTP和MQTT这些功能需要重新初始化吗?

首先我们需要知道,模组因为网络异常导致连接断开后,如果自动重连成功,那蜂窝无线网卡的IP地址已经发生了变化。此时Socket、HTTP和MQTT这些功能处理情况如下:

  • Socket

    在创建soket对象时,系统会默认自动为其绑定蜂窝无线网卡的当前IP。当峰窝无线网卡的IP地址变化后,之前的socekt失效,需要用户先关闭之前socket,然后重新创建一个socket对象,才能正常使用。

  • HTTP

    HTTP是基于socket实现的一种短连接服务,每一次调用HTTP的方法,其实都重新创建了一个socket对象。因此自动重连功能对HTTP功能没有影响,用户可直接使用。

    HTTP方法中创建的socket对象,在用户获取响应后(response.text & response.content & response.json),系统会自动关闭socket对象,如果用户没有获取响应,则需要用户主动调用接口response.close关闭连接,才可以关闭socket对象。

  • MQTT

    QuecPython的MQTT客户端具备自动重连功能,即当MQTT客户端发现网络连接断开后,在模组的蜂窝无线网卡自动重连时,MQTT客户端会自动重新初始化,并自动按照之前的订阅信息重新订阅相关Topic。因此在蜂窝无线网卡自动重连后,用户不需要重新初始化MQTT客户端,可以继续正常使用。