最近專案需要在arm板上裝一塊3g的無線模組,於是查了很多資料,弄了很久才發現是資料中出了些問題,故將整個除錯過程寫成部落格,以後方便查閱。一、3g模組現在手上的這塊模組是龍尚u7309系列(o(╯□╰)o,沒有打廣告)的,**上這個系列好像都沒得買了。以前沒接觸過這類東西,於是各種查詢資料……
二、移植步驟
簡單說一下這個模組的撥號流程,具體原理性的知識不作展開。這個模組通過usb介面與開發板相連線,在連線過後會在 /dev目錄下生成3個串列埠裝置節點,一般是ttyusb0,ttyusb1與ttyusb2,然後我們需要通過ppp對這幾個裝置進行撥號即可。
但是有些開發板上會識別並將模組上的usb轉換為串列埠,並可以進行ppp撥號,但是也有很多arm並沒有現成的功能,需要我們自己去移植。下面是針對最杯具的情況進行說明。
1、新增usb轉串列埠支援
首先將arm開發板啟動,將模組通過usb連線至開發板,如果/dev目錄下出現了ttyusb0,ttyusb1與ttyusb2,那麼恭喜你可以直接跳過該步驟。如果沒有的話,linux會列印出相關的資訊,其中包括模組的製造商與產品號,idvendor=1c9e, idproduct=9603,記下這兩個號,後面會用到。
接下來需要對核心進行編譯,需要開發板上執行核心的原始碼,當然也可以單獨對核心模組進行編譯,因為後面需要ppp模組,這裡採用編譯整個核心。在編譯核心之前需要對個別檔案進行修改,修改的檔案為/linux/drivers/usb/serial/option.c。
然後,在編譯核心的時候選上與usb轉串列埠相關的選型,與ppp撥號相關的,注意是編譯進核心,是編譯成模組。然後重新編譯核心即可。
2、編譯ppp程式
要在arm板上進行ppp撥號,還需要pppd程式與chat等程式,這裡我選擇自己進行交叉編譯。這裡版本號為ppp-2.4.5,一開始使用ppp-2.4.1進行編譯沒有成功,換用了2.4.5很順利的就編譯成功了。
./configure
make cc=arm-linux-
之後將chat、pppd、pppdump、pppstats目錄下對應的可執行檔案拷貝出來,放置在開發板中的/bin目錄(先執行pppd,看會不會出現亂碼,有的話就對了,如果按ctrl+c關不掉亂碼,就只能另開乙個終端啦~有些開發板chat是放置在/usr/sbin目錄,具體可以看撥號出錯提示)。
3、新增撥號指令碼
以上各種準備好之後,我們只要準備好撥號指令碼就行了。這裡我給出的是聯通的撥號指令碼。
首先如果/etc下沒有ppp目錄,那麼新建乙個,之後的ppp目錄下需要有chat目錄與peer目錄。
chat目錄新建gprs-connect-chat與gprs-disconnect-chat檔案,檔案內容如下。
gprs-connect-chat:
timeout 15
abort
'no carrier'
abort
'error'
abort
'nodialtone'
abort
'busy'
abort
'no answer'
""'at'
ok at+cgdcont=1,"ip","3gnet",,0,0
ok 'atdt*99#'
connect ''
gprs-disconnect-chat:
abort
"error"
abort
"no dialtone"
say "\nsending break to the modem\n"
''"\k"
''"+++ath"
say "\ngood bye\n"
peer目錄下新建cdma_gprs檔案,檔案內容如下,如果需要除錯,請將nodetach與debug前的『#』去掉。
cdma_gprs:
lock
/dev/ttyusb2
115200
#nodetach
crtscts
modem
#debug
usepeerdns
noipdefault
defaultroute
user "3gnet"
password "card"
noauth
novj
novjccomp
noccp
ipcp-accept-local
0.0.0.0:0.0.0.0
ipcp-accept-remote
connect
'/usr/sbin/chat -v -s -f /etc/ppp/chat/gprs-connect-chat'
disconnect '/usr/sbin/chat -v -s -f /etc/ppp/chat/gprs-disconnect-chat'
之後只要執行pppd call cdma_gprs即可,如果撥號失敗,將cdma_gprs檔案中的/dev/ttyusb2更改為/dev/ttyusb0或者/dev/ttyusb1重新嘗試。出現
primary dns address 乙個ip
secondary dns address 乙個ip
說明撥號成功。此時如果只能ping通ip的話,檢視是否是dns配置錯誤,或者關閉乙太網卡重新嘗試。 ARM板和Linux上的3G配置詳解
我們這段時間作了乙個基於arm開發板和開源linux的3g模組,給大家作個參考。3g選用的是華為的ec1261,usb介面,現在市面上的基本都是usb口,據說可以直接去掉在usb modem的usb轉串列埠等模組,直接通過gpio口來控制3g模組,但是由於我們這資源有限,實現不了那麼複雜的工作,所以...
sqlite3 在arm板上的編譯
對於乙個 使用了資料庫的程式,編譯會與普通程式不同,首先編譯會用到sqlite3 解壓編譯之後的buid資料夾下的 檔案庫。編譯 arm linux gnueabif gcc o test test.c test.h i home milan dufan test mx6 build include...
SIP協議在3G網路中的應用
會話起始協議sip是3g的ip 多 子系統中提供多 業務的核心技術。文章首先介紹了sip的基本工作原理,然後對3gppumtsr5定義的ims進行了簡要描述,最後詳細闡述了sip在ims提供服務的過程及對漫遊使用者的處理。會話起始協議 sessioninitiationprotocol 是由ietf...