您好,登錄后才能下訂單哦!
內核:需要有以下模塊:option usbserial usbstorage
主要是要在編譯內核的時候選中
[*] 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
[*] USB support --->
<*> USB Modem (CDC ACM) support
[*] USB support --->
<*> USB Serial Converter support --->
<*> USB driver for GSM and CDMA modems
修改linux-2.6.21.x/drivers/usb/serial/option.c
#define HUAWEI_WENDIR_ID 0x12d1
#define HUAWEI_PRODUCT_ECxx 0x14ef
{USB_DEVICE(HUAWEI_WENDIR_ID,HUAWEI_PRODUCT_ECxx)} /*HUAWEI xxx*/
#make modules //編譯外掛模塊
#make modules_install //安裝模塊
#usbserial.ko,option.ko
模塊編譯完后應將其復制到開發板上,并執行以下命令,否則會報找不到modules.dep
#depmod –a //創建模塊的鏈接
#modprobe usbserial.ko
# modprobe option.ko
軟件4個:libusb、usb_modeswitch、pppd、usb-modeswitch-data(交叉編譯)
#lsusb、usb_modeswitch、(lib文件夾)、chat、pppd等移植到開發板。
這個數據包包含了usb_modeswitch所有支持的3G上網卡的配置文件。
1.在開發板上USB口插入3G上網卡。
2.在開發板上輸入lsusb會出現以下結果,說明開發板與3G上網卡硬件物理上連接成功,記下12d1:14ef這個數字,后邊用。
# lsusb
Bus 004 Device 002: ID 12d1:14ef HUAWEI XXXX(省略若干)
這里若無lsusb命令,可以查看/proc/bus/usb/devices下的響應設備信息。其中:
#cat /proc/bus/usb/devices
Vendor=12d1 ProdID=14ef
3.編輯usb_modeswitch目錄下的usb_modeswitch.conf文件
# T-Mobile NL (Huawei xxx)
#
# Contributor: Alex Hermann
DefaultVendor= 0x12d1
DefaultProduct=0x14ef
TargetVendor= 0x12d1
TargetProduct= 0x1506
MessageContent="55534243123456780000000000000011062000000100000000000000000000"
CheckSuccess=5
4.執行usb_modeswitch將3G上網卡U盤模式轉換為modem模式
#./usb_modeswitch -c /etc/usb_modeswitch/usb_modeswitch.conf
Looking for target devices ...
No devices in target mode or class found
Looking for default devices ...
found matching product ID
adding device
Found device in default mode, class or configuration (1)
Accessing device 003 on bus 001 ...
Getting the current device configuration ...
OK, got current device configuration (1)
Using first interface: 0x00
Using endpoints 0x08 (out) and 0x87 (in)
Inquiring device details; driver will be detached ...
Looking for active driver ...
OK, driver found ("usb-storage")
OK, driver "usb-storage" detached
SCSI inquiry data (for identification)
-------------------------
Vendor String: HUAWEI
Model String: Mass Storage
Revision String: 2.31
-------------------------
USB description data (for identification)
-------------------------
Manufacturer: HUAEI TECHNOLOGIES
Product: HUAWEI Mobile
Serial No.: not provided
-------------------------
Setting up communication with interface 0
Using endpoint 0x08 for message sending ...
Trying to send message 1 to endpoint 0x08 ...
OK, message successfully sent
Resetting response endpoint 0x87
Could not reset endpoint (probably harmless): -145
Resetting message endpoint 0x08
Could not reset endpoint (probably harmless): -19
Device is gone, skipping any further commands
Checking for mode switch (max. 20 times, once per second) ...
Searching for target devices ...
Found target device, now opening
Found correct target device
Mode switch succeeded. Bye.
屏幕會顯示一堆模式轉換信息,之后會顯示成功
檢查是否轉換成功,執行lsusb,發現14ef變為1506,表示轉換成功。
5.查看/dev下是否有一下設備節點
#ls /dev/ttyUSB*
#/dev/ttyUSB0 /dev/ttyUSB1 /dev/ttyUSB2 /dev/ttyUSB3 /dev/ttyUSB4
這里根據切換后的提醒,建立相應的設備節點。
6.硬件問題都解決了,開始撥號吧:(電信的撥號腳本,聯通、移動的應該會變化,請google)
第一個文件:wcdma (路徑/etc/ppp/peer/)
/dev/ttyUSB0
115200
nodetach
user "card"
password "card"
crtscts
show-password
usepeerdns
noauth
noipdefault
novj
novjccomp
noccp
defaultroute
ipcp-accept-local
ipcp-accept-remote
connect 'chat -s -v -f /etc_ro/ppp/chat/wcdma-connect-chat'
disconnect 'chat -s -v -f /etc_ro/ppp/chat/disconnect-chat'
第二個文件:wcdma-connect-chat (路徑/etc/ppp/chat/)
ABORT 'NO CARRIER'
ABORT 'ERROR'
ABORT 'NO DIALTONE'
ABORT 'BUSY'
ABORT 'NO ANSWER'
'' \rAT
OK \rATZ
OK \rAT+CGDCONT=1,"IP","cmnet",,0,0
OK-AT-OK ATDT*99***1#
CONNECT \d\c
電信腳本
TIMEOUT 5
ABORT "DELAYED"
ABORT "BUSY"
ABORT "ERROR"
ABORT "NO DIALTONE"
ABORT "NO CARRIER"
"" AT
"OK-+++\c-OK" ATH0
TIMEOUT 40
"" AT
OK ATDT#777
CONNECT ""
第三個文件:disconnect-chat
ABORT "BUSY"
ABORT "ERROR"
ABORT "NO DIALTONE"
SAY "/nSending break to the modem/n"
'' "/K"
'' "+++ATH"
SAY "/nGoodbye/n"
執行腳本撥號測試
#pppd call gprs
abort on (NO CARRIER)
abort on (ERROR)
abort on (NO DIALTONE)
abort on (BUSY)
abort on (NO ANSWER)
send (^MAT^M)
expect (OK)
^MT^M^M
OK
-- got it
send (^MATZ^M)
expect (OK)
^M
^MATZ^M^M
OK
-- got it
send (^MAT+CGDCONT=1,"IP","cmnet",,0,0^M)
expect (OK)
^M
^MAT+CGDCONT=1,"IP","cmnet",,0,0^M^M
OK
-- got it
send (ATDT*99***1#^M)
expect (CONNECT)
^M
ATDT*99***1#^M^M
CONNECT
-- got it
send (\d)
Serial connection established.
Using interface ppp0
Connect: ppp0 <--> /dev/ttyUSB0
CHAP authentication succeeded: Welcome!!
CHAP authentication succeeded
Could not determine remote IP address: defaulting to 10.64.64.64
local IP address 10.109.28.39
remote IP address 10.64.64.64
primary DNS address 211.137.130.18
secondary DNS address 211.137.130.20
這時代表已經撥號成功,通過ifconfig命令可以看到有個ppp0,說明大功告成了
嘗試ping www.baidu.com,應該就通了。
7.PPPD腳本分享
1. CHAT腳本
一個簡單的chat腳本有下面的結構:
"" AT
OK ATDT dialnumber
CONNECT ""
一個chat腳本都是由字符串對來組成的。前面的字符串都是期望獲取的串,緊跟的是發送的字符串。這個腳本每一項的具體含義是這樣的:
1) MODEM期望空字符串。這句話的意思直接理解就是MODEM不管收到什么字符串,先發出字符串AT;
2) 期望收到“OK”字符串,然后發送字符串“ATDT dialnumber”
3) 如果收到“CONNECT”,就不再發送,認為數據鏈路已建立連接。
這樣的chat腳本是最簡單的,如果需要進行超時控制,就可以加入如下字段:
TIMEOUT 10
如果要增加對特殊情況的處理,就加入下面字段:
ABORT BUSY
ABORT NO ANSWER
ABORT RINGING
這三行語句的意思是:如果收到字符串“BUSY”、“NO ANSWER”、“RINGING”就退出執行。
所以在考慮到各種特殊情況下,配置一個PPP連接的CHAT腳本就可以像下面這樣:
TIMEOUT 30
ABORT BUSY
ABORT NO ANSWER
ABORT RINGING
"" AT
OK ATDT dialnumber
CONNECT ""
2.OPTIONS腳本
OPTIONS腳本的內容,為PPP連接指定了連接使用的設備、使用的控制字符傳輸速率、指定了硬件加速、溢出控制等。
例如下面的options腳本:
ttyS0 ---- 指定連接使用的設備,例如:ttyS0、ttyS1等
57600 ---- 設置連接使用的控制字符傳輸速率,可以設置為57600、115200等
debug ---- 如果需要加入調試信息,就加入參數debug
logfile /var/ ppplog ---- 將連接過程中的信息輸入到某個文件中
mtu 1500
-detach
noipdefault ---- 不使用默認IP就可以加入參數noipdefault
defaultroute
usepeerdns ---- 使用服務器端協商的DNS就可以設置參數usepeerdns
lcp-echo-failure 4 ---- 當連續4次沒有收到發出的LCP回聲請求時,就認為服務器端已不再響應,就退出執行。這里的失敗次數可以靈活來決定。
-ccp ---- 不使用壓縮控制協議
-vj ---- 關掉式IP頭壓縮
-chap ---- 不使用chap鑒權
-mschap-v2 ---- 不使用mschap鑒權
user
hide-password
connect "/usr/bin/chat -v -t6 -f /var/ chat" ---- 制定了要使用的chat腳本的位置。加上參數-v 告訴 chat命令將其所有的輸出/入拷貝到系統記錄里(通常是 /var/log/messages)。-t 6 指定了執行chat該命令的時間為6s。chat腳本的位置可以位于/etc/目錄下,也可以位于/var下,這個可以更加需要靈活設置。
persist --- 永久鏈接(自動重撥)
crtscts --- 告訴ppp使用modem的硬件流量控制
modem --- 使ppp使用DCD信號來判斷連接是否正常,有無掉線現象
deflate --- 使pppd使用defalte壓縮方式
idle --- 設置了一個時間限制,當在300秒的時間內沒有數據傳送,就斷開連接
lock --- 則創建一個鎖定文件,其他程序在發現存在這個文件后,就能得知相應的串口已經被使用。
demond --- 參數告訴pppd停留在后臺,監視網絡數據,一旦有要求就立即進行連網,超時后就斷開連接,但pppd仍然停留在后臺等待下次數據傳送
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。