EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
CPU:RK3399 系统:Android 7.1
2 _- ?- e) z1 I4 |) i1、通过串口打印或者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 devicefound, idVendor=2c7c, idProduct=0125 [ 11.828386] usb 1-1.1: New USB devicestrings: 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 : @; t2 A- j& J& U3 Y
2、在代码中添加模块的 pid 和 vid,原始代码中已经包含移远的几个模块,仿照现有的添加 EC20 diff --gita/kernel/drivers/usb/serial/option.c b/kernel/drivers/usb/serial/option.c index1799aa0..f6c9e5d 100644 --- a/kernel/drivers/usb/serial/option.c +++b/kernel/drivers/usb/serial/option.c @@ -241,6 +241,7 @@ static voidoption_instat_callback(struct urb *urb); 6 C8 {1 W, |/ C. I- ]2 E
#defineQUECTEL_VENDOR_ID 0x2c7c /* These Quectel products use Quectel's vendor ID */ +#define QUECTEL_PRODUCT_EC20 0x0125 #defineQUECTEL_PRODUCT_EC21 0x0121 #defineQUECTEL_PRODUCT_EC25 0x0125 #defineQUECTEL_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 M6 G9 T5 u( S: g2 n3、添加模块的 so 库,此库需要移远提供,so 支持的系统要匹配,将 so 库拷贝到下面的路径 vendor/rockchip/common/phone/lib/libreference-ril.so - y8 H' O$ ?( v5 h1 S% m
4、打开device/rockchip/common/device.mk 文件,修改 rild.libpath 路径为rild.libpath=/system/lib64/libreference-ril.so diff --gita/device/rockchip/common/device.mk b/device/rockchip/common/device.mk indexbe2cb2c..69034a7 100755 ---a/device/rockchip/common/device.mk +++b/device/rockchip/common/device.mk @@ -699,7 +699,7 @@ endif ifeq ($(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.so else PRODUCT_PROPERTY_OVERRIDES += \ rild.libpath=/system/lib/libril-rk29-dataonly.so 因为 rk3399 是64位 CPU,所以 ifeq ($(strip $(TARGET_ARCH)), arm64)条件成立。 但是前提都是 BOARD_HAVE_DONGLE变量值为 true 注:本人测试,修改下面两个文件中的 rild.libpath 不起作用 device/rockchip/rk3399/system.prop device/rockchip/rk3399/rk3399_all/system.prop , }6 `. }! l$ z" B* a% `
5、编译时将 so 库拷贝到上面指定目录/system/lib64/libreference-ril.so diff --gita/vendor/rockchip/common/phone/phone.mk b/vendor/rockchip/common/phone/phone.mk index946aacd..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.so
$ J9 {1 a; t( Z' d7 mifeq ($(strip $(PRODUCT_MODEM)), DTS4108C) PRODUCT_COPY_FILES += \
8 t B! K5 B( d7 U9 A/ e6、设置 BOARD_HAVE_DONGLE变量 diff --gita/device/rockchip/rk3399/rk3399_all.mk b/device/rockchip/rk3399/rk3399_all.mk index7a2d870..ce5060c 100755 ---a/device/rockchip/rk3399/rk3399_all.mk +++b/device/rockchip/rk3399/rk3399_all.mk @@ -63,7 +63,7 @@BOARD_NFC_SUPPORT := false BOARD_HAS_GPS := false ) \# u) F, t: q: G- g
#for 3G/4G modemdongle support -BOARD_HAVE_DONGLE:= false +BOARD_HAVE_DONGLE:= true
7 y s+ O! {) |$ P' y! M
7 O! L2 K, f2 H" {% A6 j( tBOARD_GRAVITY_SENSOR_SUPPORT := true % Y. Y' S) ^5 `: o, j
此时移植完成,只要 so 库没问题,就可以正常上网。 . g3 G3 H! V2 j
如果 radio log 中打印如下信息: RIL_SAP_Init notdefined or exported in /system/lib64/libril-rk29-dataonly.so 检查 rild.libpath 的路径和名称是否正确。 # K. u. @2 l K8 e2 u+ I4 `' ~
No /proc/cmdlineexception=java.io.FileNotFoundException: /proc/cmdline (Permission denied) 此报错不影响联网,可以忽略 , s2 k9 Y" z7 g' k( [5 W& R: R
|