1、通过串口打印或者adb获取模块的 pid 和 vid,顺便可以看到生成 4 个虚拟串口 /dev/ttyUSB*

[   11.734379] usb 1-1.1: new high-speed USB device number 3 using ehci-platform
[   11.828247] usb 1-1.1: New USB device found, idVendor=2c7c, idProduct=0125
[   11.828386] usb 1-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[   11.828413] usb 1-1.1: Product: Android
[   11.828436] usb 1-1.1: Manufacturer: Android
[   11.835480] option 1-1.1:1.0: GSM modem (1-port) converter detected
[   11.841217] usb 1-1.1: GSM modem (1-port) converter now attached to ttyUSB0
[   11.844988] option 1-1.1:1.1: GSM modem (1-port) converter detected
[   11.851892] usb 1-1.1: GSM modem (1-port) converter now attached to ttyUSB1
[   11.853964] option 1-1.1:1.2: GSM modem (1-port) converter detected
[   11.864677] usb 1-1.1: GSM modem (1-port) converter now attached to ttyUSB2
[   11.865658] option 1-1.1:1.3: GSM modem (1-port) converter detected
[   11.871387] usb 1-1.1: GSM modem (1-port) converter now attached to ttyUSB3

2、在代码中添加模块的 pid 和 vid,原始代码中已经包含移远的几个模块,仿照现有的添加 EC20

