嵌入式Linux下3G USB Modem的使用
一.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数组中添加子项:
三.工具
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:
chat-wcdma-connect:
chat-wcdma-disconnect:
[html] view plaincopy
2.evdo
chat-evdo-connect:
chat-evdo-disconnect:
后台拨号使用:
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嵌入式下使用告一段落
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数组中添加子项:
1. #define HUAWEI_PRODUCT_E220 0x1003
2. #define HUAWEI_PRODUCT_EC156 0x140c
2. #define HUAWEI_PRODUCT_EC156 0x140c
1. { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E220) },
2. { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_EC156)},
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'
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
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. 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'
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
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"
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嵌入式下使用告一段落
>更多相关文章
- 11-131分钟学会U盘启动安装Linux系统
- 11-13克隆MAC地址来绕过强制门户
- 11-13Linux运维常见故障及处理的 32 个锦囊妙计
- 11-13如何快速以管理员权限运行Linux命令?
- 11-13超全面的Linux应急响应技巧
- 11-136 款面向 Linux 用户的开源绘图应用程序
首页推荐
佛山市东联科技有限公司一直秉承“一切以用户价值为依归
- 01-11全球最受赞誉公司揭晓:苹果连续九年第一
- 12-09罗伯特·莫里斯:让黑客真正变黑
- 12-09谁闯入了中国网络?揭秘美国绝密黑客小组TA
- 12-09警示:iOS6 惊现“闪退”BUG
- 12-05亚马逊推出新一代基础模型 任意模态生成大模
- 12-05OpenAI拓展欧洲业务 将在苏黎世设立办公室
- 12-05微软质疑美国联邦贸易委员会泄露信息 督促其
- 12-05联交所取消宝宝树上市地位 宝宝树:不会对公
- 12-04企业微信致歉:文档打开异常已完成修复
相关文章
24小时热门资讯
24小时回复排行
热门推荐
最新资讯
操作系统
黑客防御