標籤:
一 開發環境簡介
核心版本 3.19.5、3.15(這2個我都試過)
編譯環境 Ubuntu 12.04
3g模組 華為MU709s
SIM卡 聯通
二 主要步驟
向linux核心中添加3G模組驅動(USB轉串口的option驅動)和ppp網路通訊協定的支援
交叉編譯ppp-2.4.2原始碼
將撥接所需的兩個應用程式pppd和chat拷貝到開發板/usr/sbin檔案夾下,
編寫ppp撥號指令碼wcdma、wcdma-chat-connect、wcdma-chat-disconnect並存放在/etc/ppp/peers目錄下。將DNS寫入到/etc/resolv.conf檔案中
執行“pppd call wcdma”命令進行撥號
三 配置3G模組驅動和ppp網路通訊協定棧可參考資來源文件,華為模組Linux核心驅動整合指導-(V100R001_V2.0, Chinese) .pdf
也可按照以下步驟操作
首先進入make menuconfig介面
1 配置3G模組驅動
圖 1
1首先選擇Device Drivers
圖2
2進入USB support
圖 3
進入USB support之後一直往下直到找到圖3並選擇USB轉串口
圖4
最後選擇USB driver for GSM and CDMA modems到此3G卡驅動已經添加完畢
主要是添加了driver/usb/serial/option.c和driver/usb/serial/usb_wwan.c
兩個檔案,儘管驅動添加了,但是這僅僅只是一個usb轉串口驅動,並不能作為網路裝置直接使用,此時就需要ppp網路通訊協定的支援,他將ttyUSB*等裝置類比成網路裝置使用也即(/dev/ttyUSB0<---->ppp0)
2 添加ppp協議
同樣也是進入make menuconfig介面
圖5
首先同樣也是進入驅動配置介面Device Drivers
圖6
6選擇網路裝置支援
7選擇ppp
到這一步驅動和協議就都已經配置成功了接下來就是編譯下載到板子
查看開發板Dev目錄
[[email protected] ~]# ls /dev/ttyUSB
ttyUSB0 ttyUSB1 ttyUSB2 ttyUSB3
四 編寫ppp撥號指令碼
由於該撥號指令碼需要使用chat,pppd,等命令,所以需要下載ppp-2.4.4
下載成功之後首先便是編譯
1 編譯 ppp-2.4.4
一般都很好編過,只是可能會依賴libpcap-1.6.2.tar.gz 這個庫,zlib 庫。編譯過程中如果出現 關於libcrypt.so這樣的錯誤,就把你的編譯工具目錄下的/usr/arm-buildroot-linux-uclibcgnueabihf/sysroot/usr/lib/libcrypt.so 這個庫複製到 /usr/local/lib/ 下即可。
編譯成功後將編譯產生的chat,pppd,等命令拷貝到板子檔案系統的/usr/sbin目錄下邊去
2 編寫撥號指令碼
在板子檔案系統/etc/ppp/peers目錄下邊建立三個檔案如下
wcdma,chat-wcdma-connect,chat-wcdma-disconnect
wcdma設定檔內容
debug
nodetach
/dev/ttyUSB0
115200
usepeerdns
noauth
noipdefault
novj
novjccomp
noccp
defaultroute
ipcp-accept-local
ipcp-accept-remote
connect ‘/usr/sbin/chat -s -v -f /etc/ppp/peers/chat-wcdma-connect‘
disconnect ‘/usr/sbin/chat -s -v -f/etc/ppp/peers/chat-wcdma-disconnect‘
wcdma-chat-connect設定檔內容
TIMEOUT 5
ABORT ‘NO CARRIER‘
ABORT ‘ERROR‘
ABORT ‘NODIALTONE‘
ABORT ‘BUSY‘
ABORT ‘NO ANSWER‘
‘‘ \rAT
OK \rATZ
OK \rAT+CGDCONT=1,"IP","3GNET",,0,0
OK-AT-OK ATDT*99#
CONNECT \d\c
wcdma-chat-disconnect設定檔內容
ABORT"ERROR"
ABORT "NODIALTONE"
SAY"\nSending break to the modem\n"
‘‘ "\K"
‘‘"+++ATH"
SAY"\nGoodbay\n"
建立好撥號指令碼之後就是正式撥號了
pppd call wcdma&
加上&符號主要是因為撥號成功後,程式會一直執行不退出,所以採用後台啟動並執行方式執行,pppd call wcdma是作用是建立協議,並產生網路介面ppp0。也可以修改WCDMA指令碼#nodetach,再執行命令pppd call wcdma就可以在後台運行了。
如果出現以下現象:
表示撥號成功。
3、測試網路連通情況
Ping -I ppp0 www.baidu.com -c 5 -i 1 出現逾時
Route查看路由表
預設網關是eth0,刪除預設閘道route del deflaut 。添加ppp0為預設閘道 route add default dev ppp0。手工添加DNS echo "nameserver 123.123.123.124" > /etc/resolv.conf
Ping -I ppp0 www.baidu.com -c 5 -s 1
網路通訊正常
五 、實現自動撥號
主要寫了2個指令檔,一個是配置指令碼init.sh,內容如下:
echo "nameserver 123.123.123.124" > /etc/resolv.conf
route del default
route add default dev ppp0
ifconfig eth0 down
ifconfig eth0 hw ether 00:12:34:56:78:90
ifconfig eth0 up
另一個是自動撥號指令碼pp.sh。內容如下:
dns1="61.135.169.121" #baidu
dns2="61.135.157.156" #qq
pppd call wcdma &
sleep 12
/root/init.sh
while true
do
ping -s 1 -c 5 $dns1 #|…去PING第一個DNS
if [ "$?" != "0" ] #€|…假如PING不通
then
ping -s 1 -c 2 $dns2 #…去PING第二個DNS
if [ "$?" != "0" ] #|…假如PING不通
then
killall pppd #|…結束PPPD進程
pppd call wcdma & #…再去撥號
sleep 12 #€|…等2s
else
sleep 5 ’
fi
else
sleep 120 # )
fi
done
有了這個指令碼,就可以放心的上網了。
有些人還想即時擷取撥接的訊號強度。這裡有2種方法。
1、通過microcom -s 115200 /dev/ttyUSB0 這種方式要用 Ctrl+x 來退出!
輸入 at+csq
at+csq
+CSQ: 11,99
OK
可以看到訊號強度是11。
2、還可以寫個程式,通過ttyUSB2來發送 at+csq命令,注意這個命令要以\r\n結束,如下所示:
六 注釋
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
華為3G模組撥接