本文介绍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. 前期准备

图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所示:

图2
3. 模块识别
EPCM3568B-LI设备出厂固件驱动配置为自动加载模式。EPCM3568B-LI设备上电后,检查4G模块是否识别。3.1 在/dev目录下有以下设备节点生成

图33.2 使用ifconfig指令查看,有usb0节点生成,说明已经4G模块已识别并且成功加载驱动。

图4
4. 拨号上网
4.1 QMI拨号注:默认使用QMI拨号方式使用quectel-CM工具拨号,并获取IP,测试移动4G卡上网:电信卡:ctnet 移动卡:cmnet 联通卡:3gnet
root@epc356x-devel:/home/zlg# quectel-CM -s &[1] 1099root@epc356x-devel:/home/zlg# [06-05_1655:164] Quectel_QConnectManager_Linux_V1.6.0.16[06-05_1655:166] Find /sys/bus/usb/devices/5-1 idVendor=0x2c7c idProduct=0x125, bus=0x005, dev=0x002[06-05_1655:173] Auto find qmichannel = /dev/qcqmi0[06-05_1655:178] Auto find usbnet_adapter = usb0[06-05_1655:183] netcard driver = GobiNet, driver version = 5.10.110[06-05_1655:190] ioctl(0x89f3, qmap_settings) failed: Operation not supported, rc=-1[06-05_1655:197] Modem works in QMI mode[06-05_1655:246] Get clientWDS = 7[06-05_1655:278] Get clientDMS = 8[06-05_1655:310] Get clientNAS = 9[06-05_1655:342] Get clientUIM = 10[06-05_1655:374] Get clientWDA = 11[06-05_1655:406] requestBaseBandVersion EC20CEHCLGR06A05M1G[06-05_1655:534] requestGetSIMStatus SIMStatus: SIM_READY[06-05_1655:535] requestSetProfile[1] ///0[06-05_1655:598] requestGetProfile[1] ///0[06-05_1655:630] requestRegistrationState2 MCC: 460, MNC: 0, PS: Attached, DataCap: LTE[06-05_1655:662] requestQueryDataCall IPv4ConnectionStatus: DISCONNECTED[06-05_1655:664] ifconfig usb0 0.0.0.0[06-05_1655:683] ifconfig usb0 down[06-05_1656:366] requestSetupDataCall WdsConnectionIPv4Handle: 0xe179e250[06-05_1656:527] ifconfig usb0 up[06-05_1656:545] busybox udhcpc -f -n -q -t 5 -i usb0udhcpc: started, v1.30.1udhcpc: sending discoverudhcpc: sending select for10.42.9.32udhcpc: lease of 10.42.9.32 obtained, lease time 7200
查看是否获取到IP:
root@epc356x-devel:/home/zlg# ifconfig usb0usb0: flags=4291 mtu 1500 inet 10.42.9.32 netmask 255.255.255.192 broadcast 10.42.9.63 inet6 fe80:5cffa979 prefixlen 64 scopeid 0x20 ether f6:1b:5c:0679 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.comPING 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 ms64 bytes from 183.240.99.169 (183.240.99.169): icmp_seq=2 ttl=52 time=69.4 ms64 bytes from 183.240.99.169 (183.240.99.169): icmp_seq=3 ttl=52 time=57.9 ms64 bytes from 183.240.99.169 (183.240.99.169): icmp_seq=4 ttl=52 time=60.8 ms64 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\",1\r\n" > /dev/ttyUSB2
重启后查看是否切换成功:
cat /dev/ttyUSB2 & echo -e "AT+QCFG=\"usbnet\"\r\n" > /dev/ttyUSB2
返回如下则成功切换为ECM模式:
root@epc356x-devel:/home/zlg# cat /dev/ttyUSB2 & root@epc356x-devel:/home/zlg# echo -e "AT+QCFG=\"usbnet\"\r\n" > /dev/ttyUSB2 +QCFG: "usbnet",1OK
配置PDP:
//运营商为电信 echo -e "AT+CGDCONT=1,\"IP\",\"CTNET\"\r\n" > /dev/ttyUSB2 //运营商为联通 echo -e "AT+CGDCONT=1,\"IP\",\"3GNET\"\r\n" > /dev/ttyUSB2 //运营商为移动 echo -e "AT+CGDCONT=1,\"IP\",\"CMNET\"\r\n" > /dev/ttyUSB2
拨号:
echo -e "AT+QNETDEVCTL=1,1,1\r\n" > /dev/ttyUSB2
获取IP地址:
udhcpc -i usb0
测试网络连通性:
ping www.baidu.com
Q&AQ1 拨号失败/获取不到IP可按如下步骤进行排查:1. 模块未配置为QMI模式:检查模块的拨号模式是否正确配置,使用如下命令查看拨号模式。
cat /dev/ttyUSB2 & echo -e "AT+QCFG=\"usbnet\"\r\n" > /dev/ttyUSB2
若返回+QCFG: "usbnet",1 则为ECM拨号模式,如果使用QIM拨号则需执行如下命令切换回QMI拨号模式:
echo -e "AT+QCFG=\"usbnet\",0\r\n" > /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:2616: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
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 dev usb0
Q2 quectel-CM拨号时,SIM卡状态一直显示SIM_ABSNET

图51. 确认SIM卡物理连接正常
2. 使用AT指令查看SIM卡状态
cat /dev/ttyUSB2 & echo -e "AT+CPIN?\r\n" > /dev/ttyUSB2
可能返回值以及含义:
3. 尝试关闭模块的SIM卡自动检测功能,重新上电启动。
echo -e "AT+QSIMDET=0,0\r\n" > /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_FILEec20_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}" exit1esacexit0
给脚本添加执行权限:
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
全部0条评论
快来发表一下你的评论吧 !