RK3568-ANDROID11-4G-EC20-系统篇(移远模块)

首先,要先获得技术支持

步骤一,先在USB模块上完成4G

步骤二,移植到PCIE座子上

磨刀不费砍材功,请先拿到技术文档支持,我的参考是:Quectel_Android_RIL_Driver_V3.3.62_master_beta(支持EC200A).tgz

主要文件:Quectel_Android_RIL_Driver_V3.3.62_master_beta(支持EC200A)\libquectel-ril\arm64-v8a\libreference-ril.so

主要文档:Quectel_Android_RIL_Driver_User_Guide_V2.0.pdf

//##//##//##//##//##//##//##//##//##//##//##//##//##//##//##//##//##//##//##//##//##

系统部分:
1.添加rild库(\libquectel-ril\arm64-v8a\libreference-ril.so)

改名成:librk-ril.so

预制到:\device\rockchip\common\4g_modem\lib64\librk-ril.so

代码要清理重新编译,有遇到没有更新库的情况,更新后大编才可以

2.更新已下文件

\vendor\rockchip\common\phone\bin\chat  
\vendor\rockchip\common\phone\etc\ppp\ip-down 
\vendor\rockchip\common\phone\etc\ppp\ip-up  
\vendor\rockchip\common\phone\etc\ql-ril.conf
\vendor\rockchip\common\phone\lib\libreference-ril-ec20.so 

 3.关闭SELINUX

\device\rockchip\common\BoardConfig.mk
-BOARD_SELINUX_ENFORCING ?= true
+BOARD_SELINUX_ENFORCING ?= false

如果卡在android动画,建议看一下降频篇

4.打开BOARD_HAS_RK_4G_MODEM

#enable 3g dongle
BOARD_HAVE_DONGLE ?= false
ifeq ($(BOARD_HAVE_DONGLE),true)
PRODUCT_PACKAGES += \
    android.hardware.radio@1.2-radio-service \
    android.hardware.radio.config@1.0-service 
PRODUCT_PACKAGES += \
                  rild \
				  com.android.phone.common               
endif


#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

5.去掉property:ro.boot.noril

如果存在电话这一项,就执行下面的内容

设置setprop ro.radio.noril 为true

暂停ril-daemon服务

- a/device/rockchip/common/init.rk30board.rc
+ b/device/rockchip/common/init.rk30board.rc
@@ -238,7 +238,7 @@ on property:sys.boot_completed=1
 
 # for telephony function
-on property:ro.boot.noril=true
-    setprop ro.radio.noril true
-    stop ril-daemon
+#on property:ro.boot.noril=true
+#    setprop ro.radio.noril true
+#    stop ril-daemon

6.修改\manifest.xml

\device\rockchip\common\4g_modem\manifest.xml
<manifest version="1.0" type="device">
    <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.2::ISap/slot1</fqname>
	<fqname>@1.4::IRadio/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</name>
        <transport>hwbinder</transport>
        <version>1.0</version>
        <interface>
           <name>IRadio</name>
           <instance>slot1</instance>
        </interface>
    </hal>   


</manifest>

\device\rockchip\common\manifest.xml

 +    <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.2::ISap/slot1</fqname>
 +    </hal>

7.添加APN

\vendor\rockchip\common\phone\etc\apns-full-conf.xml

  <apn carrier="IENTC"
      carrier_id = "2470"
      mcc="334"
      mnc="140"
      apn="ims"
      type="ims"
      user=""
      password=""
      mvno_type="spn"
      mvno_match_data="IENTC"
  />
+  <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" />
</apns>

8.4G上网正常,但状态栏中没有4G图标(完全没有图标)

device\rockchip\rk356x\overlay\frameworks\base\core\res\res\value\config.xml
    <!-- This string array should be overridden by the device to present a list of network
         attributes.  This is used by the connectivity manager to decide which networks can coexist
         based on the hardware -->
    <!-- An Array of "[Connection name],[ConnectivityManager connection type],
         [associated radio-type],[priority],[restoral-timer(ms)],[dependencyMet]  -->
    <!-- the 5th element "resore-time" indicates the number of milliseconds to delay
         before automatically restore the default connection.  Set -1 if the connection
         does not require auto-restore. -->
    <!-- the 6th element indicates boot-time dependency-met value. -->
<string-array translatable="false" name="networkAttributes">
<item>"wifi,1,1,2,-1,true"</item>
+ <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>
<item>"bluetooth,7,7,0,-1,true"</item>
<item>"ethernet,9,9,9,-1,true"</item>
  </string-array>

