1. 程式人生 > >在ARM-linux上實現4G模組PPP撥號上網

在ARM-linux上實現4G模組PPP撥號上網

轉自 http://blog.sina.com.cn/s/blog_7880d3350102wb92.html



在ARM平臺上實現4G模組的PPP撥號上網,參考網上的資料和自己的理解,從一無所知到開發完成花了一週多。最後看到ARM板ping通www.baidu.com時甚是高興,現將此過程整理如下。當然,除此之外要做的工作還有很多。

4G模組使用的SIMTECH 的SIM7100C,SIM7100C帶有UART和USB介面,在考慮速度上我們使用USB介面和ARM進行通訊。所以向linux核心新增3G模組的驅動(USB轉串列埠驅動)和PPP協議的支援,然後編譯核心並下載到開發板。

1. 編譯核心

◇ 大容量儲存驅動

> Device Drivers > USB support
make ARCH=arm menuconfig配置USB驅動:
<*>     USB Mass Storage support
[*]       USB Mass Storage verbose debug
<*>       Realtek Card Reader support
[*]         Realtek Card Reader autosuspend support
<*>       Datafab Compact Flash Reader support

◇ USB驅動

> Device Drivers > USB support
<*>   Inventra Highspeed Dual Role Controller (TI, ADI, ...)   
            MUSB Mode Selection (Dual Role mode)  --->             
    <*>     Platform Glue Layer (TI DSPS platforms)  --->           
        MUSB DMA mode (Disable DMA (always use PIO))  --->
<*>   USB Serial Converter support  --->
[*]      USBGeneric Serial Driver 
<*>     USBdriver for GSM and CDMA modems

◇ PPP驅動

> Device Drivers > Network device support
   <*>   PPP (point-to-point protocol) support         
    <*>     PPP BSD-Compress compression                         
    <*>     PPP Deflate compression                              
     [*]     PPP filtering                                            
    <*>     PPP MPPE compression (encryption)                          
     [*]     PPP multilink support                 
    <*>     PPP over Ethernet                 
    <*>     PPP support for async serial ports    
    <*>     PPP support for sync tty ports      
<*>   SLIP (serial line) support      
[*]   CSLIP compressed headers

 

2. 交叉編譯libusb

下載usblib庫和libusb-compat

https://sourceforge.net/projects/libusb/files/

[email protected]:/opt/usb-tools/libusb-1.0.20# mkdir install
configure: error: "udev support requested but libudev not installed"(解決:新增--disable-udev)
[email protected]:/opt/usb-tools/libusb-1.0.20# ./configure --host=arm-none-linux-gnueabi --prefix=/opt/usb-tools/libusb-1.0.20/install --disable-udev
[email protected]:/opt/usb-tools/libusb-1.0.20# make
[email protected]:/opt/usb-tools/libusb-1.0.20# make install
 

新增環境變數 http://www.linuxidc.com/Linux/2011-03/33432.htm(PKG_CONFIG_PATH設定)

[email protected]:/opt/usb-tools/libusb-1.0.20# export PKG_CONFIG_PATH=/opt/usb-tools/libusb-1.0.20/install/lib/pkgconfig:$PKG_CONFIG_PATH
[email protected]:/opt/usb-tools/libusb-1.0.20# echo $PKG_CONFIG_PATH
 
編譯libusb-compat:

[email protected]:/opt/usb-tools/libusb-compat-0.1.5# ./configure --host=arm-none-linux-gnueabi --prefix=/opt/usb-tools/libusb-compat-0.1.5/install
[email protected]:/opt/usb-tools/libusb-compat-0.1.5# make
[email protected]:/opt/usb-tools/libusb-compat-0.1.5# make install

 
將生成的libusb-1.0.20和libusb-compat-0.1.5下的庫檔案複製到ARM板上的linux的/lib下面即可。
 
3. 交叉編譯4G模組驅動

交叉編譯GobiSerial.c(ARCH=arm CC=arm-none-linux-gnueabi-gcc),得到GobiSerial.ko。複製到ARM板安裝驅動

#insmod GobiSerial.ko
 
4. 檢視驅動執行狀況

插上4G模組,虛擬出6個ttyUSB,它們分別是:

[email protected]:/# ls /dev/ttyUSB*
/dev/ttyUSB0  /dev/ttyUSB1  /dev/ttyUSB2  /dev/ttyUSB3  /dev/ttyUSB4  /dev/ttyUSB5
1) /dev/ttyUSB0-diag port for output developing messages
2) /dev/ttyUSB1- NMEA port for GPS NMEA data output
3) /dev/ttyUSB2-AT port for AT commands
4) /dev/ttyUSB3-Modem port for ppp-dial
5) /dev/ttyUSB4-audio port
6) /dev/ttyUSB5-Virtual Net card

 
插上U盤,提示裝置執行:

[75097.986054] usb 2-1: New USB device found, idVendor=058f, idProduct=6387
[75097.993167] usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[75098.000689] usb 2-1: Product: Mass Storage
[75098.004995] usb 2-1: Manufacturer: Generic
[75098.009342] usb 2-1: SerialNumber: AC3DF2EE
[75098.024341] usb-storage 2-1:1.0: USB Mass Storage device detected
[75098.049922] scsi0 : usb-storage 2-1:1.0

