中兴MF667S WCDMA猫Linux拨号笔记
公司最近有个国外有个项目需要用到WCDMA猫,网上简单选型了一下决定使用ZTE的型号MF667S的猫,本以为在Linux下拨号是比较简单的(之前有两款3G猫的调试经验),估计半天能搞定,结果折腾了一周才调通,记录一下调试过程中遇到的坑.
1,模式切换
由于现在的猫都有多种模式,目的是为了Windows下的小白用户第一次插入的时候以cdrom或者u盘的模式使用,安装里面自带的驱动后,再由驱动切换到猫的模式.这种方法在Windows下是很方便的,但是到了Linux下就很蛋疼了,需要借助usb_modeswitch来进行模式切换.主页
下载最新的usb_modeswitch,编译,编辑一下配置文件usb_modeswitch.conf:
DefaultVendor=0x19d2
DefaultProduct=0x1588
TargetVendor=0x19d2
TargetProduct=0x1589
MessageContent="5553424312345678000000000000061e000000000000000000000000000000"
MessageContent2="5553424312345679000000000000061b000000020000000000000000000000"
其中DefaultVendor和TargetVendor都是0x19d2,这也是ZTE公司的厂商ID,DefaultProduct为0x1588,是插入猫后做为USB模式系统认到的产品ID,可通过lsusb或者cat /proc/bus/usb/devices查看.TargetProduct0x1589是切换为猫后的产品ID,切换后可用lsusb查看.(不过感觉这里可以随便填一个,没什么用).MessageContent从usb_modeswitch主页抄的,试过只用一个MessageContent无法激活,需要MessageContent2一起使用.就这配置文件还踩了一个坑,以前的猫有加个MessageEndPoint=0xa,移植的时候也一同移植过来了,结果发消息怎么都是出错,后来移除后用默认的0x1发现可以切换了-.-.
配置文件写好了,执行命令:./usb_modeswitch -W -c /etc/usb_modeswitch.conf,得到以下信息
* usb_modeswitch: handle USB devices with multiple modes
* Version 2.2. (C) Josua Dietze
* Based on libusb1/libusbx ! PLEASE REPORT NEW CONFIGURATIONS ! DefaultVendor= 0x19d2
DefaultProduct= 0x1588
TargetVendor= 0x19d2
TargetProduct= 0x1589
MessageContent="5553424312345678000000000000061e000000000000000000000000000000"
MessageContent2="5553424312345679000000000000061b000000020000000000000000000000"
NeedResponse= Look for target devices ...
found USB ID 1d6b:
found USB ID 1d6b:
found USB ID 1d6b:
found USB ID 1d6b:
found USB ID 1d6b:
found USB ID 1d6b:
found USB ID 1d6b:
found USB ID :
found USB ID 0dfc:
found USB ID 19d2:
vendor ID matched
No devices in target mode or class found
Look for default devices ...
found USB ID 1d6b:
found USB ID 1d6b:
found USB ID 1d6b:
found USB ID 1d6b:
found USB ID 1d6b:
found USB ID 1d6b:
found USB ID 1d6b:
found USB ID :
found USB ID 0dfc:
found USB ID 19d2:
vendor ID matched
product ID matched
Found devices in default mode ()
Access device on bus
Current configuration number is
Use interface number
Use endpoints 0x01 (out) and 0x81 (in) USB description data (for identification)
-------------------------
Manufacturer: ZTE,Incorporated
Product: ZTE Mobile Broadband Station
Serial No.: 1234567890ABCDEF
-------------------------
Looking for active driver ...
OK, driver detached
Set up interface
Use endpoint 0x01 for message sending ...
Trying to send message to endpoint 0x01 ...
OK, message successfully sent
Trying to send message to endpoint 0x01 ...
OK, message successfully sent
Reset response endpoint 0x81
Reset message endpoint 0x01
-> Run lsusb to note any changes. Bye!
说明已经切换成功了,再cat /proc/bus/usb/devices查看设备信息如下:
T: Bus= Lev= Prnt= Port= Cnt= Dev#= Spd= MxCh=
D: Ver= 2.00 Cls=(comm.) Sub= Prot= MxPS= #Cfgs=
P: Vendor=19d2 ProdID= Rev= 0.00
S: Manufacturer=ZTE,Incorporated
S: Product=ZTE Mobile Broadband Station
S: SerialNumber=1234567890ABCDEF
C:* #Ifs= Cfg#= Atr=a0 MxPwr=500mA
A: FirstIf#= IfCount= Cls=(comm.) Sub= Prot=
I:* If#= Alt= #EPs= Cls=(comm.) Sub= Prot= Driver=cdc_ether
E: Ad=(I) Atr=(Int.) MxPS= Ivl=125us
I: If#= Alt= #EPs= Cls=0a(data ) Sub= Prot= Driver=cdc_ether
I:* If#= Alt= #EPs= Cls=0a(data ) Sub= Prot= Driver=cdc_ether
E: Ad=(I) Atr=(Bulk) MxPS= Ivl=0ms
E: Ad=(O) Atr=(Bulk) MxPS= Ivl=0ms
I:* If#= Alt= #EPs= Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
E: Ad=(I) Atr=(Int.) MxPS= Ivl=500us
E: Ad=(I) Atr=(Bulk) MxPS= Ivl=0ms
E: Ad=(O) Atr=(Bulk) MxPS= Ivl=0ms
I:* If#= Alt= #EPs= Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
E: Ad=(I) Atr=(Bulk) MxPS= Ivl=0ms
E: Ad=(O) Atr=(Bulk) MxPS= Ivl=0ms
I:* If#= Alt= #EPs= Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
E: Ad=(I) Atr=(Bulk) MxPS= Ivl=0ms
E: Ad=(O) Atr=(Bulk) MxPS= Ivl=0ms
I:* If#= Alt= #EPs= Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
E: Ad=(I) Atr=(Bulk) MxPS= Ivl=0ms
E: Ad=(O) Atr=(Bulk) MxPS= Ivl=0ms
I:* If#= Alt= #EPs= Cls=(stor.) Sub= Prot= Driver=usb-storage
E: Ad=(I) Atr=(Bulk) MxPS= Ivl=0ms
E: Ad=(O) Atr=(Bulk) MxPS= Ivl=0ms
ProdID已经切换成1589,自动加载了个cdc_ether驱动,还有4个设备未驱动和一个usb存储.cdc_ether驱动生成了一个usb0的网口设备.至此,说明WCDMA猫已经切换模式成功.
2,设备映射
模式切换成功后,由于自动加载了网卡驱动生成了usb0的网口设备,让我又踩了一个坑,以为这是一个纯网卡的模块,论坛上搜索了一番,也没有这个型号猫的明确说明,相近的型号也描述的不清不楚的,试过dhclinet usb0,无效.还有说要访问个gateway授权再分配IP的(纯属扯谈).后来才发现这个usb0的网卡设备完全没用,这个猫是一个传统的usb转串口的猫.
在系统启动的时候rc.local里加上下面的命令:modeprobe usbserial.ko vendor=0x19d2 product=0x1589,再重新执行第一步,OK,串口出来了.
ls /dev/ttyUSB* -l,有时候会生成0-3共4个USB口,有时候会生成0-4共5个USB控制口,不解为什么.
3,AT拨号
ttyUSB设备生成后就可以对设备进行AT指令拨号了,由于生成了4-5个USB节点,只好一个个试验哪个节点是猫口,经测试发现,USB0 USB1接收AT指令能返回OK,USB2 USB3直接返回TIMEOUT,说明2,3不是,猫口在0,1之间.继续测试锁定猫口为第一个设备/dev/ttyUSB0.
接下来就是写脚本了.SCRIPT:
ABORT BUSY
ABORT 'NO CARRIER'
ABORT 'NO DIALTONE'
'' AT+CGDCONT=,"IP","3GNET" OK
ATDT*# CONNECT
pppd 115200 connect "/usr/sbin/chat -f dial.script -v" /dev/ttyUSB0 modem defaultroute
通过上面的命令和脚本,发送AT+CGDCONT=1,"IP","3GNET"可以得到OK,再发送ATDT*99#却返回ERROR-.-;于是又在论坛摸索了半天,发现有个人遇到了相同的情况,提示在最前面加一条AT+CFUN=1,0(注册网络)果然就不返回ERROR返回CONNECT了.本以为大功告成,谁知道pppd在下一步的时候又提示检测不到本地IP,而且看log,CONNECT之后确实没有返回本地和远程的IP信息.
在这一步又卡壳了几天,最后想着换一批pppd参数,折腾了几下终于拨上去了-.-;最终的脚本和命令如下:
ABORT BUSY
ABORT 'NO CARRIER'
ABORT 'NO DIALTONE'
'' AT+CFUN=, OK
AT+CGDCONT=,"IP","3GNET" OK
ATDT*# CONNECT
pppd 115200 connect "/usr/sbin/chat -f dial.script -v" /dev/ttyUSB0 ipcp-accept-local ipcp-accept-remote defaultroute usepeerdns
PS:这款猫还有个BUG,每次拨号,必须要拨两次才能成功,第一次拨号ATDT最后还是会返回ERROR,第二次拨号就可以正确的拨上去了-.-,ZTE的东西就是不太靠谱,最后没办法只有在上层应用加个判断,拨号拨两次再检查状态...
中兴MF667S WCDMA猫Linux拨号笔记的更多相关文章
- 中兴F412光猫超级密码破解、破解用户限制、关闭远程控制、恢复路由器拨号
不少家庭都改了光纤入户,那肯定少不了光猫的吧.今天以中兴F412光猫为例介绍下此型号光猫超级密码的破解方法.一.F412超级密码破解方法1.运行CMD,输入telnet 192.168.1.1: 2. ...
- 中国电信中兴F460光猫破解及路由级联设置
http://blog.csdn.net/pipisorry/article/details/50636541 中国电信中兴F460光猫破解,获取超级密码,修改配置. 之前家里的宽带升级了,换成了光纤 ...
- Linux内核笔记--内存管理之用户态进程内存分配
内核版本:linux-2.6.11 Linux在加载一个可执行程序的时候做了种种复杂的工作,内存分配是其中非常重要的一环,作为一个linux程序员必然会想要知道这个过程到底是怎么样的,内核源码会告诉你 ...
- Linux 学习笔记
Linux学习笔记 请切换web视图查看,表格比较大,方法:视图>>web板式视图 博客园不能粘贴图片吗 http://wenku.baidu.com/view/bda1c3067fd53 ...
- linux学习笔记2-linux的常用命令
第一篇博客:linux学习笔记1-ubuntu的安装与基本设置 之中,已经介绍了如何安装linux操作系统,以及一些基本的设置修改. 本篇博客主要介绍linux中的一些常用的终端命令 ======== ...
- Linux学习笔记(一)2015.4.13
研究生由单片机转Linux学习 首先安装VMware虚拟机,用的是VMware 10.0 在VMware 10.0上安装视频上推荐的Red Hat Linux 5 安装后正式进入Linux学习 笔记1 ...
- 跟着鸟哥学Linux系列笔记3-第11章BASH学习
跟着鸟哥学Linux系列笔记0-扫盲之概念 跟着鸟哥学Linux系列笔记0-如何解决问题 跟着鸟哥学Linux系列笔记1 跟着鸟哥学Linux系列笔记2-第10章VIM学习 认识与学习bash 1. ...
- 跟着鸟哥学Linux系列笔记2-第10章VIM学习
跟着鸟哥学Linux系列笔记0-扫盲之概念 跟着鸟哥学Linux系列笔记0-如何解决问题 跟着鸟哥学Linux系列笔记1 常用的文本编辑器:Emacs, pico, nano, joe, vim VI ...
- 跟着鸟哥学Linux系列笔记0-如何解决问题
跟着鸟哥学Linux系列笔记0-扫盲之概念 在发生问题怎么处理: 1. 在自己的主机.网络数据库上查询How-To或FAQ -Linux 自身的文件数据: /usr/share/doc -CLDP中 ...
随机推荐
- 【SSM 6】Spring+SpringMVC+Mybatis框架搭建步骤
一.整体概览 首先看maven工程的创建 二.各层的文件配置 2.1,SSM父工程 <span style="font-family:KaiTi_GB2312;font-size:18 ...
- Unity3D基础--动态创建和设置游戏对象
转载自原文:http://m.blog.csdn.net/blog/smbroe/43488627 1.如何动态创建对象:调用GameObject的CreatePrimitive方法可以按模型进行创建 ...
- 解决WAMP搭建PHP环境后后局域网其他机器无法访问的问题
刚安装wamp以后本地访问localhost或者127.0.0.1可以访问,但是如果局域网内其他电脑访问则出现403错误.从网上找了很多,各种说法都有了,却没几个好用的.解决问题方法如下: 1,首先确 ...
- java 使用递归获取指定文件路径目录,删除指定的文件后缀(可扩展,根据具体需要的删除的后缀进行配置)~~
在工作开发过程中,每次用SVN提交代码全选择的时候,发现会产生很多不需要的文件后缀垃圾文件,感觉挺烦人的,一个一个删太麻烦了,如果产生多种后缀文件时,那删起来多费劲,是吧?想想,就写了一段程序通过递归 ...
- oracle contains
1. 查询住址在北京的学生SELECT student_id,student_nameFROM studentsWHERE CONTAINS( address, 'beijing' )remark: ...
- ASP.NET MVC 中将FormCollection与实体间转换方法
将Action动作中传递的FormCollection转变成对应的实体,可以使用Controller的TryUpdateModel()方法. public ActionResult Create(Fo ...
- java笔试面试二
http://www.cnblogs.com/lanxuezaipiao/p/3371224.html
- CXF发布webService服务以及客户端调用
这篇随笔内容是CXF发布webService服务以及客户端调用的方法 CXF是什么? 开发工作之前需要下载CXF和安装 下载地址:http://cxf.apache.org 安装过程: <1&g ...
- Java 7 新特性
try( InputStream is = new FileInputStream(path); XSSFWorkbook xssfWorkbook = new XSSFWorkbook(is); ) ...
- Tengine
Tengine是由淘宝网发起的Web服务器项目.它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性. 外文名 Tengine 发起单位 淘宝网 基 础 Nginx 目 ...