1. 程式人生 > >SIM7100c+pppd 4G上網(am335x)

SIM7100c+pppd 4G上網(am335x)

最近在am335x平臺上除錯SIM7100 4G模組,參考以前除錯過的EC20 4G模組和SIM7600模組。

1. 首先參考SIM7600的(SIM7600需要載入自己的模組驅動),以前SIM7600是用NDIS撥號,速度很快,但是NDIS撥號模式只適合在LTE比較新出品的4G 模組。所以不適用SIM7100。

2. 參考EC20的。EC20撥號的步驟是移植chat,pppd, pppdump,pppstats幾個撥號指令;新增PPP撥號驅動;編寫撥號指令碼;最後就是使用pppd來撥號。

3. 對於識別4G模組生成的6個ttyUSBx, 他們各有各的作用,其中,ttyUSB0~ttyUSB5的情況下,ttyUSB3是撥號節點(也就是MODEM撥號模式的介面),ttyUSB4~ttyUSB9的情況下ttyUSB7是撥號節點:

ttyUSB0——Diagnosticscom

ttyUSB1—NMEA com

ttyUSB2—AT com

ttyUSB3—MODEM com

ttyUSB4—Audio com

ttyUSB5—乙太網高速介面卡

4. 在撥號之前,可以先檢視SIM卡和模組的狀態,這個時候應該使用AT com模式,具體可以使用minicom指令來除錯 “minicom -s -D /dev/ttyUSB2”。下面是相關指令:

AT+CPIN? //檢視是否識別SIM卡

AT+CSQ //檢視訊號強度

AT+CIMI //檢視運營商:

移動(cmnet):4600/02/07/08
聯通(3gnet):46001/06/09
電信(ctnet):46003/05/11


除錯完之後,撥號指令碼和指令整理到了以下連結:

http://download.csdn.net/download/wxxgoodjob/10170530

除錯的過程參考了一些三個連結:

1. http://m.blog.csdn.net/qq_32384313/article/details/77725544
2. http://blog.csdn.net/cloudjx/article/details/54313530
3. http://www.linuxidc.com/Linux/2016-03/129581.htm

其中,第2點內容比較重要,先貼上下來吧:

新增SIM7100c串列埠驅動

找到核心原始碼檔案 option.c(一般情況下,

路徑在drivers/usb/serial/option.c)

如果是較新的核心版本(3.2以上)

#defineSIMCOM_SIM7100_VID 0x1E0E

#defineSIMCOM_SIM7100_PID 0x9001

//forSIM7100 modem for NDIS

staticconst struct option_blacklist_info simcom_sim7100_blacklist = {

.reserved= BIT(5),

};

option_ids列表中增加

......

//forSIM7100 modem for NDIS

{USB_DEVICE(SIMCOM_SIM7100_VID, SIMCOM_SIM7100_PID),

.driver_info= (kernel_ulong_t)& simcom_sim7100_blacklist t

},

......

如果是較低的核心版本,

#defineSIMCOM_SIM7100_VID 0x1E0E

#defineSIMCOM_SIM7100_PID 0x9001

option_ids列表中增加

{USB_DEVICE(SIMCOM_SIM7100_VID, SIMCOM_SIM7100_PID)}, /*SIM7100 */

並且在 option_probe裡過濾掉interface5

/*sim7100 */

if(serial->dev->descriptor.idVendor == SIMCOM_SIM7100_VID &&

serial->dev->descriptor.idProduct== SIMCOM_SIM7100_PID &&

serial->interface->cur_altsetting->desc.bInterfaceNumber== 5 )

return-ENODEV;

makemenuconfig >Device drivers > USB suooport

<*>USBSerial Converter support --->

[*]USBGSM and CDMA modems

[*]Genericserial driver(*)

PPPD配置

編譯ppp

ppp資料夾放在系統的“etc/”目錄;

pppd檔案放在系統的“usr/sbin/”目錄。

將“libpcap.so.1”拷貝到“/usr/lib”:

同時將ls-gprs檔案的串列埠改為ttyUSB2波特率設為115200

/ppp/chat/gprs-connect-chat配置如下:

TIMEOUT15

ABORT"DELAYED"

ABORT"BUSY"

ABORT"ERROR"

ABORT"NO DIALTONE"

ABORT"NO CARRIER"

TIMEOUT40

''\rAT

OKATS0=0

OKATE0V1

OKAT+CGDCONT=1,"IP","CMNET"

OKAT+CGEQREQ=1,2,128,384,,,0,,,,,,

OKATDT*99*1#

CONNECT

/ppp/peers/ls-gprs(如果沒有則自己建立一個,名字無所謂)配置如下:

#Usage: root> pppd call ls-gprs

/dev/ttyUSB2//sim7100c通訊串列埠

115200//波特率

crtscts

modem

noauth

debug

nodetach

#hide-password

usepeerdns

noipdefault

defaultroute

user"cmnet"

0.0.0.0:0.0.0.0

#ipcp-accept-local

#ipcp-accept-remote

#lcp-echo-failure12

#lcp-echo-interval3

#noccp

#novj

#novjccomp

#persist

connect'/usr/sbin/chat -s -v -f /etc/ppp/chat/gprs-connect-chat'

PPPD啟動

pppdcall ls-gprs&

PPPD將會在後臺執行。成功啟動後,就可以直接使用TCP的方式進行通訊了,pppd會自動根據配置與4g模組進行通訊。

PPPD斷開

killallpppd