diff --git a/kernel/drivers/usb/serial/option.c b/kernel/drivers/usb/serial/option.c
index 1799aa0..f6c9e5d 100644
--- a/kernel/drivers/usb/serial/option.c
+++ b/kernel/drivers/usb/serial/option.c
@@ -241,6 +241,7 @@ static void option_instat_callback(struct urb *urb);#define QUECTEL_VENDOR_ID                      0x2c7c/* These Quectel products use Quectel's vendor ID */
+#define QUECTEL_PRODUCT_EC20                   0x0125#define QUECTEL_PRODUCT_EC21                   0x0121#define QUECTEL_PRODUCT_EC25                   0x0125#define QUECTEL_PRODUCT_BG96                   0x0296
@@ -1200,6 +1201,8 @@ static const struct usb_device_id option_ids[] = {{ USB_DEVICE(QUALCOMM_VENDOR_ID, YUGA_PRODUCT_CLM920_NC5),.driver_info = (kernel_ulong_t)&yuga_clm920_nc5_blacklist },/* Quectel products using Quectel vendor ID */
+       { USB_DEVICE(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EC20),
+         .driver_info = (kernel_ulong_t)&net_intf4_blacklist },{ USB_DEVICE(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EC21),.driver_info = (kernel_ulong_t)&net_intf4_blacklist },{ USB_DEVICE(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EC25)

3、添加模块的 so 库,此库需要移远提供,so 支持的系统要匹配,将 so 库拷贝到下面的路径

vendor/rockchip/common/phone/lib/libreference-ril.so

4、打开 device/rockchip/common/device.mk 文件,修改 rild.libpath 路径为 rild.libpath=/system/lib64/libreference-ril.so

diff --git a/device/rockchip/common/device.mk b/device/rockchip/common/device.mk
index be2cb2c..69034a7 100755
--- a/device/rockchip/common/device.mk
+++ b/device/rockchip/common/device.mk
@@ -699,7 +699,7 @@ endififeq ($(strip $(BOARD_HAVE_DONGLE)),true)ifeq ($(strip $(TARGET_ARCH)), arm64)PRODUCT_PROPERTY_OVERRIDES += \
-    rild.libpath=/system/lib64/libril-rk29-dataonly.so
+    rild.libpath=/system/lib64/libreference-ril.soelsePRODUCT_PROPERTY_OVERRIDES += \rild.libpath=/system/lib/libril-rk29-dataonly.so

因为 rk3399 是64位 CPU,所以 ifeq ($(strip $(TARGET_ARCH)), arm64) 条件成立。

但是前提都是 BOARD_HAVE_DONGLE 变量值为 true

5、编译时将 so 库拷贝到上面指定目录 /system/lib64/libreference-ril.so

diff --git a/vendor/rockchip/common/phone/phone.mk b/vendor/rockchip/common/phone/phone.mk
index 946aacd..f8fc6e7 100755
--- a/vendor/rockchip/common/phone/phone.mk
+++ b/vendor/rockchip/common/phone/phone.mk
@@ -8,7 +8,8 @@ PRODUCT_COPY_FILES += \$(CUR_PATH)/phone/etc/ppp/ip-down:system/etc/ppp/ip-down \$(CUR_PATH)/phone/etc/ppp/ip-up:system/etc/ppp/ip-up \$(CUR_PATH)/phone/etc/ppp/call-pppd:system/etc/ppp/call-pppd \
-    $(CUR_PATH)/phone/etc/operator_table:system/etc/operator_table
+    $(CUR_PATH)/phone/etc/operator_table:system/etc/operator_table \
+    $(CUR_PATH)/phone/lib/libreference-ril.so:system/lib64/libreference-ril.soifeq ($(strip $(PRODUCT_MODEM)), DTS4108C)PRODUCT_COPY_FILES += \

6、设置 BOARD_HAVE_DONGLE 变量

diff --git a/device/rockchip/rk3399/rk3399_all.mk b/device/rockchip/rk3399/rk3399_all.mk
index 7a2d870..ce5060c 100755
--- a/device/rockchip/rk3399/rk3399_all.mk
+++ b/device/rockchip/rk3399/rk3399_all.mk
@@ -63,7 +63,7 @@ BOARD_NFC_SUPPORT := falseBOARD_HAS_GPS := false#for 3G/4G modem dongle support
-BOARD_HAVE_DONGLE := false
+BOARD_HAVE_DONGLE := trueBOARD_GRAVITY_SENSOR_SUPPORT := true

此时移植完成,只要 so 库没问题,就可以正常上网。

如果 radio log 中打印如下信息:

RIL_SAP_Init not defined or exported in /system/lib64/libril-rk29-dataonly.so不影响使用,RIL_SAP_Init初始化BT协议的。

RK3399移植4G模块相关推荐

  1. Hi3798移植4G模块(移远EC20)

    Hi3798移植4G模块(移远EC20) 一.前言 二.USB驱动修改 2.1 添加VID和PID信息 2.2 添加空包处理机制 2.3 添加复位重连机制 2.4 修改内核配置 三.GoBiNet测试 ...

  2. 高新兴 ME3630-W 4G 模块 Android 平台适配

    2019-04-26 关键字:高新兴 ME3630-W 适配.rk3128 移植 4G 模块 本篇文章系笔者在移植 高新兴物联 ME3630-W 4G 模块到运行着 Android4.4 操作系统的 ...

  3. [Android6.0][RK3399] PCIe 接口 4G模块 EC20 调试记录

    原址 Platform: RK3399  OS: Android 6.0  Kernel: 4.4  Version: v2017.04  4G Module: EC20-CE 一基本概念 USB 部 ...

  4. Linux移植EC20 4G模块驱动简易教程

    关于4G模块常见的品牌与型号: 品牌 型号 市场价格 芯片组 状态 HUAWEI ME909s-821 210-260 海思芯片,只有五模 在售 HUAWEI ME909s-521 400左右 高通芯 ...

  5. 小白求,用RE文件管理器移植移远EC20 4G模块驱动。 有重谢。请加w jiao1998524

    小白求,用RE文件管理器移植移远EC20   4G模块驱动.  有重谢.请加w  jiao1998524

  6. linux系统华为4G模块移植及pppd拨号上网开发总结

    一.开发环境简介 开发系统: Ubuntu 14.04 内核版本:linux 3.10 4G模块:ME909-821和ME909-120 模块接口:pcle SIM卡:联通 二.内核驱动配置 需向li ...

  7. 基于Xavier 移植移远EG25G 4G模块

    基于Jetson Xavier NX 移植移远EG25G 4G模块 先敲一下黑板,使劲敲 大家一定先试一下直接插上4G模块后,linux能否读出来,就是右上角的wifi设置那里面出不出现移动网络信息, ...

  8. linux ec20 usb驱动移植,linux下EC20 4G模块驱动移植

    之前有移植过ME909s MU609,主要工作就是把4G模块当做USB设备,挂载在linux上,驱动移植主要是能够让板子识别到模块,并产生SUB多个虚拟的节点,用于操作模块,拨号上网 关于内核的配置, ...

  9. Android6.0 EC20 R2.1 4G模块移植

    摘要:   本文主要针对MTK MT8317 Android6.0 代码进行4G模块移植,使用pppd拨号的方式实现上网,并没有按照移远提供的文档GobiNet方式上网. 1.内核部分的移植 1.1 ...

最新文章

  1. Linux top命令常见使用
  2. 几种在Linux下查询外网IP的办法
  3. python可变参数记录
  4. 【杂项】CUDA下找不到CUDA Sample文件
  5. 【JDK源码】java.io包常用类详解
  6. lambda表达式java_Lambda表达式Java教程
  7. 多线程知识梳理(2) - 并发编程的艺术笔记
  8. hadoop3.0新特性介绍
  9. deepin终端启动自安装程序
  10. python3笔记-文件操作
  11. gorm的Related和Association的区别
  12. 用python中的turtle库画蜡笔小新
  13. 【delphi】TMS_Component_Pack_v9.2.4.0中的TadvMemo 支持中文完美修改
  14. crx文件怎么打开(谷歌crx文件怎么打开)
  15. [Back-To-Back LC]背对背信用证
  16. 验证wireshark追踪qq图片
  17. 西安交通大学计算机组成原理第三章,西安交通大学计算机组成原理专题实验(上)第三次实验报告.pdf...
  18. 6. Java并发编程-并发包-Lock和Condition
  19. Unity实现多屏显示
  20. MATLAB函数极限和微分运算

热门文章

  1. 2020-11-24:n个物品每个物品都有一定价值,分给2个人,怎么分两个人的价值差最小?
  2. mysql bcnf_数据库范式(1NF 2NF 3NF BCNF)详解一
  3. 不同品牌手机的GPS位置服务名称
  4. Auto Complete -- Typeahead 和DateRangePicker
  5. 公司企业邮箱价格,企业邮箱账号购买平台
  6. 一个完善的产品设计流程是怎样的?
  7. C# 如何重复调用父窗体中的子窗体
  8. 一、FM1288调试方案-调试基础知识
  9. web前端 html部分
  10. HIT 软件构造 垃圾回收