嵌入式Linux下3G USB Modem的使用

來源:互聯網
上載者:User

一.ARM-Linux

ARM-Linux-2.6.17

3G USB Modem:huaweiE220(WCDMA),huaweiEC156(EVDO)

arm-linux至少需要支援usb host,usb storage,usbfs,usb serial

二.Linux驅動

option.c

linux中option.c就是針對3G modem的驅動,稍作修改即可支援大部分的3G usb modem

目前我的這個版本的USB Option PCMCIA serial driver依賴於USB_SERIAL && USB_OHCI_HCD && PCCARD,所以系統要保證已經選定了這三個選項,如果host不同,可以自行修改USB_OHCI_HCD這個依賴項,我的目前使用isp晶片所以就修改了這個依賴項,總而言之,usb host是必須需要的.

添加對華為e220和華為ec156的支援,在option_ids數組中添加子項:

#define HUAWEI_PRODUCT_E220                    0x1003#define HUAWEI_PRODUCT_EC156                   0x140c

{ USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E220) },{ USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_EC156)},

三.工具

usb_switchmode-1.2.4

這是目前的最新版本,使用這個工具的目的是將預設被識別為存放裝置的3g usb modem轉換為可以通訊的多個串口裝置,以用於ppp撥號連線.

此工具依賴於linusb的,全部交叉編譯之,.

        1.下載並交叉編譯libusb-0.1.12:
./configure --build=i686-linux --host=arm-linux --prefix=$PWD/install
make
make -n install  (確定安裝目錄)
make install   

至此,libusb編譯完畢.

2.交叉編譯usb_switchmode

修改makefile:
cc=arm-linux-gcc
INCLUDEDIR =/home/jay/tools/3G/libusb-0.1.12/install/include
LIBDIR =/home/jay/tools/3G/libusb-0.1.12/install/lib

$(CC) -I $(INCLUDEDIR) -L $(LIBDIR) -o $(PROG) $(OBJS) $(CFLAGS) $(LIBS) $(LDFLAGS) -static
make
順利通過,至此得到靜態編譯的usb_switchmode

3.將usb_switchmode移到arm linux檔案系統中,然後將usb_switchmode.conf檔案夾複製進arm linux中的/etc/目錄下,這個檔案夾下是很多3g usb modem的設定檔.


4.pppd撥號軟體

移植pppd2.4.5
./configure
make CC=arm-linux-gcc
需要的東西就是:pppd chat pppdump pppstats下可執行程式pppd, chat, pppdump, pppstats

在嵌入式檔案系統下需要建立/etc/ppp/peers檔案夾

四.使用

插入3g usb modem的時候會被預設識別為u盤,此時使用usb_switchmode工具轉換,就會綁定到多個串口上去,

usb_modeswitch -W -c /etc/usb_modeswitch.d/12d1_1505

其中-W僅僅是顯示詳細配置資訊,-c是指指定設定檔,usb_switchmode內建的設定檔貌似在嵌入式下使用都多多少少有點問題,隨後發現,必須要指定

DefaultVendor 和 DefaultProduct兩個參數.

usb 1-1: new full speed USB device using isp1362-hcd and address 8
usb 1-1: configuration #1 chosen from 1 choice
option 1-1:1.0: Option 3G data card converter detected
usb 1-1: Option 3G data card converter now attached to ttyUSB0
option 1-1:1.1: Option 3G data card converter detected
usb 1-1: Option 3G data card converter now attached to ttyUSB1
option 1-1:1.2: Option 3G data card converter detected
usb 1-1: Option 3G data card converter now attached to ttyUSB2
option 1-1:1.3: Option 3G data card converter detected
usb 1-1: Option 3G data card converter now attached to ttyUSB3
scsi6 : SCSI emulation for USB Mass Storage devices

如果沒有ttyUSB0之類的裝置節點,可以自己手動建立,

mknod /dev/ttyUSB0 c 188 0

mknod /dev/ttyUSB0 c 188 1

....

之後可以

echo ATZ>/dev/ttyUSB0,如果沒有錯誤,轉換基本ok.

