本文介绍4G 模块在EPCM3568B-LI 5G智能边缘计算网关设备上的使用。
引言
EPCM3568B-LI/EPCM3568C-LI 是ZLG致远电子打造的一款性能强劲的工业EMC边缘计算网关产品,该款产品采用硬件兼容性设计,将通信模块接口统一化设计,通过接口预留M.2座子可接入5G/RedCap模组,也可通过转接板兼容MiniPCIE接口的4G模块。EPCM3568B-LI/EPCM3568C-LI的4G/5G/RedCap全兼容设计使得其轻松应对物联网碎片化场景下需要广覆盖、高性能、低功耗等多种通信需求。
4G模块的使用
系统默认已适配移远EC20模块,接下来介绍该模块的使用步骤。
1. 前期准备
- EPCM3568B-LI/EPCM3568C-LI整机一台;MiniPCIe-to-M.2转接板一个,如图1(左)所示;EC20CE模块一个,如图1(右)所示。
图1 MiniPCIe-to-M.2转接板(左)、EC20CE MiniPCIE 4G模块配件(右)
2. 4G模块的安装将EPCM3568B-LI/EPCM3568C-LI设备外壳拆开后,把MiniPCIE EC20 4G模块插在M.2 B KEY接口转MiniPCIE接口座子上并接到主板的M.2 B KEY座子上,接上4G天线,并插入(U)SIM卡。如图2所示:
图23. 模块识别EPCM3568B-LI设备出厂固件驱动配置为自动加载模式。EPCM3568B-LI设备上电后,检查4G模块是否识别。3.1 在/dev目录下有以下设备节点生成
图33.2 使用ifconfig指令查看,有usb0节点生成,说明已经4G模块已识别并且成功加载驱动。
图44. 拨号上网4.1 QMI拨号注:默认使用QMI拨号方式使用quectel-CM工具拨号,并获取IP,测试移动4G卡上网:电信卡:ctnet 移动卡:cmnet 联通卡:3gnet
root@epc356x-devel:/home/zlg# quectel-CM -s &
[1] 1099
root@epc356x-devel:/home/zlg# [06-05_16:35:55:164] Quectel_QConnectManager_Linux_V1.6.0.16
[06-05_16:35:55:166] Find /sys/bus/usb/devices/5-1 idVendor=0x2c7c idProduct=0x125, bus=0x005, dev=0x002
[06-05_16:35:55:173] Auto find qmichannel = /dev/qcqmi0
[06-05_16:35:55:178] Auto find usbnet_adapter = usb0
[06-05_16:35:55:183] netcard driver = GobiNet, driver version = 5.10.110
[06-05_16:35:55:190] ioctl(0x89f3, qmap_settings) failed: Operation not supported, rc=-1
[06-05_16:35:55:197] Modem works in QMI mode
[06-05_16:35:55:246] Get clientWDS = 7
[06-05_16:35:55:278] Get clientDMS = 8
[06-05_16:35:55:310] Get clientNAS = 9
[06-05_16:35:55:342] Get clientUIM = 10
[06-05_16:35:55:374] Get clientWDA = 11
[06-05_16:35:55:406] requestBaseBandVersion EC20CEHCLGR06A05M1G
[06-05_16:35:55:534] requestGetSIMStatus SIMStatus: SIM_READY
[06-05_16:35:55:535] requestSetProfile[1] ///0
[06-05_16:35:55:598] requestGetProfile[1] ///0
[06-05_16:35:55:630] requestRegistrationState2 MCC: 460, MNC: 0, PS: Attached, DataCap: LTE
[06-05_16:35:55:662] requestQueryDataCall IPv4ConnectionStatus: DISCONNECTED
[06-05_16:35:55:664] ifconfig usb0 0.0.0.0
[06-05_16:35:55:683] ifconfig usb0 down
[06-05_16:35:56:366] requestSetupDataCall WdsConnectionIPv4Handle: 0xe179e250
[06-05_16:35:56:527] ifconfig usb0 up
[06-05_16:35:56:545] busybox udhcpc -f -n -q -t 5 -i usb0
udhcpc: started, v1.30.1
udhcpc: sending discover
udhcpc: sending select for10.42.9.32
udhcpc: lease of 10.42.9.32 obtained, lease time 7200
查看是否获取到IP:
root@epc356x-devel:/home/zlg# ifconfig usb0
usb0: flags=4291<UP,BROADCAST,RUNNING,NOARP,MULTICAST> mtu 1500
inet 10.42.9.32 netmask 255.255.255.192 broadcast 10.42.9.63
inet6 fe80::f41b:5cff:fe06:a979 prefixlen 64 scopeid 0x20<link>
ether f6:1b:5c:06:a9:79 txqueuelen 1000 (Ethernet)
RX packets 2 bytes 612 (612.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 22 bytes 3031 (2.9 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
测试网络连通性:
root@epc356x-devel:/home/zlg# ping www.baidu.com
PING www.baidu.com (183.240.99.169) 56(84) bytes of data.
64 bytes from 183.240.99.169 (183.240.99.169): icmp_seq=1 ttl=52 time=90.3 ms
64 bytes from 183.240.99.169 (183.240.99.169): icmp_seq=2 ttl=52 time=69.4 ms
64 bytes from 183.240.99.169 (183.240.99.169): icmp_seq=3 ttl=52 time=57.9 ms
64 bytes from 183.240.99.169 (183.240.99.169): icmp_seq=4 ttl=52 time=60.8 ms
64 bytes from 183.240.99.169 (183.240.99.169): icmp_seq=5 ttl=52 time=64.2 ms
4.2 ECM拨号切换为ECM模式:
echo -e "AT+QCFG="usbnet",1rn" > /dev/ttyUSB2
重启后查看是否切换成功:
cat /dev/ttyUSB2 &
echo -e "AT+QCFG="usbnet"rn" > /dev/ttyUSB2
返回如下则成功切换为ECM模式:
root@epc356x-devel:/home/zlg# cat /dev/ttyUSB2 &
root@epc356x-devel:/home/zlg# echo -e "AT+QCFG="usbnet"rn" > /dev/ttyUSB2
+QCFG: "usbnet",1
OK
配置PDP:
//运营商为电信
echo -e "AT+CGDCONT=1,"IP","CTNET"rn" > /dev/ttyUSB2
//运营商为联通
echo -e "AT+CGDCONT=1,"IP","3GNET"rn" > /dev/ttyUSB2
//运营商为移动
echo -e "AT+CGDCONT=1,"IP","CMNET"rn" > /dev/ttyUSB2
拨号:
echo -e "AT+QNETDEVCTL=1,1,1rn" > /dev/ttyUSB2
获取IP地址:
udhcpc -i usb0
测试网络连通性:
ping www.baidu.com
Q&A
Q1 拨号失败/获取不到IP可按如下步骤进行排查:
1. 模块未配置为QMI模式:检查模块的拨号模式是否正确配置,使用如下命令查看拨号模式。
cat /dev/ttyUSB2 &
echo -e "AT+QCFG="usbnet"rn" > /dev/ttyUSB2
若返回+QCFG: "usbnet",1 则为ECM拨号模式,如果使用QIM拨号则需执行如下命令切换回QMI拨号模式:
echo -e "AT+QCFG="usbnet",0rn" > /dev/ttyUSB2
2. 驱动未加载或存在其他冲突在确认好模块插好,天线接上,sim卡状态(可正常上网)的情况下,排查驱动加载情况。使用dmesg命令查看是否有以下内核打印:在QMI模式下驱动默认自动加载GobiNet驱动, 如需切换为QMI_WWAN驱动,可移除/usr/lib/modules/5.10.110/kernel/drivers/net/usb/GobiNet.ko后重新上电启动。可根据应用场景选择所需的驱动。
[ 17.794334] usb 5-1: new high-speed USB device number 2using xhci-hcd
[ 17.930536] usb 5-1: New USB device found, idVendor=2c7c, idProduct=0125, bcdDevice= 3.18 [ 17.930575] usb 5-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 17.930588] usb 5-1: Product: Android [ 17.930601] usb 5-1: Manufacturer: Android [ 18.081294] option 5-1:1.0: GSM modem (1-port) converter detected
[ 18.082787] usb 5-1: GSM modem (1-port) converter now attached to ttyUSB0
[ 18.085663] option 5-1:1.1: GSM modem (1-port) converter detected
[ 18.087365] usb 5-1: GSM modem (1-port) converter now attached to ttyUSB1
[ 18.090730] option 5-1:1.2: GSM modem (1-port) converter detected
[ 18.092486] usb 5-1: GSM modem (1-port) converter now attached to ttyUSB2
[ 18.094562] option 5-1:1.3: GSM modem (1-port) converter detected
[ 18.096265] usb 5-1: GSM modem (1-port) converter now attached to ttyUSB3
[ 18.098028] find the interface for QUECTEL_VENDOR
[ 18.239528] GobiNet: Quectel_Linux&Android_GobiNet_Driver_V1.6
[ 18.271607] GobiNet::GobiNetDriverBind in 88, out 5
[ 18.273915] GobiNet 5-1:1.4 usb0: register'GobiNet' at usb-xhci-hcd.0.auto-1, GobiNet Ethernet Device, 02:26:e6:16:80:93
[ 18.276874] creating qcqmi0
查看是否生成设备节点:
ls -l /dev/ | grep qcqmi0
查看是否生成网络节点usb0/wwan0
ifconfig -a
3. 通过查看4G模块信息,排查问题列出当前可用的4G模块
root@epc356x-devel:/home/zlg# mmcli -L
/org/freedesktop/ModemManager1/Modem/0 [Quectel] EC20F
获得4G模块的详细信息:
root@epc356x-devel:/home/zlg# mmcli -m 0
--------------------------------
General | dbus path: /org/freedesktop/ModemManager1/Modem/0
| device id: cb8803df26fff3ec0b293197bea9c1a099be1e8d
--------------------------------
Hardware | manufacturer: Quectel
| model: EC20F
| firmware revision: EC20CEHCLGR06A05M1G
| supported: gsm-umts, lte
| current: gsm-umts, lte
| equipment id: 869446074787727
--------------------------------
System | device: /sys/devices/platform/usbhost/fd000000.dwc3/xhci-hcd.0.auto/usb5/5-1
| drivers: option1, GobiNet
| plugin: quectel
| primary port: ttyUSB2
| ports: ttyUSB0 (qcdm), ttyUSB1 (gps), ttyUSB2 (at), ttyUSB3 (at),
| usb0 (net)
--------------------------------
Numbers | own: xxx
--------------------------------
Status | unlock retries: sim-pin (3), sim-puk (10), sim-pin2 (3), sim-puk2 (10)
| state: registered
| power state: on
| access tech: lte
| signal quality: 80% (recent)
--------------------------------
Modes | supported: allowed: 2g, 3g, 4g; preferred: none
| current: allowed: 2g, 3g, 4g; preferred: none
--------------------------------
IP | supported: ipv4, ipv6, ipv4v6
--------------------------------
3GPP | imei: 869446074787727
| operator id: 46000
| operator name: CHINA MOBILE
| registration: home
--------------------------------
3GPP EPS | ue mode of operation: csps-2
--------------------------------
SIM | dbus path: /org/freedesktop/ModemManager1/SIM/0
- firmware revision: EC20CEHCLGR06A05M1G 4G模块的固件版本,由4G模块厂家维护signal quality: 80% (recent) 4G信号质量,百分比值越大,信号越好。如果为0%,请检查天线连接、SIM卡状态(是否欠费、或者卡座接触不良、松动)等情况。state: registered SIM卡注册正常operator name: CHINA MOBILE 当前注册的运营商CHINA MOBILE为中国移动
4. 网络配置异常情况一般使用quectel-CM拨号时会自动获取IP,但如果获取不到IP,可尝试手动获取IP地址。
udhcpc -i usb0 或者dhclient usb0
尝试ping一个外部服务器测试网络连通性:
ping 8.8.8.8
尝试ping 测试域名解析:
ping www.baidu.com
若ping 8.8.8.8正常,但上不了网,则检查DNS设置以及网关设置
DNS设置:
//添加如下:
vim /etc/resolv.conf
...
nameserver 8.8.8.8
检查网关、路由配置:
ip route
route -n
如果没有默认网关,可以手动添加:
ip route add default via <gateway-ip> dev usb0
Q2 quectel-CM拨号时,SIM卡状态一直显示SIM_ABSNET
图51. 确认SIM卡物理连接正常
- 关闭设备电源,取出SIM卡,检查是否有物理损坏(如划痕、氧化);使用其他设备(如手机)测试该SIM卡是否能正常识别,排查SIM卡损坏问题;若使用的是物联卡需确认其是否有设备强制性绑定等问题,可先换成手机卡测试,排除SIM卡问题;重新插入SIM卡,确保方向正确(缺口对齐卡槽方向)正确安装。
2. 使用AT指令查看SIM卡状态
cat /dev/ttyUSB2 &
echo -e "AT+CPIN?rn" > /dev/ttyUSB2
可能返回值以及含义:
- CPIN: READY : SIM卡正常,无需PIN码。CPIN: SIM PIN: 需要输入PIN码(需发送AT+CPIN=1234,1234替换为实际PIN码)。CPIN: SIM ABSENT: 模块未检测到SIM卡。ERROR: AT指令格式错误或模块未响应。
3. 尝试关闭模块的SIM卡自动检测功能,重新上电启动。
echo -e "AT+QSIMDET=0,0rn" > /dev/ttyUSB2
4. 硬件故障排查
Q3 识别不到模块、没有/dev/ttyUSB*设备节点生成检查模块是否插好,模块是否有损坏、确认固件版本是否自带相关驱动等。如果使用的是其他4G模块,原因可能是该设备ID没有写入驱动,需要每次启动先从启动信息中获取4G模块的设备vid和pid,然后再通过如下命令写入驱动。
echo "2c7c 6005 ff" > /sys/bus/usb-serial/drivers/option1/new_id
2c7c为实际使用的4G模块的vid,6005为实际使用的4G模块的pid。Q4 如何设置开机自动拨号在/etc/init.d目录中,创建拨号脚本,如下:
#!/bin/bash
### BEGIN INIT INFO
# Provides: zlg
# Required-Start:
# Required-Stop:
# Default-Start:
# Default-Stop:
# Short-Description: EC20_startup_script
### END INIT INFO
# set -x
LOG_FILE="/var/log/4G_init.log"
# 每次运行前清空日志文件
> "$LOG_FILE"
echo "Startup 4g" >> $LOG_FILE
ec20_start() {
whiletrue
do
if [ -e "/sys/class/net/usb0" ]; then
echo "Detected modem on usb0" >> $LOG_FILE
else
sleep 2
echo "Try again" >> $LOG_FILE
continue
fi
quectel-CM -s >> $LOG_FILE 2>&1 &
sleep 3
ping 8.8.8.8 -W 1 -c 1 > /dev/null
if [[ $? -ne 0 ]];then
sleep 1
killall quectel-CM
continue
else
echo "ec20 startup success." >> $LOG_FILE
break;
fi
done
}
case"$1" in
start)
ec20_start
sleep 1
;;
stop)
killall quectel-CM
;;
restart)
# First stop the service
$0 stop
# Then start the service again
$0 start;;
*)
echo "Usage: $0 {start|stop|restart}"
exit1
esac
exit0
给脚本添加执行权限:
sudo chmod +x /etc/init.d/ec20_startup_script.sh
在/etc/rc.local文件最后exit 0之前 添加该脚本启动命令,如:
vim /etc/rc.local
...
/etc/init.d/ec20_startup.sh start &
exit0
最后执行sync保存后,重新上电启动,测试4G模块自动拨号情况。Q5 如何使用NetworkManager接管4G网络检查4G模块是否已经启动,列出当前4G模块列表。
root@epc356x-devel:/home/zlg# mmcli -L
/org/freedesktop/ModemManager1/Modem/0 [Quectel] EC20F
当前演示只有一个4G模块,/org/freedesktop/ModemManager1/Modem 末尾的 0 是4G模块的索引。要记住这个索引,该索引将用于与4G模块通信的其余命令中。查询4G模块的详细信息:
root@epc356x-devel:/home/zlg# mmcli -m 0
--------------------------------
General | dbus path: /org/freedesktop/ModemManager1/Modem/0
| device id: cb8803df26fff3ec0b293197bea9c1a099be1e8d
--------------------------------
Hardware | manufacturer: Quectel
| model: EC20F
| firmware revision: EC20CEHCLGR06A05M1G
| supported: gsm-umts, lte
| current: gsm-umts, lte
| equipment id: 869446074787727
--------------------------------
System | device: /sys/devices/platform/usbhost/fd000000.dwc3/xhci-hcd.0.auto/usb5/5-1
| drivers: option1, GobiNet
| plugin: quectel
| primary port: ttyUSB2
| ports: ttyUSB0 (qcdm), ttyUSB1 (gps), ttyUSB2 (at), ttyUSB3 (at),
| usb0 (net)
--------------------------------
Numbers | own: xxx
--------------------------------
Status | unlock retries: sim-pin (3), sim-puk (10), sim-pin2 (3), sim-puk2 (10)
| state: registered
| power state: on
| access tech: lte
| signal quality: 80% (recent)
--------------------------------
Modes | supported: allowed: 2g, 3g, 4g; preferred: none
| current: allowed: 2g, 3g, 4g; preferred: none
--------------------------------
IP | supported: ipv4, ipv6, ipv4v6
--------------------------------
3GPP | imei: 869446074787727
| operator id: 46000
| operator name: CHINA MOBILE
| registration: home
--------------------------------
3GPP EPS | ue mode of operation: csps-2
--------------------------------
SIM | dbus path: /org/freedesktop/ModemManager1/SIM/0
从以上信息中获取到primary port端口号为ttyUSB2,使用以下命令创建4G网络连接:
sudo nmcli con add type gsm ifname ttyUSB2 con-name test-ec20-con apn "cmnet" ipv4.method auto ipv6.method ignore
启动连接
sudo nmcli c up test-ec20-con
停止连接
sudo nmcli c down test-ec20-con
查看连接状态
sudo nmcli c show test-ec20-con
测试网络连接
ping www.baidu.com
设置开机自动连接
sudo nmcli con modify test-ec20-con connection.autoconnect yes
设置断线自动重连(默认已启用)
sudo nmcli con modify test-ec20-con connection.autoconnect-retries 5
5G工业物联网边缘计算智能网关
EPCM3568系列 |
|
5G链接
多协议 工业级 多云平台 |