在儲能系統(tǒng)應(yīng)用中,通過4G上云是非?;A(chǔ)和常見的應(yīng)用需求,由于業(yè)務(wù)和場景的多樣性,4G模塊也多種多樣,本文將詳細(xì)介紹如何在EM儲能網(wǎng)關(guān)中玩轉(zhuǎn)4G模塊。
移植準(zhǔn)備
1. 硬件選擇
本文以EM系列中的EM-500儲能網(wǎng)關(guān)作為開發(fā)主體,如圖1所示,EM系列的產(chǎn)品帶有PCIE擴(kuò)展槽及其他豐富的接口,PCIE擴(kuò)展槽里面預(yù)留USB接口,方便對PCIE模塊開發(fā)使用,使用時只需將4G模塊插入PCIE槽即可。
圖1 EM-500儲能網(wǎng)關(guān)
2. 已適配的產(chǎn)品?
目前在EM-500已經(jīng)適配的4G模塊有:L610-CN、L610-EU、NL668、EC20、EC200U-CN、EC200A-CN、EG21-G、EG25-G、SLM770A、BG95-M3、EG912U-GL。
3. 4G模塊調(diào)試接口
當(dāng)我們插入4G模塊后會在/dev/生成若干個USB調(diào)試接口,設(shè)備名字一般為:/dev/ttyUSBX(X=0,1,2….x),如果沒有則輸入lsusb命令查看是否識別到USB設(shè)備,如圖2調(diào)試接口所示,目前插入的4G模塊的PID為2c7c,VID為0125,廠家為移遠(yuǎn),調(diào)試接口有4個。
圖2?調(diào)試接口
如果lsusb可以查看到設(shè)備時,/dev/沒有相應(yīng)的調(diào)試接口時,可以將4G模塊的PID VID輸入到new_id這節(jié)點,輸入以下命令(以圖2的PID VID為例):
echo "2c7c 0125 ff" > /sys/bus/usb-serial/drivers/option1/new_id
成功內(nèi)核會輸出類似以下log:
root@EM500:~# echo "2c7c 0125 ff" > /sys/bus/usb-serial/drivers/option1/new_id
[ 213.905997] option 2-1:1.0: 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:1.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:1.2: 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:1.3: GSM modem (1-port) converter detected
[ 213.927619] usb 2-1: GSM modem (1-port) converter now attached to ttyUSB3
然后在/dev/就可以看到調(diào)試接口了,得到調(diào)試接口就可以使用microcom或者catecho進(jìn)行4G模塊AT指令調(diào)試,例如輸入AT指令查看模塊固件版本,如下圖3 調(diào)試演示所示:
圖3?調(diào)試演示
?撥號上網(wǎng)
1.?撥號方式及選擇
目前4G撥號方式有PPP撥號、ECM撥號、Gobinet撥號、QMI撥號等。在EM系列使用的是ECM撥號,ECM撥號通過利用4G網(wǎng)絡(luò)的高速性能、廣闊覆蓋范圍、低延遲、高帶寬支持和移動性等優(yōu)點,為各種應(yīng)用場景提供了可靠、快速、穩(wěn)定的數(shù)據(jù)連接。這使得設(shè)備能夠?qū)崿F(xiàn)高效的數(shù)據(jù)傳輸和實時通信,滿足不同行業(yè)和領(lǐng)域的需求,且不需要移植任何的工具,像PPP、Gobinet、QMI這些撥號方式,不同的4G模塊廠家都有不同的撥號工具,移植起來比較繁瑣。
2. ECM撥號上網(wǎng)ECM上網(wǎng)很簡單,只需要使用AT指令即可完成,如下演示移遠(yuǎn)EC20模塊在ECM模式下上網(wǎng):首先切換ECM模式
cat /dev/ttyUSB2 &
echo -e "AT+QCFG="usbnet",1rn" > /dev/ttyUSB2
切換完成后需要對模塊進(jìn)行復(fù)位,輸入以下命令:
echo 498 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio498/direction
echo 1 > /sys/class/gpio/gpio498/value
echo 0 > /sys/class/gpio/gpio498/value
復(fù)位完成后ifconfig -a可以看到一個網(wǎng)卡,使用dhclient ?<網(wǎng)卡名>獲取ip后即可上網(wǎng),如圖4 網(wǎng)絡(luò)通信所示。
圖4?調(diào)試演示每種模塊或者廠家切換到ECM 的AT命令是不一樣,目前已適配的4G模塊的ECM切換命令如圖5 ECM切換命令所示。
圖5?ECM切換命令有些4G模塊是不需要撥號的,當(dāng)切換到ECM后,重啟后則會自動撥號,有些4G模塊則需要手動撥號,具體區(qū)分如圖6 ECM撥號所示。
圖6?ECM撥號
手動撥號時需要根據(jù)SIM卡的運營商來進(jìn)行切換,切換完后才能進(jìn)行撥號,對應(yīng)的AT指令如下:
移動:echo -e "AT+CGDCONT=1,"IP","CMNET"rn" > /dev/ttyUSB0
電信:echo -e "AT+CGDCONT=1,"IP","CTNET"rn" > /dev/ttyUSB0
聯(lián)通:echo -e "AT+CGDCONT=1,"IP","3GNET"rn" > /dev/ttyUSB0
以下以EC200U-CN作為演示,如圖 7 EC200U-CN撥號上網(wǎng)所示。
圖7?EC200U-CN撥號上網(wǎng)
? 設(shè)置及問題排查
1. band?號設(shè)置
我國對應(yīng)的band號如圖8 band號分布所示:
圖8?band號分部
同樣是每家廠商對應(yīng)設(shè)置band號是不一樣的,以移遠(yuǎn)的模塊(EG912U-GL)為例,輸入以下指令可以查看現(xiàn)在開啟的band號。
root@em-500:~# cat /dev/ttyUSB0 &
root@em-500:~# echo -e "at+qcfg="band"rn" > /dev/ttyUSB0
+QCFG: "band",0xf,0x2000001e20b0f18df
OK
root@em-500:~#
其中0x2000001e20b0f18df為目前啟用的band號,這里要把0x2000001e20b0f18df換算成二進(jìn)制,1是打開,0是關(guān)閉,第0位是band1,第1位為band2,以此類推,現(xiàn)在EG912U-GL開啟的band號有(列舉一部分):band1,band2,band3,band4,band5,band7,band8,band12等。輸入以下命令可以設(shè)置band號,如下關(guān)掉band1-band8,設(shè)置時不需要帶上0x。
root@em-500:~# echo -e "at+qcfg="band",f,2000001e20b0f1800rn" > /dev/ttyUSB0
OK
root@em-500:~#
2. 網(wǎng)卡名稱問題
當(dāng)切換到ECM后,會生成一些enxxxxxx之類的稀奇古怪的網(wǎng)卡名字,主要原因是被系統(tǒng)的rules給重名命了,如下內(nèi)核打印可知,一般來說切換到ECM后網(wǎng)卡的名字為usbX(X=0,1,2…x)。
cdc_ether 2-1:1.0 enx024bb3b9ebe5: renamed from usb0
解決方法如下:
修改80-net-setup-link.rules內(nèi)容,將NAME=”$env{ID_NET_NAME}”?里的ID_NET_NAME改成ID_NET_SLOT后,重啟設(shè)備就可以了。
打開80-net-setup-link.rules,如下:
vi /lib/udev/rules.d/80-net-setup-link.rules
圖9?修改網(wǎng)卡重命名
3. 網(wǎng)絡(luò)不通排查
當(dāng)dhclient獲取到ip后ping不到百度,提示以下錯誤:
ping: www.baidu.com: Temporary failure in name resolution
可能是DNS不對或是模塊撥號失敗導(dǎo)致ping不出去,具體原因可以先ping 114.114.114.114或者ping 8.8.8.8,如果不能ping通則修改DNS,如下:
vi /etc/resolv.conf
#注釋和添加以下內(nèi)容:
#注釋掉:
#nameserver 127.0.0.53
#options edns0
#添加:
nameserver 114.114.114.114
nameserver 8.8.8.8
然后再ping 百度即可,如果改完還是ping 不通則輸入往USB調(diào)試接口輸入AT+CSQ看下信號,信號太低也可能導(dǎo)致ping不出去,這種情況接上天線多ping幾次就行,如圖10 ping測試所示:
圖10?ping測試
如果網(wǎng)絡(luò)還是不通可以使用以下AT指令來排查網(wǎng)絡(luò)不通的原因:
- AT+CSQ:查詢信號質(zhì)量。如果返回值較低,表示信號弱,如果為99代表無信號。AT+CEREG?:查詢EPS注冊狀態(tài)。類似于AT+CREG?,但適用于LTE網(wǎng)絡(luò)。AT+COPS?:查詢可用運營商列表。如果返回值為空或不正確,表示可能存在運營商選擇或配置問題。AT+CGACT?:查詢PDP上下文激活狀態(tài)。如果返回值為0,表示PDP上下文未激活,可能需要重新激活。AT+CGPADDR:查詢PDP地址。如果返回值為空,表示未獲得有效的IP地址,可能是APN或其他數(shù)據(jù)連接設(shè)置問題。AT+CGDCONT?:查詢PDP上下文配置。確保PDP上下文配置正確,包括APN設(shè)置等。AT+COPS=?:查詢可用運營商列表。使用此指令可以獲取可用的運營商列表,并選擇合適的運營商進(jìn)行注冊。AT+CIMI:查詢國際移動用戶識別碼(IMSI)。IMSI是SIM卡的唯一標(biāo)識號碼,確保SIM卡插入正確并且正常工作。AT+CPIN?:查詢PIN碼狀態(tài)。與之前提到的一樣,用于檢查SIM卡的PIN碼狀態(tài)。AT+CREG?:查詢注冊狀態(tài)。如果返回值為0或2,表示未注冊或正在嘗試注冊,可能是網(wǎng)絡(luò)連接導(dǎo)致的問題。AT+CGATT?:查詢附著狀態(tài)。如果返回值為0,表示未附著到網(wǎng)絡(luò),可能需要重新附著。AT+CGREG?:查詢GPRS注冊狀態(tài)。如果返回值為0或2,表示未注冊或正在嘗試注冊,可能是網(wǎng)絡(luò)連接導(dǎo)致的問題。
部分正常情況調(diào)試截圖如圖11 調(diào)試截圖所示。
圖11?調(diào)試截圖