基于itop4412的EC20在Android4.4的PPP拨号联网

来源:互联网 发布:mac格式化u盘 编辑:程序博客网 时间:2024/06/06 21:57

1.实验目的:实现4G模块EC20在Android4.4系统下的拨号上网

2.实验平台:迅为4412开发板,创思通信的EC20。

3.实验流程: (1)驱动实现EC20的USB接口与开发板相连,向linux内核添加4G模块的驱动和PPP协议的支持(这部分和Linux下的一样,只是把在Android下运行的内核用脚本覆盖就可以,迅为Android4.4的是:config_for_android_scp_wifi&Bluetooth);然后编译内核并下载到开发板。内核具体配置:

Linux Kernel Configure by "make menuconfig"  1.1 USB Driver Configure for EC20    Device Drivers  --->      [*] USB support  --->        <*> USB Serial Converter support          [*] USB Generic Serail Driver          [*] USB Driver for GSM and CMDA modemsEC20 's Vendor ID and Product ID in option_ids[] of drivers/usb/serial/option.cstatic const struct usb_device_id option_ids[] = {{ USB_DEVICE(0x05C6, 0x9215) },  //for EC20PPP Configure(我是把与PPP相关的全部选上了)    Device Drivers  --->      [*] Network device support  --->        <*> PPP (point-to-point protocol) support        <*> PPP support for async serial ports        <*> PPP support for sync tty ports        <*> PPP Deflate compression注:EC20手册上说的零包机制的添加,我按照手册添加到我的内核中,但是编译一直出错,我最后没加进去,不影响实现的!

(2)Android下RIL层实现这一部分对应的是Android源码下/hardware/ril/文件夹

这里写图片描述

与厂商对应(不同模块)对应的是/hardware/ril/reference-ril/文件夹

这里写图片描述

Android4.4源码中的reference-ril/文件:

这里写图片描述

EC20提供的reference-ril/文件:

这里写图片描述

我是直接先删除原来的reference-ril文件夹,再把创思提供的reference-ril文件夹复制过去,直接拷贝过去就行,不用修改!

(3)启动文件init.rc 配置目录:

这里写图片描述

将原Android下的service ril-daemon服务注释或者删掉,换成对应的service ril-daemon 原:

这里写图片描述

修改为:

service ril-daemon /system/bin/rild -l /system/lib/libreference-ril.soclass mainsocket rild stream 660 root radio socket rild-debug stream 666 radio system user root group radio cache inet misc audio sdcard_rw log并且在init.rc文件中加入quectel-pppd服务service quectel-pppd /etc/ppp/init.quectel-pppdclass mainuser rootgroup radio cache inet misc logdisabledoneshot

(4)编译Android4.4系统

这里写图片描述

只要第一次编译成功后(第一次时间很长,和电脑的配置都有关系),后面的时间会相对短一些.编译成功后,我们们得到这样一些文件:

这里写图片描述

绿色标记的两个即为要烧写到Android系统的镜像

(5)烧写到开发板后查看驱动:

这里写图片描述

这时会有一些提示信息。打开/system/build.prop 文件,将原有的rild.libpath和rild.libargs注释,修改成如下:rild.libpath=/system/lib/libreference-ril.sorild.libargs=-d /dev/ttyUSB2(说明:ttyUSB2为基带模块的AT指令口)过一会就可以看到如下信息:

这里写图片描述

我们可以查看一下和拨号上网相关的文件:全部都生成了

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述


这时可以看到平板上已有信号,4G网络也有了,打开浏览器,载入网页,可知已经成功实现上网了。查看网络:ppp0已经存在

这里写图片描述

这里写图片描述

4.总结 调试4G模块这么多天,终于调通了!刚开始用的是SIM7100C,一直弄不出来,后来又和老师申请买了EC20,现在都调试出来了,以后若再做相关的模块,也有经验了。在这个过程中,开始的时候因为不理解相关的概念,只能在查阅网上的相关资料后自己再动手操作,但是这个过程也是比较能够学到东西的!

我在Linux最小系统下实现PPP拨号后,打算尽快把Android系统下的也实现了,但是这过程中又遇到了很多的问题:刚开始是编译迅为提供的Linux内核源码,烧写到开发板后,一直没有屏幕的显示,后面找迅为工程师也没搞清楚是什么问题,又重新到迅为在github上提供的内核源码下载了一份,编译烧写,终于有显示了,我想一开始的源码可能是因为迅为没有把显示的部分包含进去,有点小瑕疵,内核问题总算告一段落了。趁热打铁,马上到网上看了一些关于3G,4G模块在Android系统下的实现,看了一早上后,大概有一个整体的思路了,上手试试,编译Android4.4的源码,因为迅为提供的Android4.4很好地支持vi编辑器,这样在超级终端操作的时候就方便得多。将源码下载下来,拷贝进去虚拟机ubuntu里,解压结束后,进行编译,啊,好慢,编译了半天,出错了,按着提示改错,但还是编译半天后莫名其妙的出错,联系迅为的工程师,他们提供了很多帮助,但一直没能解决,后来没办法,又在网上搜搜出错的问题,很幸运的搜到了一篇和我一样问题的帖子,按着他的方法修改,终于在经过漫长的编译,终于成功了。关于出错的原因及解决方法,我在帖子里有写,这里贴个地址:iTOP-4412开发板Android4.4.4操作系统源码编译错误分析终于把Android4.4编译出来了,我想,现在我把提供的SIM7100C配套的ril文件夹下的源码替换了原Android系统下ril源码,在把init.rc文件配置,应该没问题了吧,编译成功,烧写到开发板,啥现象都没有,傻眼。在这里还是要感谢广大的前辈们提供的经验,经过修改之后终于在平板上看到信号了,先用自己的手机拨了一个号,通了,电话没有问题了,但是我打开数据,却不显示数据图标,再打开浏览器,没有网络。原来是自己想的太简单了,还有很多的细节问题。就这样,数据功能一直没有实现,在调试了很长一段时间,无果,我想要不换个模块试试,可能思路被束缚了,于是就买了创思的EC20,买回来,马上动手调试,基于前面的基础,很快在Linux下实现了,转到Android,我把提供的资料都认真读了一遍,该做笔记的记好,按照技术手册开始调试,准备好内核,Android的镜像,烧写进开发板,过了一会,惊喜出现了,我在平板上看到手机信号,更总要的是出现了4G数据信号,打开浏览器,成功了。很高兴,自己这么长时间的付出终于看到收获了,于是趁着这个劲头,按照EC20的方式,调试7100,配置好后也出来了,连接上了数据。花了这么长时间的解决的问题,这一下子都解决了。数据方面总算可以使用了,可以进行下一个工作了。

我自己回头看问题出在哪?让自己走了那么多的弯路,原来与不同的厂商的modem模块相关的源码部分是renference-ril文件夹里面的,自己当初把ril下的全部替换了,导致编译出来的chat文件无法执行(这个我觉得是迅为提供的Android源码与厂家给我的有些出入),真是不该。但在这个过程中,正是出了这么多的问题,让我从更多的方面去考虑解决问题的思路,从中去学习了无线接口层RIL的实现,不过有的地方还是不太清楚,但至少总体上有了一个认识,对出现问题的地方知道如何解决,也是一个技能吧。不管怎么说,数据的部分总算搞定了。

0 0
原创粉丝点击