ZTE AD3812 3G模块在linux 2.6.34 内核的开发板上的支持方法
先说段废话,话说在linux 2.6.34 下,好多比较新的3G网卡及3G模块都没有很好的支持。如果想支持的这些3G网卡/3G模块呢,基本上有两种方式:
1.使用该3G模块的 linux 下的驱动,交叉编译为*.ko ,然后放到开发板下,insmod 进去。然后接入3G模块,ls /dev/下,会发现3G驱动接口ttyUSB0--3 生成。然后想这些ttyUSB*接口发送AT指令,即可拨号上网。具体的拨号方式网上有很多,这里不赘述。
2.使用usb_modeswitch -c /etc/usb_modeswitch.d/* 的配置文件,来进行转换。将初步识别为存储模块,转换为3G modem。然后也会在/dev目录下生成ttyUSB*的接口,其他内容与 1中相似。
再说道AD3812 , 该3G模块由ZTE公司发行, 貌似也是市场上比较火的一个3G模组。他在linux 内核版本为3.0.1以上时,内核中就包含该模块的驱动(貌似),无需其他转换,插入即可使用。但是在2.6.34 或以下的版本中没有很好的支持。如果使用usb_modeswitch 的方法,需要它的转换配置文件19d2:ffeb,而这个配置文件官方以及相关论坛(http://www.draisberghof.de/usb_modeswitch/)中也没有提供。而LZ试着使用windows下的usb检测工具检测以下转换过程来获取 其 转换文件需要的内容时,也没有正确的获取的到(比较笨~_~).后来看到linux 3.0.1 以后的版本也不是通过usb_modeswitch 来进行转换的,那极有可能就是内置了该3G模块的相关驱动。所以我也想从这入手。
从网上下载到AD3812 的Linux下的驱动http://wwstrong.com/download.php?downloadSearch=ad3812&SearchTypeSystem (非广告),下载完后解压,咦?怎么只有2.6.11 到 2.6.32的驱动?没有2.6.34 的驱动,怎么办,代理商们给的解释就是,参照所给驱动,自己修改。 - -!我了个去,那就改吧!
刚开始我是按照2.6.32的驱动修改的,但是一对比文件感觉有好多的差别,不知道是否全部需要修改,也试了好多次,也可以成功编译出ztemt.ko这个驱动模块,但是插入时,总会提示:
insmod ztemt.ko
insmod: cannot insert 'ztemt.ko': invalid module format
那就说明其编译的模块,不适用与该内核。后来一个一个内核驱动的试了一下,最后,使用2.6.31 这个里面的驱动,最终插入驱动模块成功。不过2.6.31里面的bus.c文件在编译时可能会提示错误。
/home/driver3g/2.6./src/bus.c: In function 'free_dynids':
/homedriver3g/2.6./src/bus.c:: error: implicit declaration of function 'kfree'
我们进入bus.c这个文件,跳到143行,将kfree(dynid); 这段代码注释掉,然后编译,即可通过并生成ztemt.ko 模块,放到开发板上,可以顺利的插入成功啦!然后插入AD3812模块,在/dev目录下可以生成ttyUSB0--3的相关接口。使用pppd拨号即可成功上网啦!
忙活了3天左右,大致的解决问题的路程是这样的。现在可以成功加载到开发板中,并能够使用AD3812模块,但是不知道注释掉的kfree(dynid); 会不会有其他影响。暂时做一个笔记。
下面是pppd 拨号脚本的代码, /etc/ppp/peers/unicom
# /etc/ppp/peers/unicom
# this is ppp script for use chinaunicom's CDMA data service
#
#gsmmodem
ttyUSB3 crtscts
connect '/usr/sbin/chat -v -f /etc/ppp/chat/unicom'
debug
#nodetach
noipdefault
usepeerdns
ipcp-accept-local
ipcp-accept-remote
#defaultroute
user card
unit
注:unit 5001 , 如果拨号成功,ifconfig 查看,会生成ppp5001的接口,如果没有这段,默认生成ppp0接口。
下面是/etc/ppp/chat/unicom 的内容
# /etc/ppp/chat/unicom
# this is the chat script for unicom
ABORT "NO CARRIER"
ABORT "NO DIALTONE"
ABORT "ERROR"
ABORT "NO ANSWER"
ABORT "BUSY"
TIMEOUT
"" at
OK AT+CGDCONT=,"IP","3gnet",,,
OK atdt*#
CONNECT
将这两个文件分别放置对应的目录 ,使用命令 pppd call unicom 即可拨号,如果成功,ifconfig会查看到ppp相关的接口, 使用命令 ping 8.8.8.8 如果有回复,证明开发即可以上网。想访问网站的话,别忘记了在/etc/resolv.conf 加入DNS地址 nameserver 8.8.8.8 (或其他的DNS解析地址)。 整个3G驱动支持 完成。
还有一句话就是:做事情的要专心,如果自己没有其他的办法时,可以让周围的同事或同学给提供一点思路。自己一个人很容易行程思维定式,钻进死胡同地。
ZTE AD3812 3G模块在linux 2.6.34 内核的开发板上的支持方法的更多相关文章
- 运行在TQ2440开发板上以及X86平台上的linux内核编译
一.运行在TQ2440开发板上的linux内核编译 1.获取源码并解压 直接使用天嵌移植好的“linux-2.6.30.4_20100531.tar.bz2”源码包. 解压(天嵌默认解压到/opt/E ...
- Linux系统中用DNW向ARM开发板下载程序
在Linux下通过dnw来给开发板发送程序.包括驱动程序代码:secbulk.c,应用程序代码:dnw.c.只能运行在32位系统上,在64位系统上提示错误:DNW download Data size ...
- 超简单易用的 “在 pcduino 开发板上写 Linux 驱动控制板载 LED 的闪烁”
版权声明:本文为博主原创文章,未经博主同意不得转载.转载联系 QQ 30952589,加好友请注明来意. https://blog.csdn.net/sleks/article/details/251 ...
- iTOP-4412开发板全新升级支持4G全网通模块
开发板支持4G,GPS,CAN,485,WIFI蓝牙,重力加速度计,陀螺仪等模块. 核心板参数 尺寸:6cm*7cm 高度:连同连接器在内0.26cm CPU:Exynos4412,四核Cortex- ...
- 华为E392-u92在 linux 2.6.34 内核环境下支持
还是先说说思路吧.网关需要支持4G LTE网卡.如之前的操作,插上网卡后,usb-modeswitch 后没有产生对应的/dev/ttyUSB0-2. 所以ppp拨号脚本等无法工作.这里在ubuntu ...
- minigui移植到arm linux开发板上无法执行
要保证目录下有该文件 /etc/MiniGUI.cfg 复制过程使用cp –af 强制复制
- linux 开发板上的调试
1.需要命令 ulimit 进行设置core file size , 看 core file size. cat /proc/pid/limits, 这个暂时不用 2.需要有gdb命令 , 需要g ...
- 韦东山嵌入式Linux学习笔记02--如何给开发板烧录程序
购买韦东山嵌入式开发板jz2440 v3会标配两根usb线和一根网线,OpenJtag需要单独购买, 我暂时还没买到该工具. 下面介绍usb烧录以及通过网线烧录程序. 1.usb烧录程序: 借助DNW ...
- GPRS模块在Linux平台上ppp拨号上网总结与心得
linux平台的ppp拨号上网,(注明:这里只谈命令行拨号,用linux就要习惯和熟练使用命令行) 在网上常见的有三种方式:1.使用智能的ppp拨号软件wvdial:参考案例:本博客的<使用wv ...
随机推荐
- yii 操作session和cookie
一,在Yii中使用session 1,CHttpSession 与原生态php5的session使用差别是,php5使用session_start();$_session['key'] = $valu ...
- Golang 绘图基础- 不同的输出源
先看一个简单代码, 它执行后会产生下面的300*500的png图片文件: 代码: 1: package main 2: 3: import ( 4: "fmt" 5: " ...
- Golang做的验证码(2)
前面一篇文章介绍了2个用Golang做的验证码 http://www.cnblogs.com/ghj1976/p/3392847.html 这里再补充几个: 1.在GAE上使用的Google的验证码 ...
- 笔记《Java程序性能优化 让你的Java程序更快、更稳定》 第二章 设计调优
2.1 善用设计模式 23 (1) 1. 设计模式好处: 2.1.1 单例模式 23 (6) 1. 单例模式是一种对象创建模式,用于产生一个对象的具体实例,它可以确保系统中一个类只产生一个实例: 2. ...
- java --- 设计模式 --- 动态代理
Java设计模式——动态代理 java提供了动态代理的对象,本文主要探究它的实现, 动态代理是AOP(面向切面编程, Aspect Oriented Programming)的基础实现方式, 动态代理 ...
- 数往知来 asp.net 聊天室问题解决方案<十六>
1:在服务端创建了一个负责监听的sokcet //三个:采用TCP协议. ListenSocket = new Socket(AddressFamily.InterN ...
- xdebug初步
;加载xdebug模块. 根据PHP版本来选择是zend_extension还是zend_extension_ts ts代表线程安全 被坑过1次zend_extension="\web\ ...
- PySpark调用自定义jar包
在开发PySpark程序时通常会需要用到Java的对象,而PySpark本身也是建立在Java API之上,通过Py4j来创建JavaSparkContext. 这里有几点是需要注意的 1. Py4j ...
- docker集成管理工具-shipyard的开发环境搭建笔记
前段时间一直在研究openstack,后来老师告诉我需要用docker容器来搭建hadoop集群,所以就将战场转移到docker上来了,话说docker最近这段时间太火了,但是说实话我觉得应用起来还不 ...
- 【CLR】奇妙的String
- 一.背景 1. 以下代码的HashCode是否相同,它们是否是同个对象: var A = "ab" + "c"; var B = "abc&quo ...