lsusb命令檢視結果:

Bus 001 Device 002: ID 1e0e:9001
Bus 002 Device 002: ID 058f:6387
Bus 001 Device 001: ID 1d6b:0002
Bus 002 Device 001: ID 1d6b:0002

5. 交叉編譯PPP

參見:http://blog.sina.com.cn/s/blog_7880d3350102wb3e.html
 
6. 撥號指令碼設定

[email protected]:/etc/ppp# vi gprs-connect-chat
#Chat script for China Mobile, used SIMCOM sim4100 TD module.
TIMEOUT 15
ABORT "DELAYED"
ABORT "BUSY"
ABORT "ERROR"
ABORT "NO DIALTONE"
ABORT "NO CARRIER"
TIMEOUT 40
'' \rAT
OK ATS0=0
OK ATE0V1
OK AT+CGDCONT=1,"IP","CMNET"
OK AT+CGEQREQ=1,2,128,384,,,0,,,,,,
OK ATDT*99*1#
CONNECT
[email protected]:/etc/ppp/peers# vi gprsdial
#/etc/ppp/peers/gprsdial
# This is pppd script for China Mobile, used SIMCOM SIM7100 Module
# Usage: root>pppd call gprs
#Interface should be used is the interface which connects physics interface of S
/dev/ttyUSB3
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-failure 12
#lcp-echo-interval 3
#noccp
#novj
#novjccomp
#persist
connect '/usr/sbin/chat -s -v -f /etc/ppp/gprs-connect-chat'
#disconnect '/bin/chat -v -f /etc/ppp/gprs-disconnect-chat'
 

6. 撥號

[email protected]: pppd call gprsdial
 
6. 測試

撥號之後進行測試,發現可以ping通ip但是無法ping通域名。這需要設定/etc/resolv.conf來新增DNS解析伺服器的地址

檔案/etc/resolv.conf配置DNS客戶,它包含了主機的域名搜尋順序和DNS伺服器的地址,每一行應包含一個關鍵字和一個或多個的由空格隔開的引數。下面是一個例子檔案: 
domain test.com
search www.test.com test.com
nameserver 202.96.128.86
nameserver 202.96.128.166
nameserver   #定義DNS伺服器的IP地址
domain       #定義本地域名
search       #定義域名的搜尋列表
sortlist     #對返回的域名進行排序
主要是nameserver關鍵字,如果沒指定nameserver就找不到DNS伺服器,其它關鍵字是可選的。
    我這裡只設置了兩個DNS,如下:
ameserver 114.114.114.114

nameserver 8.8.8.8
 
參考文件:
How to use the SIM7100 module in Linux.pdf
http://blog.csdn.net/hanmengaidudu/article/details/17099737
http://www.linuxidc.com/Linux/2011-03/33430p2.htm
http://www.linuxidc.com/Linux/2011-03/33430.htm

相關推薦

ARM-linux實現4G模組PPP撥號上網

轉自 http://blog.sina.com.cn/s/blog_7880d3350102wb92.html 在ARM平臺上實現4G模組的PPP撥號上網,參考網上的資料和自己的理解,從一無所知到開發完成花了一週多。最後看到ARM板ping通www.baidu.com時甚

嵌入式Linux利用ppp實現4G模組聯網

之前做專案時需要用到SIM7100模組,便快速瞭解下ppp撥號,實現了功能,但是功能雖然實現了,卻依然有許多疑問,這段時間有點時間,打算更加詳細的研究下。 編譯ppp2.4.5 下載:官方地址 編譯:#1.解壓ppp程式包 tar -xzvf ppp-2.4.

GPRS模組Linux平臺上ppp撥號上網總結與心得

由於一個嵌入式平臺上專案開發的需要,在arm平臺上實施ppp撥號上網。說起這個linux平臺的ppp撥號上網,也許很多人覺很簡單,網上     的成功的例子很多!不錯,你說的對,但是我還要給點我的看法,就是這個簡單的ppp撥號折騰了我的時間之長,我都不好意思講。但是,現

使用VS2012編寫arm-linux的應用程序

蘿蔔 方便 分享 不支持 開發 eat nbsp ips eclips 習慣了window上的集成開發環境,對於Linux上的C/C++開發覺得相當蛋疼。 可能大佬們會批,Linux有vim如何強大的工具,可惜真用不來,蘿蔔青菜吧。 剛接觸Linux時,覺得應用程序的調試,

如何在Linux實現:Eureka服務的開機自啟動?

參數 src class blog nohup echo 創建文件 too hup 【問題描述】   由於最近在使用Spring Eureka的註冊中心服務,而辦公室每天晚上要斷電,每天早上過來後需要手工啟動Eureka服務非常麻煩。   需要實現:開機自動該服務的功能。

Linux實現ssh免密碼登陸遠程服務器

