【玩转开源】BPI-M64 Android6.0 USB Dongle 4G(EC2X)+GPS功能支持移植

1. 移植Linux驱动,这部分可以参考供应商提供的驱动文档(不做过多描述)

一般来说主要添加这几部分:

1.1 添加USB驱动

1.2 配置内核选项

具体参考可以看这里:https://github.com/garywangcn/bpi-r2_lede/commit/8cb7cc2b8b667d2d692b8787ad87046f1a349026

2. 移植GPS,模块厂商会提供相应的文档和驱动,所以难度应该不大

2.1 添加编译:android/hardware/libhardware/modules/Android.mk

2.2 把gps驱动代码放置在路径:android/hardware/libhardware/modules/gps下,如果没有gps目录则新建

3. GPS驱动移植完成后,接下来移植RIL到Android支持4G,这部分一般来说模块供应商也会提供驱动文档(也不做过多描述)

3.1 不过几个注意事项

3.1.1 在添加service到rc文件,如果开发板是64bit的比如M64, rc文件路径:android/device/softwinner/bpi-m64-hdmi/init.sun50iw1p1.rc

则注意libreference-ril.so需要用64位的

4. 编译镜像

4.1 如果顺利的话,这个Android镜像就可以使用4G功能了,如果发现该镜像没有4G上网功能怎么办,或者是有些sim卡支持,有些不支持,原因很可能是因为没有配置好APN导致的。

比如我使用的是移动的物联网卡,先通过AT指令读出sim卡的信息,这里需要配置mcc和mnc,可以通过AT+CIMI读出:

前5位数字是:46004,那么MCC=460,MNC=04

接下来在android/device/softwinner/common/rild/apns-conf_sdk.xml里面去添加apn,添加后就可以实现该卡4G上网了

4.2 Android菜单“Android Settings->WIRELESS & NETWORKS->More->Mobile Networks->设置首选网络”没有4G选项,怎么办?

4.2.1 配置:android/packages/services/Telephony/res/values/config.xml

配置后UI则会出现4G选项了:

4.2.2 设置首选网络是4G,配置文件:android/frameworks/base/telephony/java/com/android/internal/telephony/RILConstants.java

NETWORK_MODE_WCDMA_PREF替换为:NETWORK_MODE_LTE_GSM_WCDMA

当然也可以通过AT指令来设置优先网络:

AT+QCFG="NWSCANMODEEX",63 4G优先
AT+QCFG="NWSCANMODEEX",47 3G优先

 实物图如下:

测试GPS:

 4G上网:

 

posted @ 2019-05-20 17:33  JackZengLab  阅读(1141)  评论(0编辑  收藏  举报