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