Linux上實現ssh免密碼登陸遠程服務平常使用ssh登陸遠程服務器時,都需要使用輸入密碼,希望可以實現通過密鑰登陸而免除輸入密碼,從而可以為以後實現批量自動部署主機做好準備。 環境如下: IP地址 操作系統 服務器端 10.0.0.10 CentOS 6.5 x86 客戶端 10.0.0

[問答] 在arm-linux如何修改系統記憶體的大小?

http://bbs.elecfans.com/jishu_1603506_1_1.html demo板上預設的系統記憶體是512M,我修改了一下boot啟動引數為256M後,發現記憶體啟動過程中掛掉了 而且發現dts檔案中的 memory [ device_type

arm-linux用gdb除錯程式,出現“Program received signal SIGPIPE, Broken pipe”

        出現這種情況大多是因為程式採用CS架構(伺服器/客戶端)在讀寫操作時出現,我第一次也是在這樣的情況下遇到的。首先我們都知道套接字的通訊方式是雙工的,同端即可寫也可讀。而出現Broken pipe這種情況的原因是寫段正在寫入時,另一端已關閉套接字,這樣程序就會向

CentOS 下安裝openOffice,並在Linux實現office轉PDF

安裝openOffice 前提是系統已經安裝好java環境,網上很多需要解除安裝系統自帶java環境的,我覺得沒必要,直接使用也ok。 進入下載的openOffice所在目錄,執行(tar -zxvf Apache_OpenOffice_4.1.5_Linux

Linux移植EC20 4G模組驅動簡易教程

關於4G模組常見的品牌與型號: 品牌 型號 市場價格 晶片組 狀態 HUAWEI ME909s-821 210

中興4g模組me3760撥號

撥號指令碼列印的資訊 AT> AT+ZEACT=2//LTE 接入技術 LTE-TDD Pref AT< +CREG: 2 AT< +CGREG: 2 AT< +CEREG: 2 AT< +ZMSRI AT< OK AT> AT

利用forever在Linux實現Node.js專案自啟動

在一臺計算機上手動跑Node專案簡單,node xx.js就搞定了,想讓Node專案後臺執行,雖然不能直接用node命令搞定,但是在安裝了forever這個包以後,還是很輕鬆的。不過要是在遠端伺服器上構建Node專案,如果沒法自啟動,一旦伺服器重啟,那麼專案必須通過管理員遠

ARM+LINUX使用pppd拔號上網(GPRS)流程

1.修改2.6.30核心選項,  make menuconfig Device drivers -> Networking device support -> PPP(point to point protocol) support  我選了以下模組(以M方式

Linux開發】OpenCV在ARM-linux的移植過程遇到的問題4---共享庫中巢狀庫帶路徑【已解決】

【Linux開發】OpenCV在ARM-linux上的移植過程遇到的問題4—共享庫中巢狀庫帶路徑【已解決】 標籤:【Linux開發】 緊接著上一篇,我居然又嘗試了一下編譯opencv,主要是因為由於交叉編譯ARM-Linux,opencv,好像剛開始ma

Linux/Android系統通過PPP撥號上網

 嵌入式系統經常需要具備無線上網的功能,但在有的應用場景中無法使用wifi,這時可以通過GPRS模組上網。GPRS模組是基於AT命令進行控制的。對於微控制器這類沒有複雜作業系統的平臺來說,往往要通過應用程式,直接傳送AT命令給GPRS模組,以使GPRS模組連線到網路並建立

Ramdisk簡介以及嵌入式Linux實現

Sam多年前在剛接觸Linux時第一個專案是個DVR專案,此專案當時誰作誰辭職。在Sam加入之前,幾乎已經換了3撥人了。Sam作為一個外行加入其中,並最終幾乎重寫了所有模組,雖然現在想來程式架構和程式碼質量相當不好。但總算把東西給作出來了。呵呵,閒話不說,回到主題:在

Linux實現Mysql的主從複製(為Mycat讀寫分離作準備)

今天做不成的事,明天也不會做好。 各位同學大家好,今天給大家分享一下資料庫的主從複製和讀寫分離。為什麼我們要做這些呢:我們知道,隨著專案使用者併發量的增加,應用層通過各種第三方技術以及微服務架構達到了需求,但是瓶頸會卡在的資料庫上;因此,我們

移植qrencode到ARM-Linux實現字串生成二維碼圖片

系統環境:Ubuntu 12.04.3 LTS 交叉編譯器:arm-none-linux-gnueabi-gcc(v4.5.2) 1、交叉編譯zlib庫 tar -xzvf zlib-1.2.3.tar.gz export CC=arm-none-l

如何在Linux實現檔案系統的自動檢查和修復?

平常Linux管理方面最重要的任務之一就是,檢查檔案系統的完整性。Linux檔案系統有可能在各種各樣的情況下受到損壞,比如系統崩潰、突然斷電、磁碟斷開,或者檔案節點(i-node)不小心被覆蓋等等。因此,定期檢查檔案系統的完整性是個好主意,以便儘量減小檔案系統受到損壞的風

Linux實現將檔案隱藏到影象中

Steganography(隱寫術)是一個寬泛的話題。這個教程只涉及如何將檔案掩藏到影象檔案中,這也是St