高新兴 ME3630-W 4G 模块 Android 平台适配
2019-04-26
关键字:高新兴 ME3630-W 适配、rk3128 移植 4G 模块
本篇文章系笔者在移植 高新兴物联 ME3630-W 4G 模块到运行着 Android4.4 操作系统的 rk3128 开发板上的一篇日志。文章以快速适配为目的进行讲解,不涉及一些步骤的原理讲解。
这款 4G 模块是一个全网通模块,它在 rk 平台的适配资料并不多,难得的几篇博文讲的也比较片面。笔者在适配移植的过程中遇到了不少的问题,现将解决过程记录一下,以期能帮到有需要的同学。
首先,没有官方提供的适配文档是很难完成适配工作的,这款模块的官方网站为:高新兴物联 ME3630-W 官方网站 。官网中下部给出了很全面的文档。
如果没有办法直接在网上下载文档,可以要求采购向厂家索要。
硬件排查
硬件虐我千百遍,我待硬件如初恋!
这块不打算详细聊,总之您想办法确保硬件电路 OK 就好。祝好运!
软件排查
1. 内核支持
要调 4G 模块,首先需要确保对应的内核功能模块是可用的。一般可以在 menuconfig 作如下配置( 在 kernel 目录下执行 make menuconfig 命令 ),将下面标红的选项都选上。
在保存了上面的配置以后,还可以去 ./kernel/.config 文件下检查一下,看是否有如下图所示的配置
需要注意的是:一定要确保 make menuconfig 对内核功能模块做出的更改是 “最终更改” 。因为笔者这边的情况就是可以通过 make menuconfig 来更改内核功能模块,然后再编译大包的时候还会再从另外一个地方读取一下内核功能配置模块。对于这种有多处可以修改内核功能模块的情况,一定要保证好上面的配置项不会被重置掉! 这个很重要。
2. 注册模块
这款 4G 模块会以 ttyUSB0 ~ ttyUSB2 的形式注册在 /dev 目录下。所以我们在板子启动以后首先要检查 /dev 目录,看是否有下图所示的几个设备节点
如果没有,则是没有配好相应的 vendor id 和 product id 。此时,我们就需要操作这个文件了
.\kernel\drivers\usb\serial\option.c
在 option.c 的 option_ids[] 中添加您模块对应的 VID 和 PID 。
static const struct usb_device_id option_ids[] = {
// ... { USB_DEVICE(0x19d2, 0x1476) }, // ...
}
如果您不知道您手里的模块的 VID 和 PID ,有官方适配文档的直接参考官方适配文档,没有的则可以上网查一下,实在不行,可以看串口的打印,通常在内核打印中都会将新设备的 vid , pid 打印出来的。中兴集团的 VID 固定为 0x19d2 。
然后,最好再在 option.c 文件中的 option_probe 函数中添加下面一段代码,这一步的目的是为了防止用来传输上网数据的 USB 口被映射成普通 USB 串口。
static int option_probe(struct usb_serial *serial, const struct usb_device_id *id)
{ // ... printk("idVendor=%x, idProduct=%x, bInterfaceNumber =%d\n\n",
serial->dev->descriptor.idVendor,
serial->dev->descriptor.idProduct,
serial->interface->cur_altsetting->desc. bInterfaceNumber); if (serial->dev->descriptor.idVendor == 0x19d2 &&
serial->dev->descriptor.idProduct == 0x1476 &&
serial->interface->cur_altsetting->desc. bInterfaceNumber == )
return -ENODEV; if (serial->dev->descriptor.idVendor == 0x19d2 &&
serial->dev->descriptor.idProduct == 0x1476 &&
serial->interface->cur_altsetting->desc. bInterfaceNumber == )
return -ENODEV; if (serial->dev->descriptor.idVendor == 0x19d2 &&
serial->dev->descriptor.idProduct == 0x1476 &&
serial->interface->cur_altsetting->desc. bInterfaceNumber == )
return -ENODEV; // ... }
3. 预置驱动文件
按照下表将对应的文件预置到系统中。
这些文件都是模块厂商提供的。
4. 系统配置
在您的 init.rc 文件中添加以下信息
service ril-daemon /system/bin/rild -l /system/lib/libreference-ril-gosuncn.so
class main
socket rild stream root radio
socket rild-debug stream radio system
user root
group radio cache inet misc audio log service pppd_gprs /system/etc/init.gprs-pppd
user root
group radio cache inet misc log
disabled
oneshot
对了,或许您还需要再关注一下 APN 的配置。
./device/rockchip/common/phone/etc/apns-full-conf.xml
关于 APN 信息,笔者这边也不是很清楚,因为笔者没有配置过 APN 信息。
这边贴一个简要参考,可以通过 Android 系统启动以后在系统设置中配置一下 APN 信息
电信 --> ctnet
联通 --> 3gnet
移动 --> cmnet
5. 调试
此时,我们的基本适配工作就做完了。编译系统并烧写。首先可以来检查我们的 4G 模块是否被正确识别到。可以查看内核打印来检查。
dmesg
通常,如果您能看到类似下面所示的打印,就稳的了。
usb -: new high-speed USB device number using rockchip_ehci_host
usb -: New USB device found, idVendor=19d2, idProduct=
usb -: New USB device strings: Mfr=, Product=, SerialNumber=
usb -: Product: Android
usb -: Manufacturer: Android
usb -: SerialNumber: d6ee6d9b
idVendor=19d2, idProduct=, bInterfaceNumber =
option -:1.0: GSM modem (-port) converter detected
usb -: GSM modem (-port) converter now attached to ttyUSB0
idVendor=19d2, idProduct=, bInterfaceNumber =
option -:1.1: GSM modem (-port) converter detected
usb -: GSM modem (-port) converter now attached to ttyUSB1
idVendor=19d2, idProduct=, bInterfaceNumber =
option -:1.2: GSM modem (-port) converter detected
usb -: GSM modem (-port) converter now attached to ttyUSB2
cdc_ether -:1.3 usb0: register 'cdc_ether' at usb-101c0000.usb-, CDC Ethernet Device, c6:::::
如果很不幸您 /dev 目录下并没有 ttyUSB0 ~ ttyUSB2 这 3 个节点,那就得再回去好好检查检查了。
然后这个时候,如果有屏幕的话就可以去屏幕上确认确认,所插的 SIM 卡是否成功入网,并且能够通过蜂窝网络访问互联网了。
如果这个时候发现所插 SIM 卡无法正确入网,常用的检测手段是可以通过如下命令查看电话网络的打印
logcat -b radio
对应地,清日志缓冲区的命令是
logcat -c -b radio
如果您的适配过程并不那么顺利,那就需要对照着官方提供的适配文档来排错了。
关于官方提供的文档与驱动,笔者这边碍于版权问题,就不提供下载链接了。
6. ttyUSB 释义
这里再解释一下 ttyUSB0, ttyUSB1, ttyUSB2 各自有什么作用,看下表
型号 | 设备号 | 作用 |
ME3630-W ( pid: 0x1476 ) |
ttyUSB0 | DIAG |
ttyUSB1 | AT | |
ttyUSB2 | MODEM | |
3 | ECM | |
4 | ECM |
7. 自定义拨号流程
如果您的业务需要客制化拨号流程,或者您怀疑系统的拨号流程有问题,可以关注下这块代码
./hardware/ril/
入网拨号流程一般是首先走
./rild/rild.c
里的 main() 函数。然后在 main() 函数中调用到
./reference-ril/reference-ril.c
里面的 RIL_Init 函数。在这个 reference-ril.c 里面比较重要的函数还有 mainLoop 、initializeCallback 、 onUnsolicited 、 onRequest 。
其实 Android 原生的入网流程就已经很完善了,如果是排查问题的话,笔者建议可以不用看这里的代码,大概率是没有什么结果的。
如果要查看拨号日志,使用如下命令
logcat -s pppd
参考:
高新兴 ME3630-W 4G 模块 Android 平台适配的更多相关文章
- Android平台介绍
一.Android平台介绍 什么是智能手机 具有独立的操作系统,独立的运行空间,可以由用户自行安装软件.游戏.导航等第三方应用程序,并可以通过移动通讯网络来实现无线网络接入的手机类型总称. 智能手机操 ...
- Android 平台 Native 代码的崩溃捕获机制及实现
本文来自于腾讯Bugly公众号(weixinBugly),未经作者同意,请勿转载,原文地址:https://mp.weixin.qq.com/s/g-WzYF3wWAljok1XjPoo7w 一.背景 ...
- 基于android平台的斗地主AI
本软件是基于android平台的斗地主AI,我们在源代码的基础之上,旨在改进AI的算法,使玩家具有更丰富的体验感,让NPC可以更为智能. (一)玩法解析: (1)发牌和叫牌:一副扑克54张,先为每个人 ...
- dp和px,那些不得不吐槽的故事——Android平台图
http://blog.sina.com.cn/s/blog_6499f8f101014ipq.html 一个优秀的手机软件,不仅要有精巧的功能,流畅的速度,让人赏心悦目的UI也往往是用户选择的重要理 ...
- android屏幕适配详解
android屏幕适配详解 官方地址:http://developer.android.com/guide/practices/screens_support.html 一.关于布局适配建议 1.不要 ...
- 嵌入式开发 迅为4418开发板Qt移植移动4G模块第一部分
本文转自迅为论坛:http://topeetboard.com 了解更多:https://item.taobao.com/item.htm?spm=a1z10.1-c.w4004-7744162139 ...
- dp和px,那些不得不吐槽的故事——Android平台图片文字元素单位浅析 (转)
一个优秀的手机软件,不仅要有精巧的功能,流畅的速度,让人赏心悦目的UI也往往是用户选择的重要理由.作为移动产品的PM,也需要了解一些在UI设计中的基本知识. 1. px和pt,一对好伙伴 在视觉设计中 ...
- [转载]迅为4418开发板Qt移植移动4G模块第一部分
本文转自迅为论坛:http://topeetboard.com 平台:iTOP-4418开发板 1.首先要配置内核,这个一步和Android系统移植3G或者4G模块是一样的.一般模块的 ...
- [译]:Xamarin.Android平台功能——位置服务
返回索引目录 原文链接:Location Services. 译文链接:Xamarin.Android平台功能--位置服务 本部分介绍位置服务以及与如何使用位置提供商服务 Location Servi ...
随机推荐
- JavaScript键盘鼠标事件处理
监听键盘鼠标事件 监听某个按键事件 当键盘上的某个键被按下时,会依次触发一次下面的事件: onkeydown: 键盘按下这个动作(按下键盘) onkeypress: 键盘被按住(一直按着键盘不动) o ...
- 现代Java进阶之路必备技能——2019 版
Java技术的学习阶段有三 第1个是java基础,比如对集合类,并发,IO,JVM,内存模型,泛型,异常,反射,等有深入了解. 第2个是全面的互联网技术相关知识,比如redis,mogodb,ngin ...
- 基于Springboot集成security、oauth2实现认证鉴权、资源管理
1.Oauth2简介 OAuth(开放授权)是一个开放标准,允许用户授权第三方移动应用访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方移动应用或分享他们数据的所有内容,OAu ...
- Windows环境npm无法生效
上网查询得知安装完nodejs之后配置windows环境变量只能保证在命令行工具中可以使用npm,如果想在git bash中使用需要再安装一遍 安装后记得配置环境变量
- 五一出门必备的手机APP神器 让你瞬间大开眼界
如今我们手机上有各种各样的软件,但是比较实用的又有哪些呢?所以每次大家都会花上很久的时间去查找满意的软件吧!今天就给大家送上一波福利,因为五一小长假就要到来了,说不定大家会使用到呢! 轻颜相机 轻颜相 ...
- su和sudo的区别
首先来说一下su 然后是sudo
- Webpack4教程 - 第二部分,使用loader处理scss,图片以及转换JS
转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 原文出处:https://wanago.io/2018/07/16/webpack-4-course-par ...
- APP请求服务器数据-HttpUrlConnection
1. 实例化URL对象 首先第一步实例化一个URL对象,传入参数为请求的数据的网址. URL url = new URL("http://www.imooc.com/api/teacher? ...
- Eclipse导出包含第三方Jar的工程
基于第三方开源的Jar包封装了一个工具类,在导出成Jar包后,引用新生成的Jar包,却报找不到类的错误.看了一下生成的Jar包,发现根本没有包含第三方Jar包的相关class.这是导出第三方Jar包时 ...
- C# 离线人脸识别 ArcSoft V2.0 Demo
本来打算做个C#版demo,但没用成功.使用虹软最新人脸识别技术开发完成 过程如下: 1. 传入一张单人脸照片: 2.调用检测人脸函数ASFDetectFaces,成功返回人脸信息的指针: 3.使用 ...