modem设备驱动 linux,嵌入式Linux下3G USB Modem的使用

1.      #define HUAWEI_PRODUCT_E220                    0x1003

2.      #define HUAWEI_PRODUCT_EC156                   0x140c

1.      { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E220) },

2.      { 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:

1.      debug

2.      nodetach

3.      lock

4.      /dev/ttyUSB0

5.      115200

6.      user "14522023288"

7.      password "******"

8.      crtscts

9.      show-password

10.   usepeerdns

11.   noauth

12.   noipdefault

13.   novj

14.   novjccomp

15.   noccp

16.   defaultroute

17.   ipcp-accept-local

18.   ipcp-accept-remote

19.   connect '/usr/sbin/chat -s -v -f chat-wcdma-connect'

20.   disconnect '/usr/sbin/chat -s -v -f chat-wcdma-disconnect'

chat-wcdma-connect:

1.      TIMEOUT 5

2.      ABORT 'NO CARRIER'

3.      ABORT 'ERROR'

4.      ABORT 'NO DIALTONE'

5.      ABORT 'BUSY'

6.      ABORT 'NO ANSWER'

7.      '' /rAT

8.      OK /rATZ

9.      OK /rAT+CGDCONT=1,"IP","3gnet",,0,0

10.   OK-AT-OK ATDT*99#

11.   CONNECT /d/c

chat-wcdma-disconnect:

[html] view plaincopy

1.      ABORT "BUSY"

2.      ABORT "ERROR"

3.      ABORT "NO DIALTONE"

4.      SAY "/nSending break to the modem/n"

5.      '' "/K"

6.      '' "+++ATH"

7.      SAY "/nGoodbay/n"

2.evdo

1.      debug

2.      nodetach

3.      lock

4.      /dev/ttyUSB0

5.      115200

6.      user "ctnet@mycdma.cn"

7.      password "vnet.mobi"

8.      crtscts

9.      show-password

10.   usepeerdns

11.   noauth

12.   noipdefault

13.   novj

14.   novjccomp

15.   noccp

16.   defaultroute

17.   ipcp-accept-local

18.   ipcp-accept-remote

19.   connect '/usr/sbin/chat -s -v -f /etc/ppp/peers/chat-evdo-connect'

20.   disconnect '/usr/sbin/chat -s -v -f /etc/ppp/peers/chat-evdo-disconnect'

chat-evdo-connect:

1.      TIMEOUT 60

2.      ABORT 'NO CARRIER'

3.      ABORT 'ERROR'

4.      ABORT 'NO DIALTONE'

5.      ABORT 'BUSY'

6.      ABORT 'NO ANSWER'

7.      '' /rATZ

8.      OK-AT-OK ATD#777

9.      CONNECT /d/c

chat-evdo-disconnect:

1.      ABORT 'NO CARRIER'

2.      ABORT 'ERROR'

3.      ABORT 'NO DIALTONE'

4.      ABORT 'BUSY'

5.      ABORT 'NO ANSWER'

6.      SAY "/nSending break to the modem/n"

7.      '' "/K"

8.      '' "+++ATH"

9.      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嵌入式下使用告一段落

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值