android 手機通過mode上網流程

一 usb 識別和 mode 轉換
1: 識別usb-otg
     根據 pid vid 識別設備
2: switcmode
     通過pid 從 android 資源目錄下assets 的 config 文件包找到對應的文件獲取裏面的信息,通過串口通信寫入設備,寫入成功後重新掃描獲取設備;
Opening port type SERIAL


二 AT 指令撥號
 
     AT指令通信是通過usb串口通信實現的;不能使用腳本

/dev/ttyUSB0
115200
nocrtscts
modem
debug
nodetach
usepeerdns
defaultroute
user "3gnet"
#connect '/usr/sbin/chat -s -v -t 15  "" "ABORT BUSY" "" "ABORT ERROR" "" "ABORT NO CARRIER" "" AT "" "OK AT+CGDCONT=1,IP,3GNET" "" "OK ATDT*99#" "" CONNECT "" '

原因:插入3gmoden 手機沒有識別出 ttyUSB ( 188)設備,通過命令查看cat /proc/devices 不支持ttyUSB
腳本說明:
  PPP連接關係密切的有兩個腳本是chat和options兩個腳本。其中,chat腳本是用來進行AT呼叫和控制的腳本,而options腳本就影響PPP連接的 
 nsitd_config:爲 options , nsitd_config_chat: 爲chat;
執行腳本:pppd nsitd_configs

1:  usb modeswitch 轉換完成後發送的命令,確保SIM卡是否正常;
 
          >
          ATE0
         <
          ATE0
          OK
        >
        AT+CGSN
        <
      867142015776539

      OK
     --> device S/N: 867142015776539
      >
     AT+CPIN?
     <
     +CPIN: READY

     OK
 AT+CPIN?
命令解釋:檢查登入移動設備(ME)的密碼.
命令格式:AT+CPIN?
命令返回:+CPIN:  狀態
           其中狀態值可能是:
READY(表示 SIM卡正常,同時不需要登入密碼),
SIM PIN (表示 ME等待提供 SIM卡的 PIN 碼)
SIM PUK (表示 ME等待提供 SIM卡的  PUK碼)
SIM PIN2 (表示 ME等待提供 SIM 卡的 PIN2 碼)
SIM PUK2 (表示 ME等待提供 SIM卡的  PUK2 碼)
PH-SIM PIN (表示設備被鎖 SIM卡,ME等待提供從手機到 SIM卡的密碼)
PH-NET PIN (表示設備被鎖網絡,ME等待提供提供網絡個性化密碼)
ERROR (表示 SIM卡失敗或沒有插入 SIM卡)
測試結果:AT+CPIN?
          +CPIN: READY
           表示SIM卡正常,同時不需要登入密碼。
>
AT+CIMI
<
460011025049611

OK
 --> SIM S/N: 460011025049611

SIM is ready to use

2 : SIM卡準備好,點擊 connect 進行連接,發送AT 指令

>
AT+CPIN?
<
+CPIN: READY

OK
>
AT+CFUN?
<
+CFUN: 1

OK
(AT+CFUN= 0,
modem不可以打電話,發短信,但是可以有其他操作,比如讀 sim卡之類的。
AT+CFUN= 1,
modem可以打電話,發短信...所以叫做full functionality)

>
AT+CGDCONT=1,"IP","3gnet"
<
OK
>
ATD*99# (填寫內容參考下圖 “三大運營商撥號設置” )
 <
CONNECT


OK
Dialling complete

AT撥號完成


GPRS模塊 首先通過AT命令撥號如中國移動的“*99***1#”,如果   CONNECT   OK的話,那麼就說明物理層已經連通了。 
那麼接着要做的工作就是連通數據鏈路層,那麼就是PPP協議了。PPP協議包括 LCP(鏈路控制協議),NCP(網路控制協議),也就是說物理層連通之後,首先就要通過LCP協議來配置串口線路的各項數據格式,和雙方的傳送數據的約定(詳見RFC),之後就是NCP協議了,NCP   主要是獲得IP地址,以及以後在PPP封裝中的IP報文的一些具體約定。

對於會話管理層消息流程來說,PDP上下文激活和ATD*99#是完全一樣地效果。但是ATD*99#除了激活PDP上下文,MODEM內部一些狀態也會發生改變,不會再保持AT命令狀態,轉而進入分組數據收發模式,這樣纔可以進行PPP協商。



三 PPP 交互 

參考  ppp 協議,ppp協議爲用於建立網絡鏈路工作在數據鏈路層

Now start PPP negotiation ...
>
ff03c021010000140206000000000506f7adb02907020802a565
<
ff03c021010000190206000000000305c2230505060106aaaa0702080218d8
>
ff03c021030000080304c023f7d7
<
ff03c021020000140206000000000506f7adb029070208024e0c
<
ff03c021010100180206000000000304c02305060106aaaa070208020aed
>
ff03c021020100180206000000000304c02305060106aaaa07020802c600
>
c023010100100564756d6d790564756d6d79f4d3
<
ff03c0210b0200080106aaaad2c0
<
c0230201000500fd30
>
802101000016030600000000810600000000830600000000627c
<
80210300001c81060a0b0c0d83060a0b0c0e82060a0b0c0d84060a0b0c0e0951
<
80210100000467c3
>
802102000004aae6
<
80210300001603060ad2fcd781067b7b7b7b83067b7b7b7c851a
>
80210101001603060ad2fcd781067b7b7b7b83067b7b7b7c4277
<
80210201001603060ad2fcd781067b7b7b7b83067b7b7b7cb484

Local IP: 10.210.252.215/32
 Peer IP: 10.64.64.64
    DNS1: 123.123.123.123
    DNS2: 123.123.123.124
Send initial IP packet ...
First IP packet received - we are online
PPP negotiation finished

四  創建VPN

修改route 表,並啓動自定義的 VpnServicePpp設置vpn,開始上網

下面爲修改route表 
>
pwd

setprop ctl.start ril-daemon
(patch 掉系統的一些服務,例如 installd, rild 之類,殺掉原來的進程,然後重新啓動新進程。系統的服務最好用 setprop 來停止和啓動
setprop ctl.stop ril-daemon
setprop ctl.start ril-daemon  
patch 掉原來的服務了,整個過程不需要重新啓動手機
)

export LD_LIBRARY_PATH=/vendor/lib:/system/lib

export CLASSPATH=12d1/jc.jar

su -cn r:u:system_app:s0 -c "./start ./ com.android.commands.jc.Jc connected 19_460011025049611 TypeError: 10.37.24.92 10.64.64.64 123.123.123.123 123.123.123.124 </dev/null" & 

ip route add default dev tun0 2>/dev/null

ip route add default dev tun0 2>/dev/null

ip route add default dev tun0 2>/dev/null

ip route add default dev tun0 2>/dev/null

ip route add default dev tun0 2>/dev/null

exit 







































發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章