標籤:
一:編輯Linux核心,使其支援PPP撥接
[[email protected] linux-3.0]$ make menuconfig
Device dirver --->Network device *** CAIF transport drivers *** <*> PPP (point-to-point protocol) support [*] PPP multilink support (EXPERIMENTAL) [*] PPP filtering <*> PPP support for async serial ports <*> PPP support for sync tty ports <*> PPP Deflate compression <*> PPP BSD-Compress compression <*> PPP MPPE compression (encryption) (EXPERIMENTAL) <*> PPP over Ethernet (EXPERIMENTAL)
二:編譯ppp-2.4.4.tar.gz
下載ppp-2.4.4.tar.gz
http://download.csdn.net/detail/zhyustar/1531748
[[email protected] ~]$ mkdir GPRS
[[email protected] ~]$ cd GPRS
[[email protected] GPRS]$ tar -xzf ppp-2.4.4.tar.gz
[[email protected] GPRS]$ ls
ppp-2.4.4 ppp-2.4.4.tar.gz
[[email protected] GPRS]$ cd ppp-2.4.4
[[email protected] ppp-2.4.4]$ ls
[[email protected] ppp-2.4.4]$ ./configure
[[email protected] ppp-2.4.4]$ cd chat/
[[email protected] chat]$ ls
chat.8 chat.c Makefile Makefile.linux Makefile.sol2
[[email protected] chat]$ vim chat.c
[[email protected] chat]$ vim Makefile
[[email protected] chat]$ cd ../pppd
[[email protected] pppd]$ vim auth.c
[[email protected] pppd]$ vim Makefile
[[email protected] ppp-2.4.4]$ make
[[email protected] ppp-2.4.4]$ cd chat
[[email protected] chat]$ ls
chat chat.8 chat.c chat.o Makefile Makefile.linux Makefile.sol2
[[email protected] chat]$ file chat
chat: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), not stripped
[[email protected] pppd]$ file pppd
pppd: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), not stripped
把產生的pppd 和chat 下載到自己的開發板上,放在/usr/sbin中,並修改許可權
如:chmod 777 chat
三:製作指令檔
gprs模組ppp撥接的時候需要如下幾個設定檔:
<1> /etc/ppp/peers/gprs
<2>/etc/ppp/chat-gprs-connect
預設情況在開發板的/etc/ppp/目錄下建立檔案gprs-connect-chat,它是在ppp底層會話的時候給chat進程的參數,每行是一個“期望/發送”的組合序列。
一個簡單的chat指令碼有下面的結構:
“” AT
OK ATDT dialnumber
CONNECT “”
1) MODEM期望Null 字元串。這句話的意思直接理解就是MODEM不管收到什麼字串,先發出字串AT;
2) 期望收到“OK”字串,然後發送字串“ATDT dialnumber”
3) 如果收到“CONNECT”,就不再發送,認為資料鏈路已建立串連。
4)如果需要進行逾時控制,就可以加入如下欄位:
TIMEOUT 10
5)如果要增加對特殊情況的處理,就加入下面欄位:
ABORT BUSY
ABORT NO ANSWER
ABORT RINGING
意思是:如果收到字串“BUSY”、“NO ANSWER”、“RINGING”就退出執行。
編寫chat指令碼如下:以下都是在開發板上操作
~>cd /etc
~>mkdir ppp
~>cd ppp
~>vi gprs-connect-chat
#/etc/ppp/gprs-connect-chat#Copyright (c) 2016 hulu [email protected]# This is second part of the ppp dial script. It will perform the connection ABORT ‘BUSY‘ ABORT ‘NO ANSWER‘ ABORT ‘NO CARRIER‘ ABORT ‘NO DIALTONE‘ ABORT ‘ERROR‘ ABORT ‘\nRING\r\n\r\nRING\r‘ ‘‘ \rAT OK ATE0 SAY "Press CTRL-C to break the connection process.\n" OK ‘AT+CGDCONT=1,"IP","3GNET"‘ //isp接入網關為中國聯通的3GNET OK ATDT*99# //這裡要改成自己的電訊廠商號碼。。我的這個號碼是聯通的 #撥接 SAY "Waiting for connect...\n" CONNECT ‘‘ SAY "Connect Success!\n"
編寫gprs設定檔:
它的作用是給pppd進程提供配置參數(詳見man 8 pppd的輸出內容,如果出現問題這個將是非常重要的參考頁),內容如下:
~>mkdir peers
~>cd peers
~>vi gprs
#/etc/ppp/peers/gprs# Usage: root>pppd call gprs#set seriral /dev/ttyS1# set baudrate 115200# set flowdate 可能你的串口是需要crtscts,硬體流控的,這是由你的串口決定的,一般嵌入式系統的串口沒有帶硬體流控,也不需要就加nocrtscts nocrtscts#set debug ,send message to /var/log/messages debug#To keep pppd on the terminal nodetach# Accept the peer‘s idea of our local IP address ipcp-accept-local# Accept the peer‘s idea of its (remote) IP address ipcp-accept-remote#dial up connetion as the default route defaultroute usepeerdns Noipdefault user hulu connect ‘/usr/sbin/chat -s -v -f /etc/ppp/chat-gprs-connect‘
pppd調用chat會話進程接入對端isp,啟動對端的pppd,然後本地pppd與對端的pppd一起進行協商網路參數和chap/pap認證,成功後,再進行ncp層的ip的分配。
四:在開發板上測試ppp撥號
要用ping,你需要將eth0即網口給禁用掉,這樣ping才會通過ppp0連接埠尋找路由串連外網
~>ifconfig eth0 down
~>pppd call gprs & //&是後台執行的意思。。只有這條後台執行。。我們才能在前台檢測是否上網
如果出現ping得通4.2.2.2,卻png不通www.baidu.com,那就是DNS的問題
解決辦法:
你可能需要將/etc/ppp/resolv.conf(內容被新獲得的dns取代)內容拷貝到/etc/resolv.conf中或者做一個到/etc/resolv.conf的連結
也可以直接編輯/etc/resolv.conf
~>vi /etc/resolv.conf
nameserver 4.2.2.2
nameserver 8.8.8.8
~>ifconfig
至此關於sim900GPRS模組ppp撥接成功實現,各位讀友們有問題直接私聊我!!
sim900GPRS模組ppp撥接