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 ...
随机推荐
- android 带边框的圆角按钮
新建buttonstyle.xml 代码如下 <?xml version="1.0" encoding="UTF-8"?> <layer-li ...
- JDBC数据源(DataSource)的简单实现
数据源技术是Java操作数据库的一个很关键技术,流行的持久化框架都离不开数据源的应用. 数据源提供了一种简单获取数据库连接的方式,并能在内部通过一个池的机制来复用数据库连接,这样就大大减少创建数据 ...
- jquery checkbox勾选取消勾选的诡异问题
jquery checkbox勾选/取消勾选的诡异问题jquery checkbox勾选/取消勾选的诡异问题 <form> 你爱好的运动是?<input type=&q ...
- Javascript模块化开发-轻巧自制
Javascript模块化开发-轻巧自制 一.前言现在javascript的流行,前端的代码越来越复杂,所以我们需要软件工程的思想来开发前端.模块化是必不可少的,这样不仅能够提高代码的可维护性.可扩展 ...
- centos配置中文显示和中文输入
我现在使用虚拟机运行centos,但是安装完成后系统显示英文,而且无法进行中文输入,这使我感到很烦躁,虽然我对自己说,这样可以逼迫自己适应全英文的环境,但作为一个中国人还是难以忍受,所以记录一下解决办 ...
- 【quick-cocos2d-x】Lua 面向对象(OOP)编程与元表元方法
版权声明:本文为博主原创文章,转载请注明出处. 面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物. 早期的计算机编程是基于面向过程的方法,通过设计一个算法就可以解决当时 ...
- MVC linq To SQL更新数据库操作
首先在视图中提交数据,使用Html.BeginForm() @using(Html.BeginForm()) { @Html.EditorForModel() //编辑模板.控制器中传过来的数据 &l ...
- 刚刚大学毕业,自己搭网站遇到的问题 一:tomcat中同时部署两个项目的问题
最近直接把两个项目打成war包在tomcat下发布,出现了很多莫名奇妙的问题,就是不能发布成功,只能有一个项目能成功,在网上查了很多方法,以为是两个项目中jar包出现冲突,也按照网上的方法把两个项目中 ...
- Google软件测试
google测试相关的职位有三类:软件测试开发工程师.测试工程师以及测试工程经理. 软件测试开发工程师也是一个开发角色,只是工作重心在可测试性和通用测试框架上.他们参与设计评审,非常近距离地观察代码质 ...
- 一个相当好的状态机(DFA, 确定有限状态机)的编码实现,相当简洁漂亮
从jsoup而来,文章见: https://github.com/code4craft/jsoup-learning/blob/master/blogs/jsoup4.md 状态机 Jsoup的词法分 ...