RK3566 Android13 EC20-4G模块
硬件方案
已在 Android11 调通,无硬件问题。
参考方案
移植补丁
之前 Android11 移植成功的补丁:
通过网盘分享的文件:RK3566-Android11-EC20补丁
链接: https://pan.baidu.com/s/12Sw7eRT52uoLqlnxKGXYlg 提取码: 1234
参考了上面一堆相关文章后,我制作的:
通过网盘分享的文件:RK3566-Android13-失败补丁EC20
链接: https://pan.baidu.com/s/12yjWiIFRke0ItNn0Ps3vaA 提取码: 1234
相关命令
报错记录
串口日志输出 ril-daemon 无法启动。

解决办法1
/home/lckfb/EX_DISK_4T/liguoyi/android13/hardware/ril/rild/rild.rc
确保你的 so 文件路径正确。
libquec-EC20-ril.so 换成你自己的 so 文件
解决办法2
查看logcat信息,发现系统加载 /vendor/lib64/libreference-EC20-ril.so 时会崩溃;查看这个RIL库是否适合在Android 13上使用,若不支持Android 13需找模组厂提供新的库。实测更新用新的就好了。
获取APN数据为空,导致APN设置失败不注网
报相关错误:
因系统获取不到APN数据,没法匹配SIM卡对应的APN,导致无法注网的解决办法:
--- a/frameworks/opt/telephony/src/java/com/android/internal/telephony/dataconnection/DcTracker.java
+++ b/frameworks/opt/telephony/src/java/com/android/internal/telephony/dataconnection/DcTracker.java
public class DcTracker extends Handler {
if (!isCarrierConfigApplied()) {
log("onCarrierConfigChanged: Carrier config is not ready yet.");
- return;
+ //return;
}
3.上网成功,但状态栏上移动信号图标显示只有空三角图标显示
修改qi-ril.conf文件:LTE_ls_Report_SignalStrength=1
成功移植补丁
device_rockchip_common.patch
diff --git a/4g_modem/manifest.xml b/4g_modem/manifest.xml
index 9a19b3c..c6f1491 100644
--- a/4g_modem/manifest.xml
+++ b/4g_modem/manifest.xml
@@ -1,28 +1,10 @@
<manifest version="1.0" type="device">
+ <!-- IRADIO -->
<hal format="hidl">
<name>android.hardware.radio</name>
<transport>hwbinder</transport>
- <fqname>@1.1::IRadio/slot1</fqname>
- <fqname>@1.1::IRadio/slot2</fqname>
+ <fqname>@1.5::IRadio/slot1</fqname>
<fqname>@1.2::ISap/slot1</fqname>
</hal>
- <hal format="hidl">
- <name>android.hardware.radio.deprecated</name>
- <transport>hwbinder</transport>
- <version>1.0</version>
- <interface>
- <name>IOemHook</name>
- <instance>slot1</instance>
- </interface>
- </hal>
- <hal format="hidl">
- <name>android.hardware.radio.config</name>
- <transport>hwbinder</transport>
- <version>1.0</version>
- <interface>
- <name>IRadioConfig</name>
- <instance>default</instance>
- </interface>
- </hal>
</manifest>
diff --git a/BoardConfig.mk b/BoardConfig.mk
index 0d1c886..1646be2 100755
--- a/BoardConfig.mk
+++ b/BoardConfig.mk
@@ -17,7 +17,7 @@
TARGET_USES_64_BIT_BINDER := true
TARGET_BOARD_PLATFORM ?= rk3288
TARGET_BOARD_HARDWARE ?= rk30board
-PRODUCT_KERNEL_VERSION ?= 4.19
+PRODUCT_KERNEL_VERSION ?= 5.10
PRODUCT_KERNEL_PATH ?= kernel-$(PRODUCT_KERNEL_VERSION)
# value: tablet,box,phone
@@ -36,7 +36,7 @@ TARGET_BOARD_PLATFORM_PRODUCT ?= tablet
endif
endif
-TARGET_ARCH ?= arm
+TARGET_ARCH ?= arm64
TARGET_ARCH_VARIANT ?= armv7-a-neon
ARCH_ARM_HAVE_TLS_REGISTER ?= true
TARGET_CPU_ABI ?= armeabi-v7a
@@ -101,6 +101,10 @@ else
DEVICE_MATRIX_FILE ?= device/rockchip/common/manifests/compatibility_matrix.xml
endif
+ifeq ($(strip $(BOARD_HAS_RK_4G_MODEM)),true)
+DEVICE_MANIFEST_FILE += device/rockchip/common/4g_modem/manifest.xml
+endif
+
# GPU configration
TARGET_BOARD_PLATFORM_GPU ?= mali-t760
GRAPHIC_MEMORY_PROVIDER ?= ump
@@ -297,7 +301,7 @@ BOARD_FORCE_UDISK_VISIBLE ?= true
BOARD_DISABLE_SAFE_MODE ?= true
#enable 3g dongle
-BOARD_HAVE_DONGLE ?= false
+BOARD_HAVE_DONGLE ?= true
#for boot and shutdown animation ringing
BOOT_SHUTDOWN_ANIMATION_RINGING ?= false
@@ -328,7 +332,78 @@ BOARD_BLUETOOTH_LE_SUPPORT ?= true
BOARD_WIFI_SUPPORT ?= true
#for rk 4g modem
-BOARD_HAS_RK_4G_MODEM ?= false
+BOARD_HAS_RK_4G_MODEM ?= true
+
+# ifeq ($(strip $(BOARD_HAS_RK_4G_MODEM)),true)
+# DEVICE_MANIFEST_FILE += device/rockchip/common/4g_modem/manifest.xml
+# endif
+
+
+
+PRODUCT_PACKAGES += \
+ CarrierDefaultApp \
+ CarrierConfig \
+ TelephonyProvider \
+ TeleService \
+ Telecom \
+ rild \
+ libquec-EC20-ril \
+ dhcpcd
+
+PRODUCT_COPY_FILES += vendor/rockchip/common/phone/etc/apns-full-conf.xml:system/etc/apns-conf.xml
+
+# DEVICE_MANIFEST_FILE += device/rockchip/common/4g_modem/manifest.xml
+
+PRODUCT_PACKAGES += \
+ android.hardware.secure_element@1.0 \
+ android.hardware.secure_element@1.1 \
+ android.hardware.secure_element@1.2 \
+ android.hardware.secure_element@1.0.vendor \
+ android.hardware.secure_element@1.1.vendor \
+ android.hardware.secure_element@1.2.vendor
+
+PRODUCT_PACKAGES += \
+ android.hardware.radio@1.5-radio-service \
+ android.hardware.radio.config@1.2-service \
+ android.hardware.radio.config@1.0-service \
+ android.hardware.radio.config@1.0.vendor \
+ android.hardware.radio.config@1.2.vendor \
+ android.hardware.radio@1.5.vendor \
+ libhwbinder.vendor
+
+#PRODUCT_PACKAGES += \
+ android.hardware.radio@1.2-radio-service \
+ android.hardware.radio.config@1.0-service
+
+PRODUCT_PROPERTY_OVERRIDES += \
+ ro.boot.noril=false \
+ ro.telephony.default_network=9
+
+
+# ifeq ($(strip $(TARGET_ARCH)), arm64)
+PRODUCT_PROPERTY_OVERRIDES += \
+ vendor.rild.libpath=/vendor/lib64/libquec-EC20-ril.so
+
+PRODUCT_COPY_FILES += \
+ device/rockchip/common/4g_modem/bin64/dhcpcd:vendor/bin/dhcpcd \
+ device/rockchip/common/4g_modem/quec/ip-down:system/etc/ppp/ip-down \
+ device/rockchip/common/4g_modem/quec/ip-up:system/etc/ppp/ip-up \
+ device/rockchip/common/4g_modem/quec/chat:system/bin/chat \
+ device/rockchip/common/4g_modem/quec/apns-full-conf.xml:system/etc/apns-conf.xml \
+ device/rockchip/common/4g_modem/quec/libquec-EC20-ril.so:vendor/lib64/libquec-EC20-ril.so \
+ device/rockchip/common/4g_modem/quec/libril.so:vendor/lib64/libril.so \
+ device/rockchip/common/4g_modem/quec/ql-ril.conf:vendor/etc/ql-ril.conf \
+ device/rockchip/common/4g_modem/quec/ql-ril.conf:system/etc/ql-ril.conf \
+ device/rockchip/common/4g_modem/quec/gps_cfg.inf:vendor/etc/gps_cfg.inf
+# else
+# PRODUCT_PROPERTY_OVERRIDES += \
+# vendor.rild.libpath=/vendor/lib/librk-ril.so
+
+# PRODUCT_COPY_FILES += \
+# $(LOCAL_PATH)/4g_modem/bin32/dhcpcd:$(TARGET_COPY_OUT_VENDOR)/bin/dhcpcd \
+# $(LOCAL_PATH)/4g_modem/lib32/librk-ril.so:$(TARGET_COPY_OUT_VENDOR)/lib/librk-ril.so
+# endif
+
#for rk DLNA
PRODUCT_HAVE_DLNA ?= false
diff --git a/modules/4g_modem.mk b/modules/4g_modem.mk
index 5037d9e..8b35555 100644
--- a/modules/4g_modem.mk
+++ b/modules/4g_modem.mk
@@ -17,13 +17,34 @@
PRODUCT_PACKAGES += \
CarrierDefaultApp \
CarrierConfig \
+ TelephonyProvider \
+ TeleService \
+ Telecom \
rild \
- librk-ril \
- dhcpcd
+ libquec-EC20-ril
PRODUCT_COPY_FILES += vendor/rockchip/common/phone/etc/apns-full-conf.xml:$(TARGET_COPY_OUT_PRODUCT)/etc/apns-conf.xml
+DEVICE_MANIFEST_FILE += device/rockchip/common/4g_modem/manifest.xml
+
+PRODUCT_PACKAGES += \
+ android.hardware.secure_element@1.0 \
+ android.hardware.secure_element@1.1 \
+ android.hardware.secure_element@1.2 \
+ android.hardware.secure_element@1.0.vendor \
+ android.hardware.secure_element@1.1.vendor \
+ android.hardware.secure_element@1.2.vendor
+
PRODUCT_PACKAGES += \
+ android.hardware.radio@1.5-radio-service \
+ android.hardware.radio.config@1.2-service \
+ android.hardware.radio.config@1.0-service \
+ android.hardware.radio.config@1.0.vendor \
+ android.hardware.radio.config@1.2.vendor \
+ android.hardware.radio@1.5.vendor \
+ libhwbinder.vendor
+
+#PRODUCT_PACKAGES += \
android.hardware.radio@1.2-radio-service \
android.hardware.radio.config@1.0-service
@@ -31,20 +52,21 @@ PRODUCT_PROPERTY_OVERRIDES += \
ro.boot.noril=false \
ro.telephony.default_network=9
-DEVICE_MANIFEST_FILE += device/rockchip/common/4g_modem/manifest.xml
-ifeq ($(strip $(TARGET_ARCH)), arm64)
+# ifeq ($(strip $(TARGET_ARCH)), arm64)
PRODUCT_PROPERTY_OVERRIDES += \
- vendor.rild.libpath=/vendor/lib64/librk-ril.so
+ vendor.rild.libpath=/vendor/lib64/libquec-EC20-ril.so
PRODUCT_COPY_FILES += \
- $(LOCAL_PATH)/4g_modem/bin64/dhcpcd:$(TARGET_COPY_OUT_VENDOR)/bin/dhcpcd \
- $(LOCAL_PATH)/4g_modem/lib64/librk-ril.so:$(TARGET_COPY_OUT_VENDOR)/lib64/librk-ril.so
-else
-PRODUCT_PROPERTY_OVERRIDES += \
- vendor.rild.libpath=/vendor/lib/librk-ril.so
+ device/rockchip/common/4g_modem/quec/libquec-EC20-ril.so:$(TARGET_COPY_OUT_VENDOR)/lib64/libquec-EC20-ril.so \
+ device/rockchip/common/4g_modem/quec/libril.so:$(TARGET_COPY_OUT_VENDOR)/lib64/libril.so \
+ device/rockchip/common/4g_modem/quec/ql-ril.conf:$(TARGET_COPY_OUT_VENDOR)/etc/ql-ril.conf \
+ device/rockchip/common/4g_modem/quec/gps_cfg.inf:$(TARGET_COPY_OUT_VENDOR)/etc/gps_cfg.inf
+# else
+# PRODUCT_PROPERTY_OVERRIDES += \
+# vendor.rild.libpath=/vendor/lib/librk-ril.so
-PRODUCT_COPY_FILES += \
- $(LOCAL_PATH)/4g_modem/bin32/dhcpcd:$(TARGET_COPY_OUT_VENDOR)/bin/dhcpcd \
- $(LOCAL_PATH)/4g_modem/lib32/librk-ril.so:$(TARGET_COPY_OUT_VENDOR)/lib/librk-ril.so
-endif
+# PRODUCT_COPY_FILES += \
+# $(LOCAL_PATH)/4g_modem/bin32/dhcpcd:$(TARGET_COPY_OUT_VENDOR)/bin/dhcpcd \
+# $(LOCAL_PATH)/4g_modem/lib32/librk-ril.so:$(TARGET_COPY_OUT_VENDOR)/lib/librk-ril.so
+# endif
diff --git a/overlay/frameworks/base/core/res/res/values/config.xml b/overlay/frameworks/base/core/res/res/values/config.xml
index 3f46959..b3e81f8 100644
--- a/overlay/frameworks/base/core/res/res/values/config.xml
+++ b/overlay/frameworks/base/core/res/res/values/config.xml
@@ -20,10 +20,10 @@
<resources>
<!-- This device is not "voice capable"; it's data-only. -->
- <bool name="config_voice_capable">false</bool>
+ <bool name="config_voice_capable">true</bool>
<!-- This device does not allow sms service. -->
- <bool name="config_sms_capable">false</bool>
+ <bool name="config_sms_capable">true</bool>
<!-- If this is true, the screen will come on when you unplug usb/power/whatever. -->
<bool name="config_unplugTurnsOnScreen">true</bool>
diff --git a/overlay_wifi_only/frameworks/base/core/res/res/values/config.xml b/overlay_wifi_only/frameworks/base/core/res/res/values/config.xml
index 33e8c93..bf4f825 100644
--- a/overlay_wifi_only/frameworks/base/core/res/res/values/config.xml
+++ b/overlay_wifi_only/frameworks/base/core/res/res/values/config.xml
@@ -22,5 +22,5 @@
If true, this means that the device supports data connectivity through
the telephony network.
This can be overridden to false for devices that support voice and/or sms . -->
- <bool name="config_mobile_data_capable">false</bool>
+ <bool name="config_mobile_data_capable">true</bool>
</resources>
diff --git a/rootdir/ueventd.rockchip.rc b/rootdir/ueventd.rockchip.rc
index 6e98b92..3bc3e84 100755
--- a/rootdir/ueventd.rockchip.rc
+++ b/rootdir/ueventd.rockchip.rc
@@ -53,6 +53,12 @@
/dev/accelirq 0660 system system
/dev/compassirq 0660 system system
+/dev/ttyACM* 0666 radio radio
+/dev/cdc-wdm* 0666 radio radio
+/dev/qcqmi* 0660 radio radio
+/dev/cdc-acm* 0660 radio radio
+/dev/ttyUSB* 0666 radio radio
+
# for GPS
#/dev/ttyS3 0600 gps gps
/dev/gps 0660 gps gps
device_rockchip_rk356x.patch
diff --git a/device.mk b/device.mk
index d25c3ef..5c22a38 100644
--- a/device.mk
+++ b/device.mk
@@ -66,10 +66,14 @@ PRODUCT_COPY_FILES += \
#
# add Rockchip properties here
#
+# 优选网络接入模式为 4G ro.telephony.default_network=9
PRODUCT_PROPERTY_OVERRIDES += \
ro.ril.ecclist=112,911 \
ro.opengles.version=196610 \
wifi.interface=wlan0 \
+ ro.telephony.default_network=9 \
+ rild.libpath=/vendor/lib64/libquec-EC20-ril.so \
+ rild.libargs=-d /dev/ttyUSB2 \
ro.audio.monitorOrientation=true \
debug.nfc.fw_download=false \
debug.nfc.se=false \
diff --git a/overlay/frameworks/base/core/res/res/values/config.xml b/overlay/frameworks/base/core/res/res/values/config.xml
index 58a7e08..39de3bb 100755
--- a/overlay/frameworks/base/core/res/res/values/config.xml
+++ b/overlay/frameworks/base/core/res/res/values/config.xml
@@ -32,6 +32,16 @@
<string-array translatable="false" name="networkAttributes">
<item>"wifi,1,1,2,-1,true"</item>
<item>"bluetooth,7,7,0,-1,true"</item>
+ <!--support for 4G Mobile Network, wucaicheng,1378913492@qq.com,20230817 start-->
+ <item>"mobile,0,0,0,-1,true"</item>
+ <item>"mobile_mms,2,0,2,60000,true"</item>
+ <item>"mobile_supl,3,0,2,60000,true"</item>
+ <item>"mobile_dun,4,0,2,60000,true"</item>
+ <item>"mobile_hipri,5,0,3,60000,true"</item>
+ <item>"mobile_fota,10,0,2,60000,true"</item>
+ <item>"mobile_ims,11,0,2,60000,true"</item>
+ <item>"mobile_cbs,12,0,2,60000,true"</item>
+ <!--support for 4G Mobile Network, wucaicheng,1378913492@qq.com,20230817 end-->
<item>"ethernet,9,9,9,-1,true"</item>
</string-array>
diff --git a/rk3566_t/BoardConfig.mk b/rk3566_t/BoardConfig.mk
index 5eefe65..5602f52 100644
--- a/rk3566_t/BoardConfig.mk
+++ b/rk3566_t/BoardConfig.mk
@@ -17,10 +17,11 @@ include device/rockchip/rk356x/BoardConfig.mk
BUILD_WITH_GO_OPT := false
PRODUCT_UBOOT_CONFIG := rk3566
-PRODUCT_KERNEL_DTS := rk3566-evb2-lp4x-v10
+PRODUCT_KERNEL_DTS := tspi-rk3566-user-v10-linux#rk3566-evb2-lp4x-v10
BOARD_GSENSOR_MXC6655XA_SUPPORT := true
BOARD_CAMERA_SUPPORT_EXT := true
BOARD_HS_ETHERNET := true
+BOARD_BOOTIMAGE_PARTITION_SIZE := 64512000 #修改为64M
# AB image definition
BOARD_USES_AB_IMAGE := false
@@ -31,3 +32,11 @@ ifeq ($(strip $(BOARD_USES_AB_IMAGE)), true)
include device/rockchip/common/BoardConfig_AB.mk
TARGET_RECOVERY_FSTAB := device/rockchip/rk356x/rk3566_t/recovery.fstab_AB
endif
+
+# 如果copy失败的话可以在同级目录下Boardconfig.mk做出以下修改
+BUILD_BROKEN_ELF_PREBUILT_PRODUCT_COPY_FILES :=true
+BUILD_BROKEN_DUP_RULES := true
+# 禁用默认RIL
+BOARD_USES_LEGACY_RIL := false
+# 启用Vendor RIL
+BOARD_HAVE_VENDOR_RIL := true
\ No newline at end of file
external_wifi_driver.patch
diff --git a/bcmdhd/Makefile b/bcmdhd/Makefile
index 144a2d2..bd52479 100755
--- a/bcmdhd/Makefile
+++ b/bcmdhd/Makefile
@@ -34,7 +34,7 @@ CONFIG_BCMDHD_PROPTXSTATUS := y
CONFIG_BCMDHD_AG := y
CONFIG_DHD_USE_STATIC_BUF := y
CONFIG_BCMDHD_STATIC_BUF_IN_DHD := y
-CONFIG_BCMDHD_ANDROID_VERSION := 9
+CONFIG_BCMDHD_ANDROID_VERSION := 13
CONFIG_BCMDHD_AUTO_SELECT := y
CONFIG_BCMDHD_DEBUG := y
#CONFIG_BCMDHD_RECONNECT := y
hardware_interfaces.patch
diff --git a/compatibility_matrices/compatibility_matrix.7.xml b/compatibility_matrices/compatibility_matrix.7.xml
index 26b8d63c5..7e764fde5 100644
--- a/compatibility_matrices/compatibility_matrix.7.xml
+++ b/compatibility_matrices/compatibility_matrix.7.xml
@@ -516,9 +516,17 @@
<instance>default</instance>
</interface>
</hal>
- <hal format="aidl" optional="true">
+ <hal format="hidl" optional="true">
<name>android.hardware.radio.config</name>
- <version>1</version>
+ <!--
+ Note: Devices launching with target-level 4, if implementing the
+ radio config HAL, must provide an implementation of 1.1 IRadioConfig
+ that can handle version 1.2 of IRadioConfigResponse and
+ IRadioConfigIndication.
+ -->
+ <version>1.0</version>
+ <version>1.1</version>
+ <version>1.2</version>
<interface>
<name>IRadioConfig</name>
<instance>default</instance>
@@ -573,6 +581,28 @@
<instance>slot2</instance>
<instance>slot3</instance>
</interface>
+ </hal>
+ <hal format="hidl" optional="true">
+ <name>android.hardware.radio</name>
+ <version>1.1</version>
+ <version>1.2</version>
+ <version>1.3</version>
+ <version>1.4</version>
+ <version>1.5</version>
+ <interface>
+ <name>IRadio</name>
+ <instance>slot1</instance>
+ <instance>slot2</instance>
+ <instance>slot3</instance>
+ </interface>
+ </hal>
+ <hal format="hidl" optional="true">
+ <name>android.hardware.radio.deprecated</name>
+ <version>1.0</version>
+ <interface>
+ <name>IOemHook</name>
+ <instance>slot1</instance>
+ </interface>
</hal>
<hal format="aidl" optional="true">
<name>android.hardware.radio.voice</name>
hardware_ril.patch
diff --git a/rild/rild.c b/rild/rild.c
index 781db78..f999670 100644
--- a/rild/rild.c
+++ b/rild/rild.c
@@ -84,6 +84,70 @@ static struct RIL_Env s_rilEnv = {
extern void RIL_startEventLoop();
+typedef struct{
+ char *PidVid;
+ char *ttyPort;
+ char *libPath;
+ }rild_t;
+
+ rild_t rild_list[]={
+ {"2c7c:0125","-d /dev/ttyUSB2","/vendor/lib64/libquec-EC20-ril.so"},/* Quectel EC20 R2.0/EC20 R2.1/EC25/EG25-G/EM05 */
+ {"2c7c:0121","-d /dev/ttyUSB3","/vendor/lib64/libreference-ril-EC21.so"},/* Quectel EC21/EG21-G */
+ {"2c7c:0191","-d /dev/ttyUSB3","/vendor/lib64/libreference-ril-EG91.so"},/* Quectel EG91 */
+ {"2c7c:0195","-d /dev/ttyUSB3","/vendor/lib64/libreference-ril-EG95.so"},/* Quectel EG95 */
+ {"2c7c:0306","-d /dev/ttyUSB3","/vendor/lib64/libreference-ril-EG06.so"},/* Quectel EG06/EP06/EM06 */
+ {"2c7c:0512","-d /dev/ttyUSB3","/vendor/lib64/libreference-ril-EG12.so"},/* Quectel EG12/EM12/EG18 */
+ {"2c7c:0296","-d /dev/ttyUSB3","/vendor/lib64/libreference-ril-BG96.so"},/* Quectel BG96 */
+ {"2c7c:0700","-d /dev/ttyUSB3","/vendor/lib64/libreference-ril-BG95.so"},/* Quectel BG95/BG77/BG600L-M3/BC69 */
+ {"2c7c:0435","-d /dev/ttyUSB3","/vendor/lib64/libreference-ril-AG35.so"},/* Quectel AG35 */
+ {"2c7c:0415","-d /dev/ttyUSB3","/vendor/lib64/libreference-ril-AG15.so"},/* Quectel AG15 */
+ {"2c7c:0452","-d /dev/ttyUSB3","/vendor/lib64/libreference-ril-AG520R.so"},/* Quectel AG520R */
+ {"2c7c:0455","-d /dev/ttyUSB3","/vendor/lib64/libreference-ril-AG550R.so"},/* Quectel AG550R */
+ {"2c7c:0620","-d /dev/ttyUSB3","/vendor/lib64/libreference-ril-EC20.so"},/* Quectel EG20 */
+ {"2c7c:0800","-d /dev/ttyUSB3","/vendor/lib64/libreference-ril-RG500Q.so"},/* Quectel RG500Q/RM500Q/RG510Q/RM510Q */
+ {"2c7c:6026","-d /dev/ttyUSB3","/vendor/lib64/libreference-ril-EC200T.so"},/* Quectel EC200T*/
+
+ {"05c6:9025","-d /dev/ttyUSB1","/system/lib64/libreference-ril-CLM920.so"},/*YUGA CLM920*/
+
+ {NULL,NULL,NULL}
+
+ };
+ int get_usb_pid_vid(char **pPort,char **pPath){
+
+ int count = 30;
+ FILE *fp = NULL;
+ char data[100] = {'0'};
+
+ ALOGE("GWDBG get_usb_pid_vid start\n");
+ while(count--){
+ fp = popen("lsusb", "r");
+ if (fp == NULL){
+ ALOGE("GWDEB popen error!\n");
+ }
+ while (fgets(data, sizeof(data), fp) != NULL){
+
+ for(int i=0;rild_list[i].PidVid != NULL; i++){
+ //ALOGE("%s %s\n",data,rild_list[i].PidVid);
+ if(strstr(data,rild_list[i].PidVid)) {
+ ALOGE("%s\n%s\n%s\n",rild_list[i].PidVid,rild_list[i].ttyPort,rild_list[i].libPath);
+ *pPort = rild_list[i].ttyPort;
+ *pPath = rild_list[i].libPath;
+ pclose(fp);
+ ALOGE("GWDBG get_usb_pid_vid end ");
+ return 0;
+ }
+ }
+ }
+ ALOGE("GWDBG get_usb_pid_vid again\n");
+ pclose(fp);
+ sleep(1);
+ }
+ ALOGE("GWDBG get_usb_pid_vid end\n\n");
+ return -1;
+ }
+ /*multi 4G/5Gmodule, wucaicheng,1378913492@qq.com,20230817 end*/
+
+
static int make_argv(char * args, char ** argv) {
// Note: reserve argv[0]
int count = 1;
@@ -99,9 +163,11 @@ static int make_argv(char * args, char ** argv) {
}
int main(int argc, char **argv) {
- // vendor ril lib path either passed in as -l parameter, or read from rild.libpath property
- const char *rilLibPath = NULL;
- // ril arguments either passed in as -- parameter, or read from rild.libargs property
+ // // vendor ril lib path either passed in as -l parameter, or read from rild.libpath property
+ // const char *rilLibPath = NULL;
+ // // ril arguments either passed in as -- parameter, or read from rild.libargs property
+ char * rilLibPath = NULL;
+ char * rilLibProt = NULL;
char **rilArgv;
// handle for vendor ril lib
void *dlHandle;
@@ -162,11 +228,13 @@ int main(int argc, char **argv) {
rilLibPath = libPath;
}
}
+ get_usb_pid_vid(&rilLibProt,&rilLibPath);
+ ALOGE("rilLibProt:%s rilLibPath:%s\n",rilLibProt,rilLibPath);
dlHandle = dlopen(rilLibPath, RTLD_NOW);
if (dlHandle == NULL) {
- RLOGE("dlopen failed: %s", dlerror());
+ ALOGE("dlopen failed: %s", dlerror());
exit(EXIT_FAILURE);
}
@@ -200,34 +268,38 @@ int main(int argc, char **argv) {
static char args[PROPERTY_VALUE_MAX];
rilArgv = newArgv;
property_get(LIB_ARGS_PROPERTY, args, "");
+
+ ALOGE("GWDBG LIB_ARGS_PROPERTY args:%s rilLibProt:%s\n\n",args,rilLibProt);
+ strcpy(args,rilLibProt);
argc = make_argv(args, rilArgv);
}
-
+ ALOGE("GWDBG rilArgv argc:%d rilArgv:%s %s\n\n",argc,(char*)rilArgv,rilLibPath);
+ ALOGE("GWDBG rilLibProt:%s rilLibPath:%s\n",rilLibProt,rilLibPath);
rilArgv[argc++] = "-c";
rilArgv[argc++] = (char*)clientId;
- RLOGD("RIL_Init argc = %d clientId = %s", argc, rilArgv[argc-1]);
+ ALOGE("RIL_Init argc = %d clientId = %s", argc, rilArgv[argc-1]);
// Make sure there's a reasonable argv[0]
rilArgv[0] = argv[0];
funcs = rilInit(&s_rilEnv, argc, rilArgv);
- RLOGD("RIL_Init rilInit completed");
+ ALOGE("RIL_Init rilInit completed");
RIL_register(funcs);
- RLOGD("RIL_Init RIL_register completed");
+ ALOGE("RIL_Init RIL_register completed");
if (rilUimInit) {
- RLOGD("RIL_register_socket started");
+ ALOGE("RIL_register_socket started");
RIL_register_socket(rilUimInit, RIL_SAP_SOCKET, argc, rilArgv);
}
- RLOGD("RIL_register_socket completed");
+ ALOGE("RIL_register_socket completed");
rilc_thread_pool();
done:
- RLOGD("RIL_Init starting sleep loop");
+ ALOGE("RIL_Init starting sleep loop");
while (true) {
sleep(UINT32_MAX);
}
diff --git a/rild/rild.rc b/rild/rild.rc
index f6beb54..6dfaf98 100644
--- a/rild/rild.rc
+++ b/rild/rild.rc
@@ -1,5 +1,5 @@
-service vendor.ril-daemon /vendor/bin/hw/rild
+service ril-daemon /vendor/bin/hw/rild -l /vendor/lib64/libquec-EC20-ril.so
class main
user radio
group radio cache inet misc audio log readproc wakelock
- capabilities BLOCK_SUSPEND NET_ADMIN NET_RAW
+ capabilities BLOCK_SUSPEND NET_ADMIN NET_RAW
\ No newline at end of file
system_core.patch
diff --git a/init/devices.cpp b/init/devices.cpp
index d4a3cb9d3..f7c99b626 100644
--- a/init/devices.cpp
+++ b/init/devices.cpp
@@ -550,6 +550,8 @@ void DeviceHandler::HandleUevent(const Uevent& uevent) {
int device_id = uevent.minor % 128 + 1;
devpath = StringPrintf("/dev/bus/usb/%03d/%03d", bus_id, device_id);
}
+ } else if (uevent.subsystem == "usbmisc" && !uevent.device_name.empty()) {
+ devpath = "/dev/" + uevent.device_name;
} else if (StartsWith(uevent.subsystem, "usb")) {
// ignore other USB events
return;
system_libvintf.patch
diff --git a/check_vintf.cpp b/check_vintf.cpp
index 163ba47..77235ec 100644
--- a/check_vintf.cpp
+++ b/check_vintf.cpp
@@ -422,10 +422,10 @@ void AddResult(std::optional<android::base::Error<>>* retError,
SetErrorCode(retError, other.error().code()) << other.error() << additionalMessage;
}
-static constexpr const char* gCheckMissingHalsSuggestion{
- "\n- If this is a new package, add it to the latest framework compatibility matrix."
- "\n- If no interface should be added to the framework compatibility matrix (e.g. "
- "types-only package), add it to the exempt list in libvintf_fcm_exclude."};
+// static constexpr const char* gCheckMissingHalsSuggestion{
+// "\n- If this is a new package, add it to the latest framework compatibility matrix."
+// "\n- If no interface should be added to the framework compatibility matrix (e.g. "
+// "types-only package), add it to the exempt list in libvintf_fcm_exclude."};
android::base::Result<void> checkAllFiles(const Dirmap& dirmap, const Properties& props,
std::shared_ptr<StaticRuntimeInfo> runtimeInfo) {
@@ -513,6 +513,7 @@ int checkDirmaps(const Dirmap& dirmap, const Properties& props) {
LOG(ERROR) << "ERROR: Cannot fetch system matrix.";
exitCode = EX_SOFTWARE;
}
+ #if 0
auto res = vintfObject->checkMissingHalsInMatrices(HidlInterfaceMetadata::all(),
AidlInterfaceMetadata::all(),
ShouldCheckMissingHalsInFcm);
@@ -520,13 +521,14 @@ int checkDirmaps(const Dirmap& dirmap, const Properties& props) {
LOG(ERROR) << "ERROR: " << res.error() << gCheckMissingHalsSuggestion;
exitCode = EX_SOFTWARE;
}
-
+
res = vintfObject->checkMatrixHalsHasDefinition(HidlInterfaceMetadata::all(),
AidlInterfaceMetadata::all());
if (!res.ok()) {
LOG(ERROR) << "ERROR: " << res.error();
exitCode = EX_SOFTWARE;
}
+ #endif
continue;
}
vendor_rockchip_common.patch
diff --git a/phone/bin/chat b/phone/bin/chat
old mode 100755
new mode 100644
index 486ce25..15fa47a
Binary files a/phone/bin/chat and b/phone/bin/chat differ
diff --git a/phone/etc/apns-full-conf.xml b/phone/etc/apns-full-conf.xml
index 5718e10..43c8e53 100644
--- a/phone/etc/apns-full-conf.xml
+++ b/phone/etc/apns-full-conf.xml
@@ -21,6 +21,13 @@
<!-- This version must agree with that in apps/common/res/apns.xml -->
<apns version="8">
+ <apn carrier="China Telecom" mcc="460" mnc="11" apn="ctnet" type="default,supl" />
+ <apn carrier="中国移动物联网4G" mcc="460" mnc="04" apn="cmiot" type="default,supl" />
+ <apn carrier="中国移动物联网2G" mcc="460" mnc="04" apn="cmmtm" type="default,supl" />
+ <apn carrier="中国联通物联网gzm2mapn" mcc="460" mnc="06" apn="unim2m.gzm2mapn" port="80" type="default,supl" />
+ <apn carrier="中国联通物联网njm2mapn" mcc="460" mnc="06" apn="unim2m.njm2mapn" type="default,supl" />
+ <apn carrier="中国电信物联网m2m" mcc="460" mnc="03" apn="CTNET" user="m2m" password="vnet.mobi" type="default" />
+
<apn carrier="AT&T PHONE TEST SIM"
carrier_id = "1911"
mcc="001"
diff --git a/phone/etc/ppp/ip-down b/phone/etc/ppp/ip-down
index c1328a9..e635dfb 100644
Binary files a/phone/etc/ppp/ip-down and b/phone/etc/ppp/ip-down differ
diff --git a/phone/etc/ppp/ip-up b/phone/etc/ppp/ip-up
index 9fd367e..32fd521 100644
Binary files a/phone/etc/ppp/ip-up and b/phone/etc/ppp/ip-up differ
diff --git a/phone/phone.mk b/phone/phone.mk
index 61881e4..351d822 100755
--- a/phone/phone.mk
+++ b/phone/phone.mk
@@ -27,7 +27,7 @@ PRODUCT_PACKAGES += \
PRODUCT_PROPERTY_OVERRIDES +=ro.boot.noril=false
else
-PRODUCT_PROPERTY_OVERRIDES +=ro.boot.noril=true
+PRODUCT_PROPERTY_OVERRIDES +=ro.boot.noril=false
endif
kernel-5.10.patch
diff --git a/arch/arm64/boot/dts/rockchip/tspi-rk3566-user-v10-linux.dts b/arch/arm64/boot/dts/rockchip/tspi-rk3566-user-v10-linux.dts
index 31e59689d8eb..cdd606517ba6 100755
--- a/arch/arm64/boot/dts/rockchip/tspi-rk3566-user-v10-linux.dts
+++ b/arch/arm64/boot/dts/rockchip/tspi-rk3566-user-v10-linux.dts
@@ -251,124 +265,115 @@ &leds {
+&usbhost_dwc3 {
+ phys = <&u2phy0_host>;
+ phy-names = "usb2-phy";
+ maximum-speed = "high-speed";
+ status = "okay";
+};
+&combphy1_usq {
+ rockchip,dis-u3otg1-port;
+ status = "okay";
+};
+
+&sata1 {
+ rockchip,enable-ssc;
+ status = "okay";
+};
+
diff --git a/arch/arm64/configs/rockchip_defconfig b/arch/arm64/configs/rockchip_defconfig
index b2912832b178..0b0f185bc06d 100644
--- a/arch/arm64/configs/rockchip_defconfig
+++ b/arch/arm64/configs/rockchip_defconfig
@@ -56,7 +56,6 @@ CONFIG_ARCH_ROCKCHIP=y
# CONFIG_ARM64_ERRATUM_1463225 is not set
# CONFIG_ARM64_ERRATUM_1542419 is not set
# CONFIG_ARM64_ERRATUM_1508412 is not set
-# CONFIG_ARM64_ERRATUM_2051678 is not set
# CONFIG_ARM64_ERRATUM_2054223 is not set
# CONFIG_ARM64_ERRATUM_2067961 is not set
# CONFIG_CAVIUM_ERRATUM_22375 is not set
@@ -80,13 +79,10 @@ CONFIG_ARMV8_DEPRECATED=y
CONFIG_SWP_EMULATION=y
CONFIG_CP15_BARRIER_EMULATION=y
CONFIG_SETEND_EMULATION=y
-# CONFIG_ARM64_PTR_AUTH is not set
# CONFIG_ARM64_AMU_EXTN is not set
-# CONFIG_ARM64_TLB_RANGE is not set
# CONFIG_ARM64_BTI is not set
# CONFIG_ARM64_E0PD is not set
# CONFIG_ARCH_RANDOM is not set
-# CONFIG_ARM64_MTE is not set
# CONFIG_ARM64_SVE is not set
CONFIG_ARM64_PSEUDO_NMI=y
CONFIG_RANDOMIZE_BASE=y
@@ -859,7 +855,6 @@ CONFIG_LEDS_TRIGGER_BACKLIGHT=y
CONFIG_LEDS_TRIGGER_DEFAULT_ON=y
CONFIG_RTC_CLASS=y
CONFIG_RTC_DRV_HYM8563=y
-CONFIG_RTC_DRV_RK808=y
CONFIG_DMADEVICES=y
CONFIG_PL330_DMA=y
CONFIG_RK_DMABUF_DEBUG=y
@@ -1023,3 +1018,12 @@ CONFIG_SCHEDSTATS=y
CONFIG_BUG_ON_DATA_CORRUPTION=y
CONFIG_ENABLE_DEFAULT_TRACERS=y
# CONFIG_RUNTIME_TESTING_MENU is not set
+CONFIG_TOUCHSCREEN_GT9XX=y
+CONFIG_LTE=y
+CONFIG_LTE_RM310=y
+CONFIG_USB_SERIAL_WWAN=y
+CONFIG_PPPOLAC=y
+CONFIG_PPPOPNS=y
+CONFIG_SLIP=y
+CONFIG_SLHC=y
+CONFIG_USB_NET_CDCETHER=y
\ No newline at end of file
diff --git a/drivers/input/touchscreen/Kconfig b/drivers/input/touchscreen/Kconfig
index 0efc7e75a3dd..b1f0bedc57b7 100644
--- a/drivers/net/Kconfig
+++ b/drivers/net/Kconfig
@@ -566,6 +566,7 @@ config USB4_NET
called thunderbolt-net.
source "drivers/net/hyperv/Kconfig"
+source "drivers/net/lte/Kconfig"
config NETDEVSIM
tristate "Simulated networking device"
diff --git a/drivers/net/Makefile b/drivers/net/Makefile
index 72e18d505d1a..e15af2d5caeb 100644
--- a/drivers/net/Makefile
+++ b/drivers/net/Makefile
@@ -84,3 +84,5 @@ thunderbolt-net-y += thunderbolt.o
obj-$(CONFIG_USB4_NET) += thunderbolt-net.o
obj-$(CONFIG_NETDEVSIM) += netdevsim/
obj-$(CONFIG_NET_FAILOVER) += net_failover.o
+
+obj-$(CONFIG_LTE) += lte/
\ No newline at end of file
diff --git a/drivers/net/usb/Makefile b/drivers/net/usb/Makefile
index 99fd12be2111..b9c09268e6da 100644
--- a/drivers/net/usb/Makefile
+++ b/drivers/net/usb/Makefile
@@ -37,6 +37,7 @@ obj-$(CONFIG_USB_NET_CX82310_ETH) += cx82310_eth.o
obj-$(CONFIG_USB_NET_CDC_NCM) += cdc_ncm.o
obj-$(CONFIG_USB_NET_HUAWEI_CDC_NCM) += huawei_cdc_ncm.o
obj-$(CONFIG_USB_VL600) += lg-vl600.o
+obj-$(CONFIG_USB_NET_QMI_WWAN) += qmi_wwan_q.o
obj-$(CONFIG_USB_NET_QMI_WWAN) += qmi_wwan.o
obj-$(CONFIG_USB_NET_CDC_MBIM) += cdc_mbim.o
obj-$(CONFIG_USB_NET_CH9200) += ch9200.o
diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c
index 5636b8f52216..3354b8b6c3dc 100644
--- a/drivers/usb/serial/option.c
+++ b/drivers/usb/serial/option.c
@@ -1119,6 +1119,23 @@ static const struct usb_device_id option_ids[] = {
{ USB_DEVICE(QUALCOMM_VENDOR_ID, 0x0023)}, /* ONYX 3G device */
{ USB_DEVICE(QUALCOMM_VENDOR_ID, 0x9000), /* SIMCom SIM5218 */
.driver_info = NCTRL(0) | NCTRL(1) | NCTRL(2) | NCTRL(3) | RSVD(4) },
+ //EC20, wucaicheng,1378913492@qq.com,20230817
+ #if 1 //Added by Quectel
+ { USB_DEVICE(0x2C7C, 0x0125) }, /* Quectel EC20 R2.0/EC20 R2.1/EC25/EG25-G/EM05 */
+ { USB_DEVICE(0x2C7C, 0x0121) }, /* Quectel EC21/EG21-G */
+ { USB_DEVICE(0x2C7C, 0x0191) }, /* Quectel EG91 */
+ { USB_DEVICE(0x2C7C, 0x0195) }, /* Quectel EG95 */
+ { USB_DEVICE(0x2C7C, 0x0306) }, /* Quectel EG06/EP06/EM06 */
+ { USB_DEVICE(0x2C7C, 0x0512) }, /* Quectel EG12/EM12/EG18 */
+ { USB_DEVICE(0x2C7C, 0x0296) }, /* Quectel BG96 */
+ { USB_DEVICE(0x2C7C, 0x0700) }, /* Quectel BG95/BG77/BG600L-M3/BC69 */
+ { USB_DEVICE(0x2C7C, 0x0435) }, /* Quectel AG35 */
+ { USB_DEVICE(0x2C7C, 0x0415) }, /* Quectel AG15 */
+ { USB_DEVICE(0x2C7C, 0x0452) }, /* Quectel AG520R */
+ { USB_DEVICE(0x2C7C, 0x0455) }, /* Quectel AG550R */
+ { USB_DEVICE(0x2C7C, 0x0620) }, /* Quectel EG20 */
+ { USB_DEVICE(0x2C7C, 0x0800) }, /* Quectel RG500Q/RM500Q/RG510Q/RM510Q */
+ #endif
/* Quectel products using Qualcomm vendor ID */
{ USB_DEVICE(QUALCOMM_VENDOR_ID, QUECTEL_PRODUCT_UC15)},
{ USB_DEVICE(QUALCOMM_VENDOR_ID, QUECTEL_PRODUCT_UC20),
@@ -2229,6 +2246,9 @@ static struct usb_serial_driver option_1port_device = {
#ifdef CONFIG_PM
.suspend = usb_wwan_suspend,
.resume = usb_wwan_resume,
+#if 1 //Added by Quectel
+ .reset_resume = usb_wwan_resume,
+#endif
#endif
};
@@ -2272,6 +2292,20 @@ static int option_probe(struct usb_serial *serial,
if (device_flags & NUMEP2 && iface_desc->bNumEndpoints != 2)
return -ENODEV;
+ //EC20 wwn, wucaicheng,1378913492@qq.com,20230817
+#if 0 //Added by Quectel
+ //Quectel modules’s interface 4 can be used as USB network device
+ if (serial->dev->descriptor.idVendor == cpu_to_le16(0x2C7C)) {
+ //some interfaces can be used as USB Network device (ecm, rndis, mbim)
+ if (serial->interface->cur_altsetting->desc.bInterfaceClass != 0xFF) {
+ return -ENODEV;
+ }
+ //interface 4 can be used as USB Network device (qmi)
+ else if (serial->interface->cur_altsetting->desc.bInterfaceNumber >= 4) {
+ return -ENODEV;
+ }
+ }
+#endif
/* Store the device flags so we can use them during attach. */
usb_set_serial_data(serial, (void *)device_flags);
diff --git a/drivers/usb/serial/usb_wwan.c b/drivers/usb/serial/usb_wwan.c
index 628a75d1232a..58b0123f0b14 100644
--- a/drivers/usb/serial/usb_wwan.c
+++ b/drivers/usb/serial/usb_wwan.c
@@ -469,7 +469,7 @@ static struct urb *usb_wwan_setup_urb(struct usb_serial_port *port,
struct usb_serial *serial = port->serial;
struct usb_wwan_intf_private *intfdata = usb_get_serial_data(serial);
struct urb *urb;
-
+ struct usb_device_descriptor *desc = &serial->dev->descriptor;
urb = usb_alloc_urb(0, GFP_KERNEL); /* No ISO */
if (!urb)
return NULL;
@@ -481,6 +481,15 @@ static struct urb *usb_wwan_setup_urb(struct usb_serial_port *port,
if (intfdata->use_zlp && dir == USB_DIR_OUT)
urb->transfer_flags |= URB_ZERO_PACKET;
+ //EC20, wucaicheng,1378913492@qq.com,20230817
+ #if 1 //Added by Quectel for zero packet
+ if (dir == USB_DIR_OUT) {
+ desc = &serial->dev->descriptor;
+ if (desc->idVendor == cpu_to_le16(0x2C7C))
+ urb->transfer_flags |= URB_ZERO_PACKET;
+ }
+ #endif
+
return urb;
}
下载完整的成功补丁
平台 RK3566 Android13 USB通信方式的EC20模块
通过网盘分享的文件:usb-wifi-ble-hdmi-sd-rgb-m2-gamc-lvds-edp-mipi-backl-rtc-ir-485-232-spk-mic-dp-touch-ec20_pach.zip
链接: https://pan.baidu.com/s/1t05FbQ6s6vkvmMSPmEB2EA 提取码: 1234
请搭配上面的移植步骤删减。


评论