在EM系列储能网关中玩转4G模块

2023-10-27

在储能系统应用中,通过4G上云是非常基础和常见的应用需求,由于业务和场景的多样性,4G模块也多种多样,本文将详细介绍如何在EM储能网关中玩转4G模块。

在EM系列储能网关中玩转4G模块 (https://ic.work/) 物联网 第1张  移植准备1. 硬件选择

本文以EM系列中的EM-500储能网关作为开发主体,如图1所示,EM系列的产品带有PCIE扩展槽及其他丰富的接口,PCIE扩展槽里面预留USB接口,方便对PCIE模块开发使用,使用时只需将4G模块插入PCIE槽即可。

在EM系列储能网关中玩转4G模块 (https://ic.work/) 物联网 第2张

图1 EM-500储能网关

2. 已适配的产品 目前在EM-500已经适配的4G模块有:L610-CN、L610-EU、NL668、EC20、EC200U-CN、EC200A-CN、EG21-G、EG25-G、SLM770A、BG95-M3、EG912U-GL。

3. 4G模块调试接口

当我们插入4G模块后会在/dev/生成若干个USB调试接口,设备名字一般为:/dev/ttyUSBX(X=0,1,2….x),如果没有则输入lsusb命令查看是否识别到USB设备,如图2调试接口所示,目前插入的4G模块的PID为2c7c,VID为0125,厂家为移远,调试接口有4个。在EM系列储能网关中玩转4G模块 (https://ic.work/) 物联网 第3张图2调试接口如果lsusb可以查看到设备时,/dev/没有相应的调试接口时,可以将4G模块的PID VID输入到new_id这节点,输入以下命令(以图2的PID VID为例):

echo "2c7c 0125 ff" > /sys/bus/usb-serial/drivers/option1/new_id

成功内核会输出类似以下log:

root@EM500:~# echo "2c7c 0125 ff" > /sys/bus/usb-serial/drivers/option1/new_id [ 213.905997] option 2-1 GSM modem (1-port) converter detected[ 213.906609] usb 2-1: GSM modem (1-port) converter now attached to ttyUSB0[ 213.907126] option 2-1 GSM modem (1-port) converter detected[ 213.909049] usb 2-1: GSM modem (1-port) converter now attached to ttyUSB1[ 213.909491] option 2-1 GSM modem (1-port) converter detected[ 213.919056] usb 2-1: GSM modem (1-port) converter now attached to ttyUSB2[ 213.924366] option 2-1 GSM modem (1-port) converter detected[ 213.927619] usb 2-1: GSM modem (1-port) converter now attached to ttyUSB3

然后在/dev/就可以看到调试接口了,得到调试接口就可以使用microcom或者catecho进行4G模块AT指令调试,例如输入AT指令查看模块固件版本,如下图3 调试演示所示:

在EM系列储能网关中玩转4G模块 (https://ic.work/) 物联网 第4张

图3调试演示

在EM系列储能网关中玩转4G模块 (https://ic.work/) 物联网 第1张  拨号上网

1.拨号方式及选择

目前4G拨号方式有PPP拨号、ECM拨号、Gobinet拨号、QMI拨号等。在EM系列使用的是ECM拨号,ECM拨号通过利用4G网络的高速性能、广阔覆盖范围、低延迟、高带宽支持和移动性等优点,为各种应用场景提供了可靠、快速、稳定的数据连接。这使得设备能够实现高效的数据传输和实时通信,满足不同行业和领域的需求,且不需要移植任何的工具,像PPP、Gobinet、QMI这些拨号方式,不同的4G模块厂家都有不同的拨号工具,移植起来比较繁琐。

2. ECM拨号上网ECM上网很简单,只需要使用AT指令即可完成,如下演示移远EC20模块在ECM模式下上网:首先切换ECM模式

cat /dev/ttyUSB2 &echo -e "AT+QCFG="usbnet",1rn" > /dev/ttyUSB2

切换完成后需要对模块进行复位,输入以下命令:

echo 498 > /sys/class/gpio/exportecho out > /sys/class/gpio/gpio498/directionecho 1 > /sys/class/gpio/gpio498/valueecho 0 > /sys/class/gpio/gpio498/value

复位完成后ifconfig -a可以看到一个网卡,使用dhclient <网卡名>获取ip后即可上网,如图4 网络通信所示。

在EM系列储能网关中玩转4G模块 (https://ic.work/) 物联网 第6张

图4调试演示每种模块或者厂家切换到ECM 的AT命令是不一样,目前已适配的4G模块的ECM切换命令如图5 ECM切换命令所示。

在EM系列储能网关中玩转4G模块 (https://ic.work/) 物联网 第7张

图5ECM切换命令有些4G模块是不需要拨号的,当切换到ECM后,重启后则会自动拨号,有些4G模块则需要手动拨号,具体区分如图6 ECM拨号所示。

在EM系列储能网关中玩转4G模块 (https://ic.work/) 物联网 第8张

图6ECM拨号

手动拨号时需要根据SIM卡的运营商来进行切换,切换完后才能进行拨号,对应的AT指令如下:

移动:echo -e "AT+CGDCONT=1,"IP","CMNET"rn" > /dev/ttyUSB0电信:echo -e "AT+CGDCONT=1,"IP","CTNET"rn" > /dev/ttyUSB0联通:echo -e "AT+CGDCONT=1,"IP","3GNET"rn" > /dev/ttyUSB0

以下以EC200U-CN作为演示,如图 7 EC200U-CN拨号上网所示。

在EM系列储能网关中玩转4G模块 (https://ic.work/) 物联网 第9张

图7EC200U-CN拨号上网

在EM系列储能网关中玩转4G模块 (https://ic.work/) 物联网 第1张  设置及问题排查

1. band号设置

我国对应的band号如图8 band号分布所示:

在EM系列储能网关中玩转4G模块 (https://ic.work/) 物联网 第11张

图8band号分部

同样是每家厂商对应设置band号是不一样的,以移远的模块(EG912U-GL)为例,输入以下指令可以查看现在开启的band号。

root@em-500:~# cat /dev/ttyUSB0 &root@em-500:~# echo -e "at+qcfg="band"rn" > /dev/ttyUSB0+QCFG: "band",0xf,0x2000001e20b0f18dfOKroot@em-500:~#

其中0x2000001e20b0f18df为目前启用的band号,这里要把0x2000001e20b0f18df换算成二进制,1是打开,0是关闭,第0位是band1,第1位为band2,以此类推,现在EG912U-GL开启的band号有(列举一部分):band1,band2,band3,band4,band5,band7,band8,band12等。输入以下命令可以设置band号,如下关掉band1-band8,设置时不需要带上0x。

root@em-500:~# echo -e "at+qcfg="band",f,2000001e20b0f1800rn" > /dev/ttyUSB0OKroot@em-500:~#

2. 网卡名称问题当切换到ECM后,会生成一些enxxxxxx之类的稀奇古怪的网卡名字,主要原因是被系统的rules给重名命了,如下内核打印可知,一般来说切换到ECM后网卡的名字为usbX(X=0,1,2…x)。

cdc_ether 2-1:1.0 enx024bb3b9ebe5: renamed from usb0

解决方法如下:

修改80-net-setup-link.rules内容,将NAME=”$env{ID_NET_NAME}”里的ID_NET_NAME改成ID_NET_SLOT后,重启设备就可以了。

打开80-net-setup-link.rules,如下:

vi /lib/udev/rules.d/80-net-setup-link.rules

在EM系列储能网关中玩转4G模块 (https://ic.work/) 物联网 第12张

图9修改网卡重命名

3. 网络不通排查当dhclient获取到ip后ping不到百度,提示以下错误:

ping: www.baidu.com: Temporary failure in name resolution

可能是DNS不对或是模块拨号失败导致ping不出去,具体原因可以先ping 114.114.114.114或者ping 8.8.8.8,如果不能ping通则修改DNS,如下:

vi /etc/resolv.conf#注释和添加以下内容:#注释掉:#nameserver 127.0.0.53#options edns0#添加:nameserver 114.114.114.114nameserver 8.8.8.8

然后再ping 百度即可,如果改完还是ping 不通则输入往USB调试接口输入AT+CSQ看下信号,信号太低也可能导致ping不出去,这种情况接上天线多ping几次就行,如图10 ping测试所示:

在EM系列储能网关中玩转4G模块 (https://ic.work/) 物联网 第13张

图10ping测试如果网络还是不通可以使用以下AT指令来排查网络不通的原因:

  • AT+CSQ:查询信号质量。如果返回值较低,表示信号弱,如果为99代表无信号。
  • AT+CEREG?:查询EPS注册状态。类似于AT+CREG?,但适用于LTE网络。
  • AT+COPS?:查询可用运营商列表。如果返回值为空或不正确,表示可能存在运营商选择或配置问题。
  • AT+CGACT?:查询PDP上下文激活状态。如果返回值为0,表示PDP上下文未激活,可能需要重新激活。
  • AT+CGPADDR:查询PDP地址。如果返回值为空,表示未获得有效的IP地址,可能是APN或其他数据连接设置问题。
  • AT+CGDCONT?:查询PDP上下文配置。确保PDP上下文配置正确,包括APN设置等。
  • AT+COPS=?:查询可用运营商列表。使用此指令可以获取可用的运营商列表,并选择合适的运营商进行注册。
  • AT+CIMI:查询国际移动用户识别码(IMSI)。IMSI是SIM卡的唯一标识号码,确保SIM卡插入正确并且正常工作。
  • AT+CPIN?:查询PIN码状态。与之前提到的一样,用于检查SIM卡的PIN码状态。
  • AT+CREG?:查询注册状态。如果返回值为0或2,表示未注册或正在尝试注册,可能是网络连接导致的问题。
  • AT+CGATT?:查询附着状态。如果返回值为0,表示未附着到网络,可能需要重新附着。
  • AT+CGREG?:查询GPRS注册状态。如果返回值为0或2,表示未注册或正在尝试注册,可能是网络连接导致的问题。

部分正常情况调试截图如图11 调试截图所示。

在EM系列储能网关中玩转4G模块 (https://ic.work/) 物联网 第14张

图11调试截图

文章推荐

相关推荐