先说段废话,话说在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 内核的开发板上的支持方法的更多相关文章

  1. 运行在TQ2440开发板上以及X86平台上的linux内核编译

    一.运行在TQ2440开发板上的linux内核编译 1.获取源码并解压 直接使用天嵌移植好的“linux-2.6.30.4_20100531.tar.bz2”源码包. 解压(天嵌默认解压到/opt/E ...

  2. Linux系统中用DNW向ARM开发板下载程序

    在Linux下通过dnw来给开发板发送程序.包括驱动程序代码:secbulk.c,应用程序代码:dnw.c.只能运行在32位系统上,在64位系统上提示错误:DNW download Data size ...

  3. 超简单易用的 “在 pcduino 开发板上写 Linux 驱动控制板载 LED 的闪烁”

    版权声明:本文为博主原创文章,未经博主同意不得转载.转载联系 QQ 30952589,加好友请注明来意. https://blog.csdn.net/sleks/article/details/251 ...

  4. iTOP-4412开发板全新升级支持4G全网通模块

    开发板支持4G,GPS,CAN,485,WIFI蓝牙,重力加速度计,陀螺仪等模块. 核心板参数 尺寸:6cm*7cm 高度:连同连接器在内0.26cm CPU:Exynos4412,四核Cortex- ...

  5. 华为E392-u92在 linux 2.6.34 内核环境下支持

    还是先说说思路吧.网关需要支持4G LTE网卡.如之前的操作,插上网卡后,usb-modeswitch 后没有产生对应的/dev/ttyUSB0-2. 所以ppp拨号脚本等无法工作.这里在ubuntu ...

  6. minigui移植到arm linux开发板上无法执行

    要保证目录下有该文件 /etc/MiniGUI.cfg 复制过程使用cp –af 强制复制

  7. linux 开发板上的调试

    1.需要命令 ulimit 进行设置core file size ,  看 core file size. cat /proc/pid/limits,  这个暂时不用 2.需要有gdb命令 , 需要g ...

  8. 韦东山嵌入式Linux学习笔记02--如何给开发板烧录程序

    购买韦东山嵌入式开发板jz2440 v3会标配两根usb线和一根网线,OpenJtag需要单独购买, 我暂时还没买到该工具. 下面介绍usb烧录以及通过网线烧录程序. 1.usb烧录程序: 借助DNW ...

  9. GPRS模块在Linux平台上ppp拨号上网总结与心得

    linux平台的ppp拨号上网,(注明:这里只谈命令行拨号,用linux就要习惯和熟练使用命令行) 在网上常见的有三种方式:1.使用智能的ppp拨号软件wvdial:参考案例:本博客的<使用wv ...

随机推荐

  1. Codeforces Round #214 (Div. 2) c题(dp)

    C. Dima and Salad time limit per test 1 second memory limit per test 256 megabytes input standard in ...

  2. [Everyday Mathematics]20150228

    试证: $$\bex \int_0^\infty \sin\sex{x^3+\frac{\pi}{4}}\rd x =\frac{\sqrt{6}+\sqrt{2}}{4}\int_0^\infty ...

  3. MySQL修改root密码的几种方法

    方法1: 用SET PASSWORD命令 首先登录MySQL. 格式:mysql> set password for 用户名@localhost = password('新密码'); 例子:my ...

  4. effective c++:对象的赋值运算

    operator 中处理”自我赋值“ operator=操作符缺省情况下返回引用——TYPE& TYPE::operator=(const TYPE&),原因很简单,operator= ...

  5. RPC进阶篇

    RPC实现结构拆解 RPC过程调用详解:RPC 服务端通过 RpcServer 去导出(export)远程接口方法,而客户端通过 RpcClient 去引入(import)远程接口方法. 客户端像调用 ...

  6. leetcode–jump game II

    1.题目描述 Given an array of non-negative integers, you are initially positioned at the first index of t ...

  7. 【全国互虐】Fibonacci矩阵

    orz啊又被屠了 人生如此艰难 题意: 给定一个k维的n^k的超立方体 超立方体的元素Ai1,i2,...,ik 的值为f(i1+i2+...+ik-k+1) f为斐波那契数列 求该超立方体的所有元素 ...

  8. Orion Network Performance Monitor 软件在网络管理中的应用

    Orion Network Performance Monitor 软件在网络管理中的应用       Orion Network Performance Monitor是完全的带宽性能和故障管理软件 ...

  9. ipython, 一个 python 的交互式 shell,比默认的python shell 好用得多,支持变量自动补全,自动缩进,支持 bash shell 命令,内置了许多很有用的功能和函数

    一个 python 的交互式 shell,比默认的python shell 好用得多,支持变量自动补全,自动缩进,支持 bash shell 命令,内置了许多很有用的功能和函数. 若用的是fish s ...

  10. 安装完 MySQL 后必须调整的 10 项配置(转)

    英文原文:10 MySQL settings to tune after installation 译文原文:安装完 MySQL 后必须调整的 10 项配置 当我们被人雇来监测MySQL性能时,人们希 ...