最後就剩下ppp撥號

目前我使用的e220是wcdma制式,ec156是evdo制式,其撥號指令碼少有不同(驅動僅僅是裝置號碼有點點區別)

1.wcdma:

debugnodetachlock/dev/ttyUSB0115200user "14522023288"password "******"crtsctsshow-passwordusepeerdnsnoauthnoipdefaultnovjnovjccompnoccpdefaultrouteipcp-accept-localipcp-accept-remoteconnect '/usr/sbin/chat -s -v -f chat-wcdma-connect'disconnect '/usr/sbin/chat -s -v -f chat-wcdma-disconnect'

chat-wcdma-connect:

TIMEOUT 5ABORT 'NO CARRIER'ABORT 'ERROR'ABORT 'NO DIALTONE'ABORT 'BUSY'ABORT 'NO ANSWER''' /rATOK /rATZOK /rAT+CGDCONT=1,"IP","3gnet",,0,0OK-AT-OK ATDT*99#CONNECT /d/c

chat-wcdma-disconnect:

ABORT "BUSY"ABORT "ERROR"ABORT "NO DIALTONE"SAY "/nSending break to the modem/n"'' "/K"'' "+++ATH"SAY "/nGoodbay/n"

2.evdo

debugnodetachlock/dev/ttyUSB0115200user "ctnet@mycdma.cn"password "vnet.mobi"crtsctsshow-passwordusepeerdnsnoauthnoipdefaultnovjnovjccompnoccpdefaultrouteipcp-accept-localipcp-accept-remoteconnect '/usr/sbin/chat -s -v -f /etc/ppp/peers/chat-evdo-connect'disconnect '/usr/sbin/chat -s -v -f /etc/ppp/peers/chat-evdo-disconnect'

chat-evdo-connect:

TIMEOUT 60ABORT 'NO CARRIER'ABORT 'ERROR'ABORT 'NO DIALTONE'ABORT 'BUSY'ABORT 'NO ANSWER''' /rATZOK-AT-OK ATD#777CONNECT /d/c

chat-evdo-disconnect:

ABORT 'NO CARRIER'ABORT 'ERROR'ABORT 'NO DIALTONE'ABORT 'BUSY'ABORT 'NO ANSWER'SAY "/nSending break to the modem/n"'' "/K"'' "+++ATH"SAY "/nGoodbay/n"

後台撥號使用:

pppd call wcdma&

pppd call evdo&

電信的ecdo貌似帳號密碼必須使用ctnet@mycdma.cn vnet.mobi,不能使用電話號碼和給定的密碼.

如果撥號成功ifconfig可以看到ppp0

ppp0      Link encap:Point-to-Point Protocol  
          inet addr:183.43.180.134  P-t-P:113.115.0.1  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:4 errors:0 dropped:0 overruns:0 frame:0
          TX packets:4 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:3 
          RX bytes:70 (70.0 B)  TX bytes:64 (64.0 B)

測試網路:

# ping www.baidu.com
PING www.a.shifen.com (220.181.111.148): 56 data bytes
64 bytes from 220.181.111.148: icmp_seq=0 ttl=55 time=91.3 ms
64 bytes from 220.181.111.148: icmp_seq=1 ttl=55 time=105.3 ms
64 bytes from 220.181.111.148: icmp_seq=2 ttl=55 time=93.9 ms
64 bytes from 220.181.111.148: icmp_seq=3 ttl=55 time=98.9 ms
64 bytes from 220.181.111.148: icmp_seq=4 ttl=55 time=95.4 ms

ping的時候注意屏蔽掉eth0之類的其他網路節點:ifconfig eth0 down

如果無法解析網域名稱,多半應該是dns問題,本來ppp的dns是自動擷取的,但是它儲存的路徑是/etc/ppp/resolv.conf,但是linux使用的卻是/etc/resolv.conf,所以我們建立一個軟串連即可:

ln -s /etc/ppp/resolv.conf /etc/resolv.conf

至此3G usb modem嵌入式下使用告一段落.

參考文章:

http://blog.chinaunix.net/uid-20759926-id-3335762.html

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.