9.打开权限在device\rockchip\common\ueventd.rockchip.rc中增加    

\device\rockchip\common\ueventd.rockchip.rc
# for radio
/dev/ttyUSB*              0666   radio		radio

#for uart 
/dev/ttyS3           0777   root      system
/dev/ttyS4           0777   root      system
/dev/ttyS5           0777   root      system
/dev/ttyS6           0777   root      system
/dev/ttyS9           0777   root      system
/dev/ttyS8           0777   root      system
/dev/ttyS9           0777   root      system
#for cdc-wdm0
/dev/cdc-wdm*        0660   radio      radio 
#for qcqmi0
/dev/qcqmi*          0660   radio      radio
/dev/cdc-acm*        0660   radio      radio
/dev/ttyACM*         0660   radio      radio

#PCIe
/dev/mhi_DUN         0660   radio      radio
/dev/mhi_DIAG        0660   radio      radio
/dev/mhi_BHI         0660   radio      radio
/dev/mhi_LOOPBACK    0660   radio      radio
/dev/mhi_QMI0        0660   radio      radio

10.添加cdc-wdm0节点

system\core\init\devices.cpp
            // Minors are broken up into groups of 128, starting at "001"
            int bus_id = uevent.minor / 128 + 1;
            int device_id = uevent.minor % 128 + 1;
            devpath = StringPrintf("/dev/bus/usb/%03d/%03d", bus_id, device_id);
        }
