Linux下ppp拨号+电信3G模块
Linux下ppp撥號+3G模塊(evdo 中興MC8630模塊)
物聯網的發展,嵌入式節點具備3G無線上網功能是個必不可少的功能,奈何網上的資料多數以WCDMA為主,電信的evdo資料不是很多,筆者經過一番實驗,搜尋了一些網站,終于在開發板上,將EVDO模塊(中興MC8630)成功撥號上網,現分享步驟如下:
3G模塊的速度非常快,所以普通的UART串口已經不能滿足速度,所以會通過芯片的USB口來進行數據交互。硬件連接這里就忽略了,有興趣的朋友可以買個usb口的3G模塊。
在Linux下,我們首先要裁剪內核,是它支持usb功能,并且支持usb轉串口功能,因為Linux系統會將這個usb口模擬成三個串口。配置如下:
1.首先我們執行 make at91sam9260ek_defconfig,將它配置成默認的配置。
然后配置選項如下:
完成這些步驟之后,可以進行內核的交叉編譯,退出make menuconfig,輸入make uImage ARCH=arm CROSS_COMPILE=arm-linux-,編譯生成的內核映像文件位于當前內核源代碼文件的/arch/arm/boot目錄下,將生成的內核映像文件下載到板子上。
內核啟動后,會在/dev目錄下生成ppp設備節點。如:
ls /dev/ppp -l
crw-rw—- 1 root root 108, 0 Jan 1 00:00 /dev/ppp
2.交叉編譯好工作源代碼ppp-2.4.4,得到pppd和chat
解壓源代碼包,進入目錄,進行交叉編譯,這里所用的板子的交叉編譯器是:#cd /home/ppp-2.4.4#./configure#make CC= arm-linux-gcc撥號所用到的程序就是ppp-2.4.4/pppd下的pppd和ppp-2.4.4/chat下的chat可執行程序,將交叉編譯出來的這兩個應用程序拷貝到開發板 /usr/sbin目錄下,更改其屬性為可執行文件。
3.配置撥號的腳文件
撥號上網需要的配置文件有3個:evdo,evdo-chat-connect,evdo-chat-disconnect(存放位置/etc/ppp/peers)
1)evdo配置內容
debug nodetach lock /dev/ttyUSB0 115200 user "CARD" password "CARD" crtscts show-password usepeerdns noauth noipdefault novj novjccomp noccp defaultroute ipcp-accept-local ipcp-accept-remote connect '/usr/sbin/chat -s -v -f /etc/ppp/evdo-chat-connect' disconnect '/usr/sbin/chat -s -v -f /etc/ppp/evdo-chat-disconnect'2)evdo-chat-connect配置內容
TIMEOUT 25 ABORT 'NO CARRIER' ABORT 'ERROR' ABORT 'NO DIALTONE' ABORT 'BUSY' ABORT 'NO ANSWER' '' /rATZ OK-AT-OK ATD#777 CONNECT /d/c3)evdo-chat-disconnect配置內容
[cpp] view plain copy ABORT "ERROR" ABORT "NO DIALTONE" SAY"\NSending break to modem\n" ""\k" ""++ATH" SAY "\nGood bay\n"4.連接硬件測試
執行pppd call evdo & (這里建議后臺打開,否則后面無法驗證是否上線成功)
出現如下:
using channel 1 Using interface ppp0 Connect: ppp0 <--> /dev/ttyUSB0 sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0xb30fa866> <pcomp> <accomp>] rcvd [LCP ConfReq id=0x1 <mru 1444> <asyncmap 0x0> <auth chap MD5> <magic 0x15a72540> <pcomp> <accomp>] sent [LCP ConfAck id=0x1 <mru 1444> <asyncmap 0x0> <auth chap MD5> <magic 0x15a72540> <pcomp> <accomp>] rcvd [LCP ConfAck id=0x1 <asyncmap 0x0> <magic 0xb30fa866> <pcomp> <accomp>] rcvd [CHAP Challenge id=0x1 <f7357ad7b3aadc5a769b20931f362921>, name = "JSTELECOM"] sent [CHAP Response id=0x1 <22d4e42eb8bd87eea6bdb2dac3e7cd58>, name = "CARD"] rcvd [CHAP Success id=0x1 "Welcome to JSTELECOM."] CHAP authentication succeeded: Welcome to JSTELECOM. CHAP authentication succeeded sent [IPCP ConfReq id=0x1 <addr 0.0.0.0> <ms-dns1 0.0.0.0> <ms-dns3 0.0.0.0>] rcvd [IPCP ConfReq id=0x0 <addr 172.25.11.56>] sent [IPCP ConfAck id=0x0 <addr 172.25.11.56>] rcvd [IPCP ConfNak id=0x1 <addr 10.38.136.1> <ms-dns1 61.177.7.1> <ms-dns3 218.2.135.1>] sent [IPCP ConfReq id=0x2 <addr 10.38.136.1> <ms-dns1 61.177.7.1> <ms-dns3 218.2.135.1>] rcvd [IPCP ConfAck id=0x2 <addr 10.38.136.1> <ms-dns1 61.177.7.1> <ms-dns3 218.2.135.1>] local IP address 10.38.136.1 remote IP address 172.25.11.56 primary DNS address 61.177.7.1 secondary DNS address 218.2.135.1然后執行 ifconfig (拔掉網線,已驗證是否上線成功)
ifconfig eth0 Link encap:Ethernet HWaddr 3A:1F:34:08:54:54 UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:1 dropped:0 overruns:0 frame:0 TX packets:1 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:590 (590.0 B) Interrupt:21 Base address:0x4000 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) ppp0 Link encap:Point-to-Point Protocol inet addr:10.38.136.1 P-t-P:172.25.11.56 Mask:255.255.255.255 UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1444 Metric:1 RX packets:3 errors:0 dropped:0 overruns:0 frame:0 TX packets:3 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:3 RX bytes:54 (54.0 B) TX bytes:54 (54.0 B)如果出現了 ppp0 說明上線成功了!
下面我們加DNS,DNS的號碼 是上面上線后的 DNS address
vi /etc/resolc.conf,加入內容:
nameserver 61,177.7.1
nameserver 218.2.135.1
下面我們就來ping 一下新浪和百度吧:
好了,ping通了,終于成功上線了!
總結
以上是生活随笔為你收集整理的Linux下ppp拨号+电信3G模块的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: DirectX12(D3D12)基础教程
- 下一篇: 华为面试流程