+#if 1 //add by quectel for mknod /dev/cdc-wdmo
+    } else if (uevent.subsystem == "usbmisc" && !uevent.device_name.empty()) {
+		       devpath = "/dev/" + uevent.device_name;
+#endif
    } else if (StartsWith(uevent.subsystem, "usb")) {
        // ignore other USB events

11.应该实际上是使用的下面这个:   //这个本来就有的

device\rockchip\common\device.mk
ifeq ($(strip $(TARGET_ARCH)), arm64)
PRODUCT_PROPERTY_OVERRIDES += \
		vendor.rild.libpath=/vendor/lib64/librk-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

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  

12更新加载文件点

\vendor\rockchip\common\phone\phone.mk
CUR_PATH := vendor/rockchip/common

#########################################################
#   3G Dongle SUPPORT
#########################################################
#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

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/bin/chat:system/bin/chat \
+    $(CUR_PATH)/phone/lib/libreference-ril-ec20.so:vendor/lib64/libreference-ril-ec20.so \
+    $(CUR_PATH)/phone/etc/ppp/ql-ril.conf:system/etc/ql-ril.conf \
+	$(CUR_PATH)/etc/spn-conf.xml:system/etc/spn-conf.xml 

ifeq ($(strip $(BOARD_HAVE_DONGLE)),true)
PRODUCT_PACKAGES += \
    rild \
    libril-rk29-dataonly \
    usb_dongle \
    usb_modeswitch \
    chat

PRODUCT_PROPERTY_OVERRIDES +=ro.boot.noril=false
else
PRODUCT_PROPERTY_OVERRIDES +=ro.boot.noril=true
endif


PRODUCT_PROPERTY_OVERRIDES += \
    keyguard.no_require_sim=true \
    ro.com.android.dataroaming=true \
	ril.function.dataonly=1

.13.修改ril-daemon 

- /hardware/ril/rild/rild.rc
+ /hardware/ril/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/libreference-ril-ec20.so
     class main
-    user radio
-    group radio cache inet misc audio log readproc wakelock
-    capabilities BLOCK_SUSPEND NET_ADMIN NET_RAW
+    user root
+    group radio cache inet misc audio sdcard_rw log
+    capabilities BLOCK_SUSPEND NET_ADMIN NET_RAW

14.指定使用的库,这里没有配,因为前面device.mk已经指定

- a/device/rockchip/rk356x/device.mk
+ b/device/rockchip/rk356x/device.mk
@@ -77,6 +77,9 @@ PRODUCT_PROPERTY_OVERRIDES += \
                 ro.ril.ecclist=112,911 \
                 ro.opengles.version=196610 \
                 wifi.interface=wlan0 \
                 ro.audio.monitorOrientation=true \
                 debug.nfc.fw_download=false \
                 debug.nfc.se=false \
+#               ro.telephony.default_network=9 \
+#               rild.libpath=/vendor/lib64/libquectel-ril-ec200t.so \
+#               rild.libargs=-d /dev/ttyUSB2 \

<think>好的,我现在需要帮助用户查找关于RK3566芯片在Android 11系统下支持4G网络的配置方法和相关资料。首先,用户提供的引用内容主要是关于RK3568的,但用户问的是RK3566。虽然两者都是RK356X系列,可能存在差异,但大部分配置可能类似。我需要先确认这些引用中的信息是否适用于RK3566。 首先,引用[2]提到RK356X Android 11支持EC20 Modem,并提供了一个补丁文件的下载地址。由于RK3566属于同系列,可能可以参考这个补丁。不过需要用户确认硬件兼容性,特别是EC20模块是否适用于RK3566。 引用[3]是关于RK3568的配置,其中涉及修改BoardConfig.mk文件,启用4G Modem支持,添加相关服务如rild和配置manifest.xml。RK3566可能需要类似的配置步骤,但需要检查具体的硬件抽象层(HAL)和内核配置是否存在差异。 引用[4]提到驱动文件位于kernel/drivers/net/lte/lte_rm310.c,以及内核配置需要设置CONFIG_LTE和CONFIG_LTE_RM310。这里可能需要确认RK3566的内核是否包含相同驱动,或者是否需要移植。 接下来,我需要整理步骤,包括硬件准备、系统配置、驱动移植、拨号服务配置和测试验证。同时需要考虑用户可能遇到的问题,比如硬件兼容性、内核配置错误、依赖服务未启动等。 然后,用户可能需要相关的问题,比如如何验证4G模块识别、调试工具使用、切换不同模块等。这些问题需要基于现有的引用内容,并结合常见问题进行生成。 需要确保回答中所有数学公式和代码块符合格式要求,使用正确的中文表达,并自然地添加引用标识。同时,要明确说明RK3568的资料可能适用于RK3566,但需要验证,避免误导用户。 最后,检查所有引用是否正确对应,步骤是否清晰,是否有遗漏的关键点,比如编译和烧写步骤,日志查看方法等。</think>根据参考资料,RK3566与RK3568同属Rockchip RK356X系列平台,在Android 11系统下配置4G网络的实现方法基本相通。以下是关键配置步骤及说明: ### 一、硬件准备与驱动移植 1. **硬件兼容性验证** 确认使用EC20等已适配的4G模块(需支持PPP拨号协议),建议优先参考官方认证清单[^2] 2. **内核驱动配置** 需在内核配置文件中启用LTE驱动: ```bash # kernel/arch/arm64/configs/rockchip_defconfig CONFIG_LTE=y CONFIG_LTE_RM310=y # 对应模块专用驱动[^4] ``` 3. **设备树配置** 在设备树中定义USB接口与模块的对应关系: ```dts &usb_host0_ehci { status = "okay"; #address-cells = <1>; #size-cells = <0>; quectel_ec20: quectel@1 { compatible = "usb-serial,quectel"; reg = <1>; }; }; ``` ### 二、系统服务配置 1. **BoardConfig配置** 修改`BoardConfig.mk`启用4G支持: ```makefile BOARD_HAS_RK_4G_MODEM ?= true # 强制开启4G调制解调器支持[^3] PRODUCT_PACKAGES += \ rild \ libreference-ril.so \ chat \ pppd ``` 2. **RIL服务配置** 需在`manifest.xml`中添加硬件抽象层声明: ```xml <hal format="hidl"> <name>android.hardware.radio</name> <version>1.2</version> <interface> <name>IRadio</name> <instance>default</instance> </interface> </hal> ``` ### 三、拨号脚本配置 1. **PPP拨号参数** 创建`/etc/ppp/peers/quectel-ppp`配置文件: ``` /dev/ttyUSB0 115200 connect 'chat -v "" AT+CGDCONT=1,"IP","<APN>" OK' defaultroute persist usepeerdns ``` 2. **自动拨号服务** 编写systemd服务单元文件实现开机自动拨号: ```ini [Unit] Description=EC20 4G Connection After=network.target [Service] ExecStart=/usr/sbin/pppd call quectel-ppp [Install] WantedBy=multi-user.target ``` ### 四、验证与调试 1. **模块识别验证** ```bash adb shell ls /dev/ttyUSB* # 应看到USB串口设备[^4] dmesg | grep LTE # 查看驱动加载日志 ``` 2. **网络状态检测** ```bash adb shell logcat -b radio # 查看RIL层通信日志 adb shell ifconfig ppp0 # 确认PPP接口IP分配 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

旋